pigzで圧縮を並列処理して高速化

- gzip → pigz
- bzip2 → pbzip2
- xz → pxz
マルチスレッド化することで処理が高速化する。Ubuntuあたりだとapt-get install一発で入る。使い方は基本的に置き換え前のものと同じ。コマンド内部的にCPU個数を確認しながら並列化しているようで、並列化数を制限したいとか言う用途でない限りはそのままでよさげ。

tarでも使おうと思ったらこんな感じで。
- tar cvfz filename.tgz path → tar cvf filename.tgz path --use-compress-prog=pigz
- tar cvfj filename.tbz path → tar cvf filename.tbz path --use-compress-prog=pbzip2
- tar cvfJ filename.txz path → tar cvf filename.txz path --use-compress-prog=pxz

いちいち手で打ってらんねーよ ヽ(`Д´)ノ tという場合 ~/bin あたりにSymlink作ってゴニョるといいかもしんない。ただしこの場合、pxzはSymlinkしないように。どうやらpxzは解凍処理以外をするときは内部的にxzへexecして処理をするという方針のようで、ここに対応抜けがあってexecの無限ループから抜けなくなっちゃう。。

似たようなのとしてはGNU Parallelがあるけど、GNU parallel 使用例を見ても個人的にはいまいちピンと来ない。GNU Parallelの場合、CPUマルチコアを使って高速化というよりは、複数サーバにログインして同時並列実行するような用途の方が向いてる気がする。

とまぁ、細かい話は置いといて、tar cvfz や tar xvfz というよくたたくコマンドで十分にうれしいので、~/bin で ln -s /usr/bin/pigz gzip としとくだけで十分に幸せになれそうです。

2016/09/12(Mon)追記、圧縮だけじゃなくて解凍も高速化します。
pxzじゃなくてpixzだと、execの無限ループに入らず、また圧縮も並列化してくれる。ただしUbuntuではまだapt-getモジュール管理されていない模様。

このブログ記事について

このページは、らるるが2015年10月15日 02:31に書いたブログ記事です。

ひとつ前のブログ記事は「setuid()の家族のメモ」です。

次のブログ記事は「gdbserverでattachしたプロセスをinterruptできない問題」です。

最近のコンテンツはインデックスページで見られます。過去に書かれたものはアーカイブのページで見られます。

月別 アーカイブ

ウェブページ

Powered by Movable Type 7.9.0