概要
- Linux 7.0開発カーネル でPostgreSQLのスループットが約半分に低下
- 原因は プリエンプションモードの制限 によるユーザースペーススピンロック滞留時間の増加
- Amazon/AWSエンジニア がリグレッションを報告
- カーネル側は PREEMPT_NONE 復活パッチを提案も採用は不透明
- PostgreSQL側の対応 (RSEQ拡張利用)が推奨される流れ
Linux 7.0によるPostgreSQLパフォーマンス低下問題
- Amazon/AWSのSalvatore Dipietro がLinux 7.0カーネルでのPostgreSQLの スループットとレイテンシの悪化 を報告
- Graviton4サーバー上で 従来カーネルの約0.51倍 までスループットが減少
- ユーザースペーススピンロック での待機時間が大幅に増加
- 問題の原因は プリエンプションモード制限 (PREEMPT_NONE廃止)への変更
- この変更は Linux 7.0スケジューラアップデート の一環として導入
カーネル開発側の対応と議論
- Linux kernel mailing list でPREEMPT_NONEをデフォルトに戻すパッチが投稿
- しかし、 Peter Zijlstra (元コード作者)は PostgreSQL側のRSEQ拡張対応 を推奨
- RSEQ(Restartable Sequences)time slice extensionは Linux 7.0で上流化
- 「PostgreSQLがRSEQ拡張を利用すれば、ロック保持者のプリエンプションの影響が軽減可能」との見解
- カーネル側での根本的な巻き戻しは 現時点で否定的
今後への影響
- PostgreSQLのアップデート が行われない限り、Linux 7.0安定版環境下で パフォーマンス低下が持続
- Linux 7.0は Ubuntu 26.04 LTS などの基盤カーネルとしても採用予定
- PostgreSQLユーザーは アップデートの必要性 や 回避策の検討 が求められる状況