一人一党党

一人一人の、一人一人による、一人一人のための政治制度を!

zstd vs deflate on zswap

パラレルATAからしかbootできない自機で、HDDが死亡寸前。 今時、パラレルATA接続のストレージなんて手に入らない。 そこで、kexec機構を用いた最小限のlinuxカーネルとinitial ram filesystemをCDに焼き、USBメモリに格納したシステムへchainload

USBフラッシュメモリの寿命は書き込みによって減るので、swap領域への書き込みを減らすためにzswapを導入。 ここで、zswapの圧縮アルゴリズム選択で気になったのでネット検索したところ、2024年5月現在、多くのサイトで勧められている圧縮アルゴリズムzstdが、小さなファイルでは圧縮率がよくないらしい。 自分がこのことを知ったのは2016年のOSS圧縮ツール選択カタログ #Linux - Qiitaを読んでから。 zstdの開発元でも、Compression ratio worse than zlib for small blobs - Issue #1134 - facebook/zstd - GitHubとして認識されているようだ。 そして、swapはページ単位で行われ、自機の属するアーキテクチャであるx86でのページサイズは4キロバイトSquash Compression Benchmark - GitHub Pagesによると、4キロバイト前後のファイルサイズでは、zstdはスピードではdeflateを上回るが圧縮率では負ける。 なので、自分は圧縮率優先でdeflateをzswapの圧縮アルゴリズムに選択した。

新しめのツールはbrotli以外ファイルヘッダが大きそうですね 逆に言うと、gzip/bzip2はまさに汎用と言えるさすがの性能です

2016年のOSS圧縮ツール選択カタログ #Linux - Qiitaの結語は参考になる。