lisongqing
作者lisongqing联盟成员·2020-06-14 16:57
软件架构设计师·IPS

NXGZIP硬件压缩加速技术应用

字数 2512阅读 4528评论 0赞 1

IT 运维中大家经常会面临这样的问题,很多数据或文件很重要,需要备份但嫌它太占空间,想进行压缩但又担心压缩过程较长且消耗较多系统 CPU 、 IO 资源,进而影响到整个系统对外服务的响应速度。好不容易定个备份策略,比如每周 / 每月定期全量备份,中间再再来几次增量备份。可一旦天灾人祸的故障来临时,发现可用备份离故障时间点都比较远,需要较长时间才能恢复,有时还会悲催的发现没有可用备份。

或许 POWER9 独有的 NXGZIP 硬件压缩加速技术能帮助解决这部分烦恼。这里以金融等领域用的较多的 DB2 数据库为例,看一个在高端服务器上 DB2 数据库备份的例子:

从上表可以看出,数据库自身压缩功能备份耗时太长,先备份再用普通 CPU gzip 压缩耗时也较长,而且很耗 CPU (高达 18% ),不压缩的备份空间消耗又大好几倍。采用 NXGZIP 硬件压缩加速技术即得到了同样不错的压缩比( 6.1 倍 ),而且仅消耗很少 CPU 资源,速度比不压缩时还快,耗时仅分别是普通 gzip 压缩和数据库自身压缩的 (90/294=30% ) 和 (90/1509=6% )

NXGZIP 压缩备份同时做到了省空间省时间,为备份工作释放了更多 CPU 和 IO 资源,或许不用像以前做备份时战战兢兢,能更从容的优化备份策略了。

NXGZIP 硬件压缩加速效果这么好,它是如何做到的?还能用于什么场景?

l 它集成在 CPU 片内,零成本,低功耗

l 是目前业界带宽最高的片上压缩(达 7GB+/s ) / 解压缩( 8GB+/s )引擎

l 可以 Bypass kernel ,用户态可直接访问,支持多用户和多线程

l 与 zlib 兼容, 方便应用集成

l 可用于:各类文件、数据库、大数据和分布式存储等多类应用

环境要求

ü OS 版本要求: AIX 7.2TL4 ;

ü POWER9 固件建议使用 FW940.01 以上版本( 01/09/20 发布),以支持 NX GZIP 和 XIVE 功能;

ü 注意 LPAR 分区的处理器兼容模式必须选择为 POWER9 模式(而不是 POWER9_base ,需要在分区 profile 手工修改);否则不能激活 NX GZIP 功能。

软件安装包

zlibNX 安装包在 AIX 扩展安装盘中; xgzip 命令行工具需要通过“ AIX Web Download Pack Program ”下载:

https://www14.software.ibm.com/webapp/iwm/web/preLogin.do?source=aixbp **

附录:

用 xgzip 替代 gzip 压缩,加速日常维护操作:

命令 xgzip 命令行选项与 gzip 命令是相同的,可以直接用来替换 gzip 命令操作,而取得十多倍的压缩速度提升。如下是使用 xgzip 与普通 gzip 压缩、解压相同文件耗时的对比:

xgzip 耗时:

解压: db1:root:[/data]#time xgzip -d dataset.pax.gz

real 1m36.43s

user 0m7.04s

sys 0m23.40s

加压: db1:root:[/data]#time xgzip dataset.pax

real 0m48.43s

user 0m1.48s

sys 0m12.27s

gzip 耗时:

解压: db1:root:[/data]#time gunzip dataset.pax.gz

real 2m24.99s

user 0m28.87s

sys 0m17.41s

加压: db1:root:[/data]#time gzip dataset.pax

real 10m28.60s

user 3m11.38s

sys 0m11.07s

db1:root:[/data]#ls -l dataset.pax*

-rw-r--r-- 1 root system 2620784309 Mar 17 22:50 dataset.pax.gz


上述 DB2 数据库 NXGZIP 压缩加速试验环境说明:

  1. K1 Power9 E980 微码, FW940.02 (IH940_041)
  2. AIX 版本: 7200-04-01-1939
  3. zlibNX 版本: 7.2.4.0 , xgzip 版本: 4.0.20.0
  4. DB2 版本 V11.1

备份脚本示例如下

export BDR=/db2/db2backup;

for i in 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 # 并行 16

do

mkfifo $BDR/fifo$i

/usr/opt/xgzip/bin/xgzip -9 < $BDR/fifo$i > $BDR/xgzdir/tpcc_backup_slice_$i.gz &

done

time db2 backup database test online to \

$BDR/fifo1,$BDR/fifo2,$BDR/fifo3,$BDR/fifo4,$BDR/fifo5,$BDR/fifo6,$BDR/fifo7,$BDR/fifo8,$BDR/fifo9,$BDR/fifo10,$BDR/fifo11,$BDR/fifo12,$BDR/fifo13,$BDR/fifo14,$BDR/fifo15,$BDR/fifo16 \

with 16 BUFFERS BUFFER 16384 PARALLELISM 16

参考链接:

https://www.ibm.com/support/pages/db2-backup-performance-how-named-pipes-can-help-us-if-compression-bottleneck

https://www.ibm.com/support/knowledgecenter/zh/SSEPGG_11.1.0/com.ibm.db2.luw.admin.ha.doc/doc/t0006202.html

如果觉得我的文章对您有用,请点赞。您的支持将鼓励我继续创作!

1

添加新评论0 条评论

Ctrl+Enter 发表

作者其他文章

相关文章

相关问题

相关资料

X社区推广