tarの圧縮をpigzで速くする
無圧縮
$ tar pcvf hogehoge.tgz a-directory
$ tar zpcvf hogehoge.tgz a-directory
$ tar pcvf hogehoge.tgz -I pigz a-directory
注意
間違った外部コマンドを指定してしまってもtar自体は進行する。
最後の最後にエラーであることが分かる。
例
https://gyazo.com/fa1fa0435002459426f40a89f80448c7
table:結果
圧縮後バイト数 real user sys
無圧縮 53,192,314,880 13m3.358s 0m7.931s 2m9.965s
tar内蔵gzip 9,675,249,118 47m18.203s 26m26.414s 2m58.908s
-I pigz 9,685,432,928 23m30.859s 28m8.673s 2m19.998s
互換性
pigzで圧縮したものもtar ztvfでファイルの一覧963行が取得できることを確認した。 考察
無圧縮での処理にかかっている約13分はほぼディスクアクセス待ちであると思われる。
ディスクアクセス待ちに約10分かかるとしてみよう。
tar内蔵gzipを使った場合のuser時間である約26分はほぼ圧縮処理であると思われる。
ディスクアクセス待ちの約10分とsys時間の約3分とを足すと約39分
実際には約47分かかっているのは運用中のNASだからかも。
pigzを使った場合のuser時間は2コア分なので実時間としては約14分と考えてみる。
ディスクアクセス待ちの約10分とsys時間の約2分を足すと約26分
実際には約23分で済んでいる。
詳細は分からないけどマルチコアの効果は出ている気がする。