SquashFSをマウントするまでの続きです。
mksquashfsによるイメージ作成時の圧縮形式オプションを変更し、圧縮率や展開速度のパフォーマンスを見ていきます。
圧縮形式
squashfsの圧縮形式はgzip(標準)/lzo/xzの3種類を使用することできる
一般的に3種類ぞれぞれの圧縮率と展開速度の関係は以下の通りで、
バランスの良さからgzipが標準になっているようである。
高<--- 圧縮率 --->低
xz gzip lzo
高<--- 展開速度 --->低
lzo gzip xz
圧縮形式は-comp
オプションで指定する。
前回に引き続いて/usr/share/docをlzoとxzで圧縮したイメージを作成します。
$ mksquashfs /usr/share/doc doc_lzo.sfs -comp lzo
$ mksquashfs /usr/share/doc doc_zx.sfs -comp xz
圧縮率
それぞれの圧縮形式で作成したイメージのサイズおよび元々のサイズ(origianl)は以下の通り。
original | gzip | lzo | xz |
---|---|---|---|
77.1MB | 37.3MB | 37.8MB | 36.5MB |
展開速度
展開速度(ファイル読み込み速度)をいくつかの観点で比較を行う。
originalのファイルシステムはext4である。
また、各計測間の速度に影響が出ないように以下コマンドでキャッシュを毎回クリアする。
# echo 3 > /proc/sys/vm/drop_caches
ディレクトリ情報の参照
以下コマンドを対象(マウント)ディレクトリ配下で実行する。
$ time ls -lR | cat > /dev/null
original | gzip | lzo | xz |
---|---|---|---|
4.834s | 2.942s | 3.060s | 3.101s |
###ファイル読み込み
以下コマンドを対象(マウント)ディレクトリ配下で実行する。
$ time tar cf - . | cat > /dev/null
original | gzip | lzo | xz |
---|---|---|---|
15.782s | 9.199s | 8.829s | 18.879s |
##まとめ
一般的なパフォーマンスの関係は最初に書いた通りになるが、圧縮対象次第で変わることもあるので、
計測を行った上でバランスを見ながら圧縮形式を選択するとよいでしょう。
参考サイト
Squash Fs Comparison(http://elinux.org/Squash_Fs_Comparisons)