Postgres is half as fast in Linux 7.0, and we always knew why
3-Second Blueprint (English)
- Linux 7.0 altered default kernel-mode preemption behavior, causing busy database system calls to be context-switched far more frequently.
- Because PostgreSQL spawns separate OS processes rather than threads, thousands of backends maintain isolated page tables for shared buffers.
- Frequent preemption across massive 400 GB shared buffers with tiny 4 KB pages triggers severe page faults and TLB cache thrashing.
Kernel PreemptionTLB MissesProcesses vs ThreadsLinux HugePages
3-Sekunden-Fazit (Deutsch)
- Linux 7.0 änderte die Vorgabe für Kernel-Präemption, wodurch aktive Systemaufrufe der Datenbank deutlich häufiger unterbrochen werden.
- Da PostgreSQL separate Betriebssystemprozesse statt Threads nutzt, verwaltet jeder Worker eine eigene Seitentabelle für gemeinsame Puffer.
- Häufige Kontextwechsel auf großen Shared-Buffern mit kleinen 4-KB-Speicherseiten erzeugen massive Seitenfehler und leeren ständig den TLB.
Kernel-PräemptionTLB-FehlzugriffeProzesse vs. ThreadsLinux HugePages
Note / Hinweis: Blueprints are AI-generated educational summaries (0% Politics · 0% Religion · 0% Brainrot) and do not constitute medical, legal, or financial advice. / KI-generierte Zusammenfassung zu Bildungszwecken – ersetzt keine medizinische, rechtliche oder finanzielle Fachberatung.