使用 7-zip 压缩时几乎不占用 CPU

使用 7-zip 压缩时几乎不占用 CPU

当我尝试使用 7z 最大压缩率进行压缩时,我的 CPU 利用率低于 20%。只有一个核心的负载为 100%,而且甚至不是 100% 的时间。

我使用的是快速的 SSD,因此它肯定不会受到磁盘的瓶颈影响。

这些是我尝试过的命令:

7z a -mx=9 -m0=LZMA2 -mmt12 test.7z *.mkv
7z a -mx=9 -m0=LZMA2 -mmt=12 test.7z *.mkv
7z a -mx=9 -m0=LZMA2 -mmt=on test.7z *.mkv

这是 CPU 利用率图表:

图形

答案1

我看到了应用标志后的相同行为-mx9

删除该标志后,我发现所有核心都得到了充分利用。

“超级”压缩(mx9)算法正在进行更详尽且内存密集型的搜索,因此受到内存带宽的限制。

使用-mx5-mx7会导致更多的 CPU 使用率。


确实,从这一页看来,超高 (9) 和高 (7) 设置会导致字典和其他设置明显变大,以检查数据是否压缩。这会大大降低压缩速度,而且由于数据在内存中,内存带宽是限制因素。


使用更大的字典大小将显著影响压缩速度,因为对于要压缩文件上的每组字节,现在必须使用算法搜索大小为 2 倍或 4 倍的字典,而这些算法最终可能会以不同的方式多次搜索数据集。随着内存需求的增加,这可能会导致速度呈指数级下降。

Ultra 还更改了字典搜索算法,大概是将其改为在压缩方面效率更高(如果不是在速度方面的话)的算法 - 如果速度更快的话,那么它就会成为默认算法。这会进一步降低速度。

压缩算法通常基于当前硬件的状态而编写,并经过一系列折衷。设置会根据其理论峰值压缩率进行调低,以便在合理的时间内实现相对合理的压缩。如果将所有内容都调至最大压缩率,则最终会导致内存需求以及内存带宽和 CPU 时间大幅增加。此外,解压缩也可能需要更多资源。

使用“超”设置只适用于您想要最大程度压缩且不受时间限制的数据,您看到的结果也反映了这一点。因此,您现在遇到了系统限制之一。

如果您只是将文件发送给朋友并且可以容忍文件大几个百分点,那么“正常”设置就足够了。

相关内容