パラレル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の結語は参考になる。