如何优化pigz?

时间:2016-12-13 08:57:21

标签: linux compression redhat tar large-files

我正在使用pigz来压缩一个大目录,这个目录已接近50GB,我有一个ec2实例,有RedHat,实例类型是m4.xlarge,它有4个CPU,我期待压缩会耗尽所有我的CPU和具有更好的性能。但它没有达到我的期望。

我正在使用的命令:

extension MyViewController: UIGestureRecognizerDelegate { func gestureRecognizer(_ gestureRecognizer: UIGestureRecognizer, shouldRecognizeSimultaneouslyWith otherGestureRecognizer: UIGestureRecognizer) -> Bool { return true } }

但是当压缩运行时,我使用tar -cf - lager-dir | pigz > dest.tar.gz来检查我的CPU状态,结果显示其他3个CPU有很多%空闲,每个CPU只有近2%被用户空间进程使用。

还尝试使用mpstat -P ALL来检查pigz只使用不到10%的CPU。

尝试使用top来增加进程数,然后它会在几分钟内使用率很高,但在输出文件达到2.7 GB时会下降。

所以我所有的CPU都只用于压缩,我想充分利用我的所有资源来获得最佳性能,我怎样才能到达那里?

1 个答案:

答案 0 :(得分:1)

如果文件压缩应用程序不受CPU限制,则它们很可能是顺序I / O绑定。

您可以使用mpstat查看系统在iowait(' wa')中使用top或mpstat消耗的时间百分比,进一步调查此问题(如果不是,请查看选项的联机帮助页)部分默认输出)。

如果我是对的,那么大多数情况下系统都不会执行pigz等待I / O.

您还可以使用iostat进一步调查此问题,iostat可以显示磁盘IO。读取和写入之间的比率将随时间变化,具体取决于此时输入的可压缩程度,但组合IO应该相当一致。这假设亚马逊的存储配置现在提供了一致的I / O,这种情况并非如此。