SquashFS - Deflate vs LZMA

SquashFSの圧縮アルゴリズムにLZMAを使うパッチがありました。

これはSquashFS 2.0向けなので、これをCVSバージョン(Squashfs 3.0prerelease (2006/1/24) )にがんばって移植しました。

さらに、LZMA SDKのバージョン4.20用でしたが、圧縮(mksquashfs-lzma)は4.32、展開(squashfs.ko)は4.20にしました。

で、ベンチマークテストをしてみました。


ベンチマークに使ったのは、VIVER 0.2 Deskのルートイメージ。
LZMAを有効にしていない(zlib)のCVSバージョンのSquashFSと、LZMAを有効にしたSquashFSで比較しました。

  • AMD Athlon(tm) 64 X2 Dual Core Processor 3800+
  • メモリ1GB
  • HDDはSATA 150でソフトウェアRAID0


展開速度は、

time cat root.1 >/dev/null

で測りました。いわゆるシーケンシャルリードでしょうか。

圧縮率

zlib:531MB
LZMA:478MB
これは、まぁ予想通り。と言うか、調べた情報通り。

圧縮にかかる時間

zlib:

289.33user 7.15system 5:03.08elapsed 97%CPU (0avgtext+0avgdata 0maxresident)k
0inputs+0outputs (1major+803270minor)pagefaults 0swaps

LZMA:

1174.59user 123.35system 21:41.79elapsed 99%CPU (0avgtext+0avgdata 0maxresident)k
0inputs+0outputs (8major+31533635minor)pagefaults 0swaps

うーむ。まぁ、調べた情報通り。でも4倍はちょっと長いかな。

展開にかかる時間

zlib:

0.05user 15.66system 0:17.88elapsed 87%CPU (0avgtext+0avgdata 0maxresident)k
0inputs+0outputs (0major+219minor)pagefaults 0swaps

LZMA:

0.05user 59.25system 1:01.17elapsed 96%CPU (0avgtext+0avgdata 0maxresident)k
0inputs+0outputs (0major+219minor)pagefaults 0swaps

コレはいけない。聞いた話ではLZMAは展開速度が速いというはず。逆に遅い。ものすごく遅い。


世の中簡単じゃないです。