マルチスレッド対応の圧縮コマンド
SDカードのイメージファイルを作成し、圧縮ファイルを作った。このとき、結構時間がかかった。システムモニタを見ていたところ、マルチコアにもかかわらず、1つかせいぜい2つのスレッドしか使われていなかった。そこで、マルチスレッド版の圧縮コマンドがないかぐぐったところ、やっぱりあった。(^^)
シングルスレッドなgzip だとこんな感じ。
$ time sudo dd if=/dev/sda bs=8M | gzip -c > sdcardimg_org.img.gz
1910+0 レコード入力
1910+0 レコード出力
16022241280 bytes (16 GB, 15 GiB) copied, 710.228 s, 22.6 MB/sreal 11m50.237s
user 4m30.003s
sys 0m13.834s
これに対して、マルチスレッドの xz だと
$ time sudo dd if=/dev/sda bs=8M | pxz -c > sdcardimg_org.img.xz
1910+0 レコード入力
1910+0 レコード出力
16022241280 bytes (16 GB, 15 GiB) copied, 278.309 s, 57.6 MB/sreal 4m39.045s
user 78m52.949s
sys 0m40.581s
と、約3倍の速度がでた!このときのシステムモニタの様子がこれ。