2026-04-05
2026-04-04←前 次→2026-04-06
PostgreSQL, スピンロック
joho_no_todai
Linux 7.0でPostgreSQLの性能がほぼ半減。
AWSエンジニアがGraviton4上で実測し、カーネルのプリエンプション変更が原因と特定した。
開発者の回答は「PostgreSQL側で対応しろ」。
リバートの見込みは薄く、Ubuntu 26.04 LTSにはこのまま載る。
カーネルの「改善」がアプリを壊し、修正をアプリ側に求める。
Linux 7.0でPostgreSQL性能半減、修正困難か
kosaki55tea
色々な面でコメントしたくなるな
・カーネル開発者はもう20年ぐらいPostgreSQL開発者にユーザーランドのspinlockは正気じゃないから考え直して欲しいと繰り返し要求していた
・linux kernel summitにPostgreSQL開発者を招待してディスカッションしたがうまくいかなかった。平行線というよりもPostgreSQL側が今こうなっている、実装したときはそれが一番性能よかったという話に終始していて、会話があまり建設的ではなかったと思う
・記事には「PostgreSQLはプロセスモデルを採用しており、共有メモリ上のデータ構造へのアクセスにユーザースペーススピンロックを多用する。」と書かれているが、マルチプロセスというのとスピンロックでないといけないは論理的につながらないと思う。なにか書き忘れてない?
・記事ではUbuntu 26.04 LTSへの影響を気にしているが、最近のUbuntuはPREEMT_DYNAMICかつデフォルトがpreempt voluntaryなので、影響ないのではないか?元々のバグ報告にあるAmaxonLinux2023はPREEMPT_NONEだから影響有るけど。RHELもRHEL9からPREEMPT_DYNAMICなので影響ないっぽい。SUSEも影響ないっぽいな。なら実質困るのはAmazon Linuxユーザーだけ??
・それはそれとして、PREEMPT_NONEはサーバー用distroで長らく使われてきた決してマイナーではないオプション
・なんだけど、peterはRed Hatにいた時代から -rtチームにいて、PREEMPT_NONEには当たりがキツかった。
どの視点でも面白いディスカッションが出来そうだな、と思ったところで、興味MPが切れたので、ただの感想を投下して逃げる。
おやすみなさい
スピンロックにも様々な種類があることが分かった
スピンロック
Spinlocks - Part 6 | CoffeeBeforeArch.github.io
qrwlock
queued reader-writer locks
qrwlock: Introducing a queue read/write lock implementation 【LWN.net】
Eliminating rwlocks and IRQF_DISABLED 【LWN.net】
linux/include/asm-generic/qrwlock.h at master · torvalds/linux
qspinlock
queued spinlocks
LXR linux/arch/x86/include/asm/qspinlock.h
Linux中的spinlock机制【三】 - qspinlock - 知乎
Ticket Spinlock
Ticket spinlockメモ φ(.. )メモシテオコウ - φ(・・*)ゞ ウーン カーネルとか弄ったりのメモ
linux/include/asm-generic/ticket_spinlock.h at master · torvalds/linux
Ticket lock - Wikipedia
Computational Trilogy
『Introduction to Higher Order Categorical Logic』
カテゴリー理論とプログラミング : カルテシアン閉カテゴリー
マグニチュード
マグニチュードとは何か | MaruLabo
大規模分散システム
大規模分散システムの現在 — GFS, MapReduce, BigTableは、どう進化したか | MaruLabo
#日誌