Asayomu Tech
注目★★★★★Lobsters

PostgreSQL ベンチマーク低下は設定ミス、Linux 7.0 カーネルは無実

30秒で把握

  • 1Linux 7.0 の PREEMPT_NONE 廃止で PostgreSQL スループット 0.51 倍に低下と報道されたが、回帰は 4KB ページ+大規模共有メモリ環境での spinlock 内ページフォルト拡大が主因
  • 2ほぼ全ユーザーはカーネルアップグレード延期不要、huge_pages 有効化でページフォルト ~31M→~61K-120 に激減して低下は消失
  • 3ベンチマークが非現実的な 96 vCPU + 1,024 クライアント設定を使用、本番環境の shared_buffers マッピング方式とワークロードで個別評価すべき

要約

AWS のベンチマークで Linux 7.0 上の PostgreSQL スループットが 6.x 比 0.51 倍に低下した報告が話題になったが、実態は設定の問題であり、ほぼ全ユーザーはカーネルアップグレード延期の必要がない。回帰の根本原因は、96 vCPU マシンで 4KB ページ上の 100GB 超の共有メモリを使う際、バッファマネージャの spinlock 内でマイナーページフォルトが発生し、Linux 7.0 の PREEMPT_LAZY 化がその可視化を 2 倍に拡大した点にある。huge_pages を有効化すればページフォルトが ~31M から ~61K-120 に劇減してスループット低下は消失する。

あなたへの影響

ベンチマークが非現実的な設定 (4KB ページ + 大規模共有メモリ + 1,024 クライアント同時接続) を使っていたため、大多数の本番 PostgreSQL 環境では影響を受けない。

推奨:カーネルアップグレード判断は shared_buffers のマッピング方式 (huge_pages の状態) とワークロード特性で評価し、根拠なくカーネルバージョンを固定する必要はない。

詳細を読む → 元記事へ※ 本文は元記事をご確認ください (asayomu は要約のみ提供)

関連する記事

※ 外部記事の権利は原著作者に帰属します。著作権削除要請は copyright@asayomu.jp までご連絡ください(受領確認 24h・実処理 72h 以内)。