HOME / 日記 / pigz(マルチスレッドで動作するマルチコアに最適なgzip互換ソフトウェア)を試す
Date: 2009/09/07 | | Tags: OpenSolaris, gzip, マルチコア, パラレル, マルチスレッド, pigz, pgzip
gzipをマルチコアのマシンで動かしても、CPU1つしかつかってくれないわけですが、最近はノートパソコンでもマルチコアで、CPUパワーが余っているわけです。
巨大なファイル(1GBとか)をgzipで固めると結構遅いので、マルチスレッドに対応したpigzを試してみました。
OpenSolarisでのインストールはこんなかんじ。
jucrのpendingレポジトリの追加
pfexec pkg set-publisher -O http://jucr.opensolaris.org/pending juicer
インストール
pfexec pkg install -v pigz
juicerのレポジトリは定期的に落ちるので、以後pkgコマンドでエラーが出るのが嫌な場合はunset-publisherをしておきましょう。
厳密じゃないんだけどtimeコマンドで比較。
time pfexec zfs send dpool/rpool/zones/m-p2s-20090410/ROOT/zbe-8@zfs-async:bp-1 | gzip -9c > /zones/work/p2vi-snv101-20090410.zfs.gz
結果
0.00s user 3.61s system 0% cpu 13:01.85 total
13分2秒=782秒程度。
time pfexec zfs send dpool/rpool/zones/m-p2s-20090410/ROOT/zbe-8@zfs-async:bp-1 | pigz -9c > /zones/work/p2vi-snv101-20090410.zfs.gz
結果
0.00s user 4.08s system 0% cpu 6:58.43 total
6分58秒=418秒程度。
1.87倍程度でしょうか。
まあ、pigz、使ってみようってことで(笑)
デフォルトではコア数の分、スレッドを切るようで、prstat -mL 1で見てみると、CPUがまだまだ空いている。
1つのスレッドが1つのCPUを100%使い切れるわけではないので、その関係もあるのでしょう。
ということで、pig -p4あたりにしてみたところ、prstat -mL 1でみると4匹のpigzが立ち上がっておりました。Dual Coreの私のノートでは、このぐらいの方が、速度は速そうです。他のプロセスに影響を与えるわけですが・・・(笑