如何优化pigz?
问题描述:
我使用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都只用于压缩,我想充分利用我所有的资源来获得最好的性能,我该如何到达那里?
答
如果文件压缩应用程序没有CPU绑定,它们很可能是顺序I/O绑定。
您可以使用mpstat查看系统在iowait('wa')中使用top或mpstat所花费的时间百分比(如果它不是默认输出的一部分,请查看选项的手册页) 。
如果我是对的,大部分时间系统没有执行pigz花在等待I/O上。
您还可以使用可以显示磁盘IO的iostat进一步调查此问题。读取和写入之间的比率将随着时间的推移而变化,取决于当时输入的可压缩程度,但组合IO应该相当一致。这假定亚马逊的存储配置提供了一致的I/O现在,以前并不是这样的情况。