2016-12-13 51 views
0

我使用pigz来压缩一个大的目录,它接近50GB,我有一个ec2实例,使用RedHat,实例类型是m4.xlarge,它有4个CPU,我期待的压缩会吃掉我所有的CPU并有更好的表现。但它没有达到我的预期。如何优化pigz?

我使用命令:

tar -cf - lager-dir | pigz > dest.tar.gz

但压缩运行时,我使用mpstat -P ALL检查我的CPU状态,结果表明空闲了很多%用于其他3个CPU,只有近每个CPU用户空间进程使用2%。

还试图使用top来检查pigz只使用不到10%的CPU。

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

所以我把所有的CPU都只用于压缩,我想充分利用我所有的资源来获得最好的性能,我该如何到达那里?

回答

0

如果文件压缩应用程序没有CPU绑定,它们很可能是顺序I/O绑定。

您可以使用mpstat查看系统在iowait('wa')中使用top或mpstat所花费的时间百分比(如果它不是默认输出的一部分,请查看选项的手册页) 。

如果我是对的,大部分时间系统没有执行pigz花在等待I/O上。

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