Bcachefs

Bcachefs 1.38.6、「実験的」卒業後の実力をベンチマークで確認する

Linux

Bcachefs 1.38.6、「実験的」卒業後の実力をベンチマークで確認する

「実験的」の看板を外したBcachefs。その最初のリリースとなる1.38.6が、データベースやコンパイルといった実ワークロードでどれだけ前に進んだのか。独立したベンチマークが公開された。 200本のパッチが積み上げたもの 開発者のケント・オーバーストリート(Kent Overstreet)氏がBcachefs 1.38.6を「パフォーマンスリリース」と呼んだ。Bツリーのイテレータからトランザクションコミット、ジャーナル、ファイルシステムレベルのコードまで、200本以上のパッチを投入している。 変更の中身は地味だが効いている。ジャーナルのフラッシュパスは完全にロックフリーになった。Bツリーのシャーディングも手が入り、新規inodeの割り当てをCPUではなくPIDに基づかせ、ロック競合時にはスレッドをデータのシャードに対応するCPUへ移動させる。トランザクションコミットのホットパスが4KBのマシンコードにまで縮んだ。 ここで一つ、開発者が掘り当てた厄介な原因がある。GCCが static_branch_unlikely() を適切に処理できていなかった。Linuxカーネルにはラ

Bcachefs 1.38.6、ジャーナルのロックを全面排除。性能に本腰

Linux

Bcachefs 1.38.6、ジャーナルのロックを全面排除。性能に本腰

カーネルの外に追い出されたファイルシステムが、速度で勝負を仕掛けてきた。Bcachefs-Tools 1.38.6は、ジャーナル周りのロック競合を根本から潰すパフォーマンスリリースだ。 ロックを捨てる Bcachefs 1.38.6が現地時間6月17日にリリースされた。ディスクフォーマットの変更はなし。目玉は新機能ではなく、コードベース全域にわたるパフォーマンスチューニングにある。 開発者のケント・オーバーストリート(Kent Overstreet)氏が公開したChangelogを読むと、手の入れ方が尋常ではない。 最大の変更は、ジャーナルフラッシュの完全ロックフリー化だ。マルチスレッドで O_SYNC や fsync を叩くワークロードで、従来はジャーナルのメインロックがボトルネックになっていた。1.38.6ではフラッシュ処理からロックを排除した。ピンリストもジャーナル全体でロックを共有する方式をやめ、リストごとの個別ロックに切り替えている。ジャーナルの読み込みにはバイナリサーチを導入し、デフォルトのジャーナルサイズも引き上げた。 データベースサーバーやコンテナ環境で f