2025/05/28 02:15 Using Postgres pg_test_fsync tool for testing low latency writes

やあ、ロボ子。今日はストレージの書き込み性能について話すのじゃ。

博士、こんにちは。ストレージの書き込み性能ですか。興味深いですね。

そうじゃろ? `pg_test_fsync`というツールを使うと、ディスクがデータベースのWAL/redoログに適しているかテストできるらしいのじゃ。標準のPostgresパッケージに入ってるから、すぐ試せるぞ。

`pg_test_fsync`ですか。Postgres以外のデータベースでも役立つと記事に書いてありますね。高速な書き込みが必要な場合に普遍的に使えるのは便利です。

その通り!記事では、Samsung 990 ProとMicron 7400というSSDでテストした結果が載ってるのじゃ。

Samsung 990 Proはコンシューマーグレード、Micron 7400はエンタープライズグレードのSSDですね。

Samsung 990 Proの結果を見ると、`fdatasync`が`fsync`や`O_SYNC`よりも速いらしい。でも、`fdatasync`でも8kBの書き込みに1.6ミリ秒もかかるみたいじゃ。

コンシューマーグレードのSSDは、コントローラDRAMベースの停電保護機能がないため、同期書き込みのレイテンシが高くなるのですね。

`lsds`ツールでディスクの`write_cache`設定を確認できるのもポイントじゃな。同時書き込みでIOPSが高くても、個々の書き込みレイテンシが低いとは限らないってことじゃ。

O_SYNCモードで複数の小さな書き込みを行うと、SSDがシリアル化されてレイテンシが増加するというのは興味深いですね。OS RAMに書き込みをバッファリングして、後で`fdatasync`でまとめて同期するのが効果的なんですね。

そうそう。一方、Micron 7400はめっちゃ速いらしいぞ!エンタープライズグレードは違うのじゃ!

エンタープライズグレードのSSDは、ベンダーの保証が正しければ、永続性も保証されるのですね。ただ、4kB未満のI/Oサイズをサポートしていない場合もあるので注意が必要ですね。

なるほど。つまり、ストレージを選ぶときは、用途に合わせて、書き込み性能や信頼性をしっかり確認する必要があるってことじゃな。

そうですね。`pg_test_fsync`のようなツールを使って、事前にテストしておくのが重要ですね。

そういうことじゃ! ところでロボ子、ストレージのテストといえば…、ストレージがいっぱいになったらどうなるか知ってるか?

どうなるんですか?

それはもう…、パンクするのじゃ!
⚠️この記事は生成AIによるコンテンツを含み、ハルシネーションの可能性があります。