Ein Ingenieur von Amazon hat eine spezifische Regression im Linux-Kernel 7.0 identifiziert, dessen Veröffentlichung am 13. April erwartet wird. Ănderungen an den Einstellungen des Taskplaners fĂŒhrten zu einem erheblichen RĂŒckgang der Bandbreite und ReaktionsfĂ€higkeit beim Einsatz von PostgreSQL auf ARM64-Systemen. Bei der Verwendung des Kernels 7.0 sanken die Leistungswerte im pgbench-Test âsimple-updateâ fast um die HĂ€lfte â von 98565 auf 50751.
Die Verlangsamung wurde durch die Ănderung des Preemption-Modus im Standardplaner von PREEMPT_NONE auf PREEMPT_LAZY auf Architekturen, die diesen Modus unterstĂŒtzen, verursacht, was dazu fĂŒhrte, dass PostgreSQL im Benutzerspeicher 55 % der CPU-Zeit fĂŒr den Aufruf von s_lock() benötigte. Um das Problem zu lösen, wurde vorgeschlagen, den PREEMPT_NONE-Modus wieder standardmĂ€Ăig einzustellen und seine Bindung an die Einstellung ARCH_NO_PREEMPT aufzuheben.
Peter Zijlstra, der Autor der Ănderungen, die die Regression verursacht haben, und Maintainer des Taskplaners sowie verwandter Subsysteme des Kernels, erklĂ€rte, dass die Korrektur im PostgreSQL-Code vorgenommen werden mĂŒsse. Um den Leistungsabfall zu beheben, empfahl er die Verwendung des im Kernel neu hinzugefĂŒgten ârseq sliceâ-Erweiterung (Restartable Sequences) in PostgreSQL, um die Wahrscheinlichkeit der Preemption des Lock-Inhabers zu begrenzen.
Es ist noch unklar, welche Entscheidung Linus Torvalds treffen wird, da er der Regel folgt, dass der Kernel die Leistung nicht beeintrĂ€chtigen und die KompatibilitĂ€t mit dem Benutzerspeicher nicht brechen sollte. Einerseits befindet sich der Kernel 7.0 in der finalen Testphase vor der Veröffentlichung, und das ZurĂŒcksetzen der Einstellungen des Planers könnte zu anderen Regressionen fĂŒhren, andererseits könnten Benutzer mit einem zweifachen Leistungsabfall einer der beliebtesten Datenbanken konfrontiert werden.
Quelle: opennet.ru
