Cromfsの圧縮時間と圧縮率についての実験と、速度の比較など
手元のOpenOffice.orgの/usr/lib32/openoffice/以下について、mkcromfsのオプションをいじって変化を見た。
所要時間に関しては、他の作業もしていたため、大体の目安程度に。圧縮の対象によっては、圧縮時間や実際の縮み具合などは変わってくる可能性がある点にも注意。
--lzmafastbytesオプションによる変化
--lzmafastbytes <value> Specifies the number of "fast bytes" in LZMA compression algorithm. Valid values are 5..273. Default is 273.
このオプションの値を色々と変えて比較してみた(参考までにSquashfsと、無圧縮のTarボールも含めた)。--lzmafastbytesと-e以外のオプションは付けていない。
形式/--lzmafastbytesの値 | 圧縮時間 | 圧縮後サイズ |
---|---|---|
Tar(無圧縮時のサイズとして) | 0.08s user 2.44s system 16% cpu 14.926 total | 317,091,840 |
Squashfs/deflate | 59.42s user 1.76s system 89% cpu 1:08.11 total | 131,670,016 |
Cromfs デフォルト(273) | 3967.56s user 30.10s system 89% cpu 1:14:32.64 total | 98,973,334 |
Cromfs 有効範囲真ん中(139) | 3523.30s user 27.33s system 89% cpu 1:05:56.87 total | 98,923,040 |
Cromfs 真ん中と下限の中間(72) | 3178.47s user 25.65s system 87% cpu 1:00:47.40 total | 98,982,274 |
Cromfs (38) | 2816.75s user 22.99s system 88% cpu 53:26.58 total | 99,248,777 |
Cromfs (22) | 2463.75s user 21.32s system 87% cpu 47:05.75 total | 99,907,170 |
Cromfs (14) | 2177.87s user 19.18s system 88% cpu 41:27.96 total | 100,946,560 |
Cromfs (9) | 1914.90s user 17.17s system 88% cpu 36:21.87 total | 102,688,212 |
Cromfs 有効範囲の下限(5) | 1441.70s user 14.49s system 88% cpu 27:28.71 total | 108,610,779 |
-rオプションによる変化
--randomcompressperiod, -r <value> Interval for randomly picking one fblock to compress. Default: 20 The value has no effect on the compression ratio of the filesystem, but smaller values mean slower filesystem creation and bigger values mean more diskspace used by temporary files.
このオプションは、圧縮後のサイズには全く影響せず、出力されるファイルシステムは、いずれも同じファイルサイズとなるが、大きな値を指定すると、圧縮時にディスク領域を多めに使用する代わりに圧縮時間を短縮できる。
下の実験では、--lzmafastbytesは5で、-eオプションも付けている。-r以外の他のオプションは付けていない。
-rの値 | 圧縮時間 |
---|---|
1 | 1524.82s user 14.37s system 86% cpu 29:36.57 total |
20(デフォルト) | 1441.70s user 14.49s system 88% cpu 27:28.71 total |
100000 | 1248.70s user 12.02s system 89% cpu 23:33.09 total |
-bオプションによる変化
--bsize, -b <size> Set the size of file fragments. Default: 65536 Smaller fragment size improves the merging of identical file content, but causes a larger block table to be generated, and slows down the creation of the filesystem.
値を下げると似たようなデータどうしをつなげやすくなる(より縮みやすい場合がある)が、ブロックテーブルが大きくなり、ファイルシステム作成に時間がかかる、とのこと。
この実験でも、--lzmafastbytesは5で、-eオプションも付けている。-b以外の他のオプションは、一部の-qqqによる出力抑制を除き、付けていない。
形式/-bの値 | 圧縮時間 | 圧縮後サイズ |
---|---|---|
Tar(無圧縮時のサイズとして) | 0.08s user 2.44s system 16% cpu 14.926 total | 317,091,840 |
Squashfs/deflate | 59.42s user 1.76s system 89% cpu 1:08.11 total | 131,670,016 |
Cromfs デフォルトの1/64(1024) -qqqで出力抑制 | 1857.29s user 109.34s system 83% cpu 39:03.92 total | 107,756,753 |
Cromfs デフォルトの1/16(4096) -qqqで出力抑制 | 1338.69s user 36.46s system 81% cpu 28:01.68 total | 108,150,090 |
Cromfs デフォルトの1/8(8192) | 1309.01s user 23.70s system 85% cpu 26:05.56 total | 107,400,199 |
Cromfs デフォルトの1/4(16384) | 1351.82s user 18.07s system 83% cpu 27:11.22 total | 107,279,377 |
Cromfs デフォルトの1/2(32768) | 1390.38s user 16.52s system 80% cpu 29:04.62 total | 108,689,138 |
Cromfs デフォルト(65536) | 1441.70s user 14.49s system 88% cpu 27:28.71 total | 108,610,779 |
Cromfs デフォルトの8倍(524288) | 2661.02s user 21.46s system 90% cpu 49:09.15 total | 108,621,228 |
オプションと圧縮後のアクセス速度の変化
オプションを変化させて作成したファイルシステムをそれぞれマウントし、中に含まれる全ファイルに対してmd5sumをするのにかかる時間を調べた。
結果としては、--lzmafastbytesや-bオプションを変化させてもあまり変わらず、全て2分半前後だった。参考までに、無圧縮時のオリジナルのファイルに対しては12秒ぐらいで、Squashfsで圧縮したものは、無圧縮時とほとんど同じ(13秒ぐらい)だった。
(2007/9/6)端末への出力やcpufreqにより、正確でない処理時間を書いてしまったため、両方を切ってやり直した。一度ディスクから読んだものを空きメモリに保存するページキャッシュの影響も大きいため、再起動もしている。
アクセス速度の体感差
/usr/lib32/openofficeをマウントポイントとして、このディレクトリ以下にあるファイルをCromfsとSquashfsに圧縮したものをそれぞれマウントし、OpenOffice.org Calcを起動して、ウィンドウが出るまでの時間を大まかにみたところ、下のような結果となった。
- 無圧縮時 約9秒
- Cromfs 約36秒
- Squashfs 約9秒
Cromfsで圧縮したものは、体感的には、仮想マシン上のLiveCDでOOoを起動させているような遅さが感じられた。Squashfsは速い。
使用したバージョン:
- cromfs 1.5.3.1
- squashfs-tools 3.1_p2
関連記事: