Linux 6.1 Lands Revert für „riesige Performance-Regressionen“ aus drei Codezeilen

Vor dem Linux-6.1-rc8-Kernel, den Linus Torvalds voraussichtlich in Kürze veröffentlichen wird, anstatt direkt zum stabilen Linux 6.1 zu springen, wurde glücklicherweise ein Rollback für eine kleine Änderung erkannt, die in einigen Bereichen zu „großen Leistungsrückgängen“ führte, und rückgängig gemacht.

Für das Zusammenführungsfenster von Linux 6.1 wurde eine Speicherverwaltungsänderung vorgenommen, um größere anonyme Zuordnungen mit den THP-Grenzwerten in Einklang zu bringen. Das verpflichten begründet:

„Snapen Sie größere anonyme Speicherzuordnungen an THP-Grenzen, indem Sie thp_get_unmapped_area durchlaufen, wenn THPs für den aktuellen Prozess aktiviert sind.

Mit diesem Fix werden größere anonyme Zuordnungen jetzt mit THP ausgerichtet. Wenn eine Malloc-Bibliothek eine Arena von 2 MB oder mehr zuweist, kann diese Arena jetzt von Anfang an mit THPs abgebildet werden, was zu besseren TLB-Trefferraten und einer besseren Laufzeit führen kann.“

Es stellte sich jedoch heraus, dass die drei geänderten Codezeilen die Leistung des Linux-6.1-Kernels in einigen Bereichen beeinträchtigten.

Kernel-Tests von Intel gefunden 95% Rückfall in einem der Will-it-Scale-Benchmarks, der auf diese Änderung zurückgeht. Diese Referenz ist nicht besonders real, aber sie gibt Anlass zur Sorge, dass andere Userspace-Workloads (reale Welt) ebenfalls betroffen sein könnten und noch nicht auf Linux-Entwicklungs-Builds getestet wurden.

Auch der Linux-Entwickler Nathan Chancellor berichtete eine große Regression der Kernel-Build-Zeiten dieser anfänglichen Änderung. Um alle seine Kernel-Versionen auf einer Threadripper 3990X-Workstation zu erstellen, dauerte es von 2 Stunden und 20 Minuten auf über 3 Stunden … Oder für eine x86_64 allmodconfig-Version von 318 Sekunden auf 406 Sekunden. Eine ziemlich deutliche Verlangsamung der Kernel-Build-Zeiten, zusätzlich zu dem von Intel-Benchmarks festgestellten Rückgang der Laufzeitleistung. In der Zwischenzeit hatte die anfängliche Änderung dazu beigetragen, die Build-Zeiten des GCC-basierten Kernels zu verkürzen, indem sie ihn um etwa 2 % schneller machte.

READ  Öffnen Sie Ihre Apple Watch Ultra nicht

Linus Torvalds hat sich vorerst dazu entschieden umgekehrter 3-zeiliger Patch mit dem umzugehen, was er „große Leistungsregressionen“ nennt, bis diese Situation besser triagiert werden kann, um große Regressionen zu vermeiden.

Schreibe einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert