差分
このページの2つのバージョン間の差分を表示します。
次のリビジョン | 前のリビジョン | ||
blog:2022:2022-02-21 [2022-02-21 23:57] Decomo 作成 |
blog:2022:2022-02-21 [2022-03-04 10:51] (現在) Decomo |
||
---|---|---|---|
行 1: | 行 1: | ||
- | ====== ZFS圧縮のLZ4とZStandardを簡易比較(ZStdがよさげ) ====== | + | ====== ZFS圧縮のLZ4とZStandardを簡易比較(zstdがよさげ) ====== |
- | ZFSerの皆様におかれましては、OpenZFS 2.0で圧縮アルゴリズムにZStandardが追加されたのは周知の事実だろう。compressionの値として'' | + | ZFSerの皆様におかれましては、OpenZFS 2.0で圧縮アルゴリズムにZStandardが追加されたのは周知の事実だろう。compressionの値として'' |
|(速度重視)← | |(速度重視)← | ||
| zstd-fast-1000 ~ zstd-fast-1 / zstd-1 ~ zstd-19 | | zstd-fast-1000 ~ zstd-fast-1 / zstd-1 ~ zstd-19 | ||
- | '' | + | '' |
- | LZ4よりは処理負荷が高いとされているZStandardの実力がどの程度か、簡易的にテストした。 | + | ZStandardはLZ4より圧縮率が高く、それに応じて処理負荷も若干高いとされている。実際のところどんなものか、簡易的にテストした。 |
- | 個人的にアーカイブ用途に使いたいので、圧縮率重視ってことで'' | + | 個人的にアーカイブ用途に使いたいので、圧縮率重視ってことで'' |
ZFSの主要開発者の1人、Allan Judeによる[[https:// | ZFSの主要開発者の1人、Allan Judeによる[[https:// | ||
行 61: | 行 61: | ||
まず言えることは'' | まず言えることは'' | ||
- | 圧縮率最重視の'' | + | 圧縮率最重視の'' |
+ | |||
+ | ===== recordsizeによる圧縮率の変化 ===== | ||
ついでに、圧縮は'' | ついでに、圧縮は'' | ||
行 67: | 行 69: | ||
LZ4とZStandardのそれぞれで、レコードサイズを512kから1Mに変更した時の圧縮後容量の差分を求めたのが下表。 | LZ4とZStandardのそれぞれで、レコードサイズを512kから1Mに変更した時の圧縮後容量の差分を求めたのが下表。 | ||
- | ^ 圧縮方法 | + | ^ 圧縮方法 |
- | | lz4 | 677.5 | 0.13% | | + | | lz4 | 128k | 495251.3 | |
- | | zstd-7 | 935.2 | 0.18% | | + | | ::: | 512k | 495145.0 | -106.3 | -0.02% | |
+ | | ::: | 1M | 495251.4 | +0.1 | +0.00% | ||
+ | | zstd-7 | 128k | 490354.9 | - | - | | ||
+ | | ::: | 512k | 488842.4 | -1512.5 | -0.29% | ||
+ | | ::: | 1M | 487907.2 | | ||
- | 確かにレコードサイズが大きい方が効率的に圧縮できるようだ。割合で見ると微々たるものだが、'' | + | なぜかLZ4のレコードサイズ1MBの時は圧縮率が下がってるけど、概ねレコードサイズが大きくなるほど圧縮率も向上するようだ。割合で見ると微々たるものだが、レコードサイズを変えるだけで恩恵が得られるのはありがたい。実のところ、レコードサイズを大きくすると実データに占めるメタデータ割合(ハッシュの量)が減り、プール容量的にはこちらの影響の方が大きかったりする(参考:[[blog: |
とりあえず、互換性を気にしなくていい環境では、lz4の代わりに積極的にzstdを使っていくのが良さそう。可能な限りrecordsizeも大きくしていこう(ただし、FreeBSDはレコードサイズが128k超のファイルシステムからブート出来ない点には注意が必要。) | とりあえず、互換性を気にしなくていい環境では、lz4の代わりに積極的にzstdを使っていくのが良さそう。可能な限りrecordsizeも大きくしていこう(ただし、FreeBSDはレコードサイズが128k超のファイルシステムからブート出来ない点には注意が必要。) |