2016-12-13 49 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現在,以前並不是這樣的情況。