linux/Unix多线程高压缩率工具xz util使用介绍

本文介绍了Linux/Unix环境下,xz工具的多线程压缩功能,特别是xz 5.2.0及更高版本,允许在压缩大型文件时提高CPU利用率和压缩效率。文章详细讲解了如何使用-xz的-T参数实现多线程压缩,以及如何通过调整线程数和块大小来平衡内存占用和压缩速度。通过实例展示了在IBM AIX小型机上,不同线程设置对压缩率和CPU利用率的影响,强调了合理设置线程数和块大小的重要性。
摘要由CSDN通过智能技术生成

在linux和unix系统中,常用的压缩软件有gzip,bzip,xz等。对tar来说也有相关的参数,分别是-z -j -J。压缩率大致为gzip<bzip<xz。xz格式压缩出来虽然文件较小,但它也是三种工具里压缩最慢的。不管用哪个工具压缩,都会有一个令人诟病的地方就是,对于一个文件只能采用一个线程进行压缩,导致CPU利用率特别低,哪怕再高配的服务器也快不起来。而xz5.2.0之后的版本就解决了这一问题,可以实现多线程压缩和单线程解压。对于压缩数据库导出文件这样特别大的单个文件特别给力。实现了CPU的高利用率,缩短压缩时间,同时保持了很高的压缩率。实测oracle导出文件能压缩至1%左右,DB2导出文件能压缩到2%左右,十分快且使用。

首先你需要安装xz 5.2.0之后的版本才能使用多线程压缩的功能,目前最新的版本为5.2.4,推荐使用最新的版本,因为之前的版本会存在一些内存控制的问题导致压缩有可能失败。

压缩一个文件特别方便,只需使用 -z参数如

xz -z ./haha.txt

就会在当前目录下生成一个haha.txt.xz文件,解压直接使用-d参数即可

如果想要自定义文件名,可以使用-c参数,如下

xz -c ./haha.txt > gaga.xz

如果想要在tar结束后对tar包进行压缩,可以使用管道,如下:

tar -cf - smit.log | xz -c > haha.tar.xz

如果要使用多线程,只需指定-T 参数或者--threads参数,如下,使用4个线程进行压缩

xz -T 4 -z ./haha.txt

注意,-T 参数只是指定最多利用的线程数,实际利用可能比该参数低。如果参数指定0,那么就尽可能多的使用CPU线程。一般来说线程越多CPU利用率越高。

另外,使用多线程压缩实际上是在读入文件的时候先进行分块,然后让不同线程压缩不同的分块,最后再拼合。在分块的时候,会在块的头部写入block的大小,默认块大小为1MB左右。可以参考官网的文档:

-T threads--threads=threads

Specify the number of worker threads to use. S

  • 2
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值