tar コマンドは、-I オプションで圧縮に使用するコマンドを指定できます。
このコマンドに pbzip2 を指定すると、複数CPUを使って処理を行い、短い時間で完了します。
pbzip2 ではオプションで使用するCPU数を指定でき、CPU数に応じて実行時間がどう変わるか、計測してみました。
なお、pbzip2 は例えば Ubuntu では次のようにしてインストールします。
sudo apt install pbzip2
測定方法
Corei7-6700 の CPU数8(コア数4,ハイパースレッディングにより論理CPU数8)のPCで測定しました。
並列処理をしない、素の tar の実行と、複数CPUを使用して並列処理する pbzip2 を使用した場合を測定しました。
複数CPUでは、CPU数 2,4,6,8 です。
実行時間は time コマンドで下記のように計測しました。
テスト用 Ubuntu環境の圧縮を実施しています。
通常の tar を使用した場合です。
time tar -cjf /mnt/hdd2/backup.tar.bz2 -X /mnt/hdd2/exclude_list.txt /
tar で pbzip2 を使用する場合です。
下記の X の個所にCPU数を指定しています。
time tar -I "pbzip2 -pX" -cf /mnt/hdd2/backup.tar.bz2 -X /mnt/hdd2/exclude_list.txt /
実行結果で表示される real の個所の値を、実行時間としています。
生成される backup.tar.bz2 のサイズは3GBでした。
また backup.tar.bz2 は、新規作成/上書きの違いで結果に影響しないように、テストの度に消しています。
測定結果
通常の tar を使用した場合、実行時間は 11分22秒でした。
pbzip2 を使用した場合の結果は次のようになりました。
tar コマンド単体に比べて、かなり短くなっています。
CPU数8が最速ですが、この例では CPU数6でも、実行時間はそれほど増えずにCPU負荷を抑えられています。
圧縮中にも他の作業ができますね。
CPU数4にすると、CPU負荷はもっと余裕が出ますが、実行時間が若干伸びます。
CPU数 | CPU負荷(%) | 実行時間 |
---|---|---|
2 | 40 | 5分58秒 |
4 | 70 | 3分50秒 |
6 | 90 | 3分10秒 |
8 | 100 | 3分5秒 |
コメント