xz 多线程压缩支持详解

XZ多线程压缩支持详解

xz的旧版不支持多线程压缩。需要下载编译新版的xz(支持 -T参数的版本)我这里是 5.2.4
使用xz进行压缩:
xz -9 -k -z release.tar
使用xz进行多线程压缩:
xz -9 -T 12 -k -z release.tar
但是使用时你会发现,很多时候使用-T参数不能全核编译,我在一台6核12线程的机器上,压缩一个1.2G的文件。使用-T -9 也就是采用最高压缩率的时候,CPU的最高占用率只能达到600%,使用-T -6的时候,才可以用到全部的12核编译。

造成这个问题的原因,和xz多线程压缩的原理有关。
多线程压缩的时候,xz会将待压缩的文件分成几个部分,每一个线程压缩一个部分。

默认情况下,分块的大小是LZMA2文件夹的三倍。使用-6,目录大小为8Mib,并且块大小24 MiB。
而对于-9,它们是64 MiB和192 MiB。

所以如果输入文件不够大,就无法使用所有CPU核心。

当然,块大小可以使用--block size=size选项进行调整。

减小块大小往往会降低压缩率,并且会对内存造成很大的占用。以换取压缩速率上的提升。

需要注意的是,设置分割块的大小,不能小于LZMA2文件夹的大小。所以使用-9时,块大小的设置也不能低于64Mib。

更改块大小影响压缩时候的RAM使用,如果设置不合理很可能内存会爆掉,可以在使用xz命令的时候加一个-vv(即verbose两次)看到需要多少内存占用。还可以查看到压缩进度,剩余时间等信息:

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值