Im Linux-Kernel 6.0, dessen Veröffentlichung fĂŒr nĂ€chsten Montag geplant ist, wurde eine Ănderung vorgenommen, die Leistungsprobleme bei Systemen mit AMD Zen-Prozessoren behebt. Der Grund fĂŒr die LeistungseinbuĂen war ein Code, der vor 20 Jahren hinzugefĂŒgt wurde, um ein Hardwareproblem in bestimmten ChipsĂ€tzen zu umgehen. Dieses Hardwareproblem ist lĂ€ngst behoben und zeigt sich nicht mehr in aktuellen ChipsĂ€tzen, aber der alte Workaround wurde vergessen und fĂŒhrte zu einer Verringerung der Leistung bei Systemen, die auf modernen AMD-CPUs basieren. Neue Systeme mit Intel-CPUs sind von diesem alten Workaround nicht betroffen, da der Zugriff auf ACPI dort ĂŒber einen speziellen Treiber namens intel_idle und nicht ĂŒber den allgemeinen Treiber processor_idle erfolgt.
Der Umgehungsbefehl wurde im MĂ€rz 2002 in den Kernel integriert, um das Auftreten eines Fehlers in ChipsĂ€tzen zu blockieren, der durch das Fehlen einer korrekten Leerlaufkonfiguration (idle) aufgrund von Verzögerungen bei der Verarbeitung des Signals STPCLK# verursacht wurde. Um das Problem in der ACPI-Implementierung zu umgehen, wurde ein zusĂ€tzlicher WAIT-Befehl hinzugefĂŒgt, der die CPU verlangsamt, damit der Chipsatz in den Leerlaufzustand wechseln kann. Bei Profilierung mit Hilfe von IBS (Instruction-Based Sampling) auf AMD-Zen3-Prozessoren stellte man fest, dass die CPU erheblich Zeit mit der AusfĂŒhrung von Stille-Operationen verbringt, was zu einer falschen Interpretation des CPU-Belastungszustands fĂŒhrt und tiefere Schlafmodi (C-State) vom cpuidle-Handler gesetzt werden.
Ein solches Verhalten Ă€uĂert sich in einer verminderten Leistung bei Lasten, die hĂ€ufig zwischen LeerlaufzustĂ€nden (idle) und AktivitĂ€tszustĂ€nden (busy) wechseln. Beispielsweise steigen bei Verwendung eines Patches, der den Umgehungsbefehl deaktiviert, die Durchschnittswerte des tbench-Tests von 32191 MB/s auf 33805 MB/s.
Quelle: opennet.ru
