I Linux 6.0, som slÀpps nÀsta mÄndag, har en förÀndring antagits som löser prestandaproblem för system med AMD Zen-processorer. KÀllan till prestandafallet var kod som lades till för 20 Är sedan för att kringgÄ ett hÄrdvaruproblem i vissa chipset. HÄrdvaruproblemet har lÀnge ÄtgÀrdats och förekommer inte i aktuella chipset, men den gamla lösningen har glömts bort och blivit en kÀlla till prestandaförlust i system baserade pÄ moderna AMD CPU:er. Nya system med Intel CPU:er pÄverkas inte av den gamla workaround, eftersom de har tillgÄng till ACPI via en separat drivrutin intel_idle, istÀllet för en gemensam drivrutin processor_idle.
Workaround-lösningen lades till i kÀrnan i mars 2002 för att blockera manifestationer av ett fel i chipsets relaterat till avsaknad av korrekt idle-lÀge pÄ grund av fördröjning i STPCLK#-signalbehandling. För att kringgÄ problemet i ACPI-implementeringen lades en extra WAIT-instruktion till, vilket saktade ner processorn för att chipset skulle hinna övergÄ till idle-lÀge. Profilering med hjÀlp av IBS (Instruction-Based Sampling) pÄ AMD Zen3-processorer har visat att processorn spenderar betydande tid pÄ att utföra en dummy-ÄtgÀrd som leder till felaktig tolkning av processorbelastning och tilldelning av djupare vilolÀgen (C-State) av cpuidle-hanteraren.
Ett sÄdant beteende resulterar i sÀnkt prestanda under belastningar dÀr idle- och busy-tillstÄnd ofta vÀxlar. Till exempel, nÀr en patch som inaktiverar workarounds anvÀndes, ökade de genomsnittliga resultaten i tbench-testet frÄn 32191 MB/s till 33805 MB/s.
KĂ€lla: opennet.ru
