2016-12-13 13 views
0

pigzを使用して、約50GBの大きなディレクトリを圧縮しています。私はec2インスタンスをRedHatで使用しています。インスタンスタイプはm4.xlargeです.4つのCPUがあります。圧縮がすべてのCPUを使い果たしてしまいます。パフォーマンスが向上します。それは私の期待を満たしていませんでした。pigzを最適化する方法は?

私が使用していますコマンド:

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

しかし、圧縮が実行されて、私は私のCPUの状態を確認するためにmpstat -P ALLを使用し、結果は唯一に近い、他の3つのCPUのアイドル%の多くを示してい2%は、各CPUのユーザー空間プロセスによって使用されます。

また、pigzがCPUの10%未満しか使用していないことを確認するためにtopを使用しようとしました。

-p 10を試してプロセス数を増やすと、数分の使用率は高くなりますが、出力ファイルが2.7GBに達した時点で下がります。

私はすべてのCPUを圧縮に使用していますので、最高のパフォーマンスを得るためにすべてのリソースを十分に活用したいのですが、どうすればそこに着くことができますか?

答えて

0

ファイル圧縮アプリケーションがCPUにバインドされていない場合、ほとんどの場合、シーケンシャルI/Oにバインドされています。

これをさらに調べるには、mpstatを使用して、topまたはmpstatを使用してiowait( 'wa')でシステムが費やしている時間の割合を調べます(デフォルト出力の一部でない場合は、 。

私が正しいとすれば、システムがピグを実行していない時間のほとんどは、I/Oを待つのに費やされます。

また、iostatを使用してこれを調べることもできます.iostatではディスクIOを表示できます。読み込みと書き込みの比率は、その時点での入力の圧縮率に応じて時間に応じて変化しますが、IOの組み合わせはかなり一貫していなければなりません。これは、アマゾンのストレージプロビジョニングが今や一貫したI/Oを提供していることを前提としています。

関連する問題