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两次)看到需要多少内存占用。还可以查看到压缩进度,剩余时间等信息:

最低0.47元/天 解锁文章
1709

被折叠的 条评论
为什么被折叠?



