Linuxでよく使われているbzip2は非常に高い圧縮率の圧縮プログラムですが、その反面非常に高負荷で圧縮/解凍に時間がかかります。これをマルチスレッドで並列に行うことで特にマルチプロセッサなシステムで高速に実行しようというのがこのlbzip2です。ついでに同じような機能ですが圧縮のみで若干使い勝手が異なるpbzip2。どちらもなかなか便利そうなので忘れないようにメモ。
元ネタは
- Debian Package of the Day » Blog Archive » lbzip2: parallel bzip2 utility
- lacos' download page (GPL'd sources)--作者さんのページ
Ubuntu 9.10 Karmic Karmaではすでにパッケージに入っているようです。他のLinuxでもパッケージがあるようです。
基本的にbzip2とほぼ互換で使えるそうです。ただしまだ入力ファイルは削除しないとのこと。debianのalternativesに入る時がきたら削除機能を追加して互換性を上げるとのこと。
基本的な使い方はbzip2と同じですが、tarと組み合わせて使うには--useオプションで指定。
- tar --use=lbzip2 -xf hoge.tar.bz2
などとするといいようです。詳しくは解説ページか本家ページで。
最近ではノートPCでもマルチコアであったりデスクトップではクアッドコアも珍しくなくなりました。これで時間のかかる圧縮・展開が高速になるならば素晴らしい。試していませんがATOM等でもHyper Threadingでも高速化すればいいですね。
同様に圧縮時に並列動作できるpbzip2もメモ。こちらはUbuntu 9.04にもパッケージがあります。違いとしては解凍時も並列化出来るかどうかのようで、計測したところpbzip2で4コアマシンでほぼ4倍高速に圧縮できました。
環境: Ubuntu 9.04, PhoenomII 2.5Ghz(Quad)
比較内容: 430MBのバイナリファイルの圧縮。圧縮先は/dev/shm
- gzip 23.1秒
- bzip2 126.7秒
- pbzip2 34.4秒 (bzip2比 3.6倍)
最近ではlzma系も増えているようですが、こちらも今後枯れてきたら標準的に使われるかもしれないと思いつつ。