`xz` 的多处理器支持?
Posted
技术标签:
【中文标题】`xz` 的多处理器支持?【英文标题】:Multiprocessor support for `xz`? 【发布时间】:2014-03-07 08:22:00 【问题描述】:有没有办法将xz
压缩工作分散到多个 CPU 上?我意识到xz
本身似乎不可能做到这一点,但是是否还有其他实用程序可以实现相同的压缩算法,从而提高处理器的利用率?我将在具有 16 个以上处理器的系统上的脚本和实用程序应用程序中运行它,至少使用 4-8 个处理器可能会提高压缩率。
【问题讨论】:
github.com/vasi/pixz 谢谢,效果很好。就输出大小而言,效率不如 xz 本身,我希望它能输出 .xz 兼容的文件,但这还不错。 【参考方案1】:5.2 版xz
中添加了多处理器(多线程)压缩支持in December 2014。
要启用该功能,请添加 -T
选项以及要生成的工作线程数,或 -T0
以生成操作系统报告的 CPU 数量:
xz -T0 big.tar
xz -T4 bigish.tar
默认单线程操作相当于-T1
。
我发现使用比我的 CPU 上的超线程总数少的几个超线程运行它† 可以很好地平衡响应速度和压缩速度。
† 所以 -T10
在我的 6 核 12 线程工作站上。
正如scai和Dzenly在cmets中所说的
如果您想将它与
tar
结合使用,只需在之前调用export XZ_DEFAULTS="-T 0"
。或使用类似:
XZ_OPT="-2 -T0"
【讨论】:
如果您想将它与tar
结合使用,请先致电export XZ_DEFAULTS="-T 0"
。
或使用类似:XZ_OPT="-2 -T0"
我使用了 XZ -T4 选项,但我只看到一个处理器被使用。
看来用多核解压是行不通的,即xz --decompress -T0 file.tar.xz
。解压本质上是不是与 xz 不可并行?
线程是所有关于加速压缩@jmon12,因为相比之下解压缩是微不足道的。从手册页“线程解压尚未实现。它只适用于包含多个块的文件,块头中有大小信息。所有以多线程模式压缩的文件都满足此条件,但以单线程模式压缩的文件即使使用--block-size=size
,模式也不会。"以上是关于`xz` 的多处理器支持?的主要内容,如果未能解决你的问题,请参考以下文章