Glemt patch fundet i Linux-kernen, der påvirker AMD CPU-ydeevne

Linux 6.0-kernen, der forventes at blive frigivet næste mandag, inkluderer en ændring, der løser ydeevneproblemer med systemer, der kører på AMD Zen-processorer. Kilden til ydelsesfaldet viste sig at være kode tilføjet for 20 år siden for at løse et hardwareproblem i nogle chipsæt. Hardwareproblemet er for længst rettet og optræder ikke i de nuværende chipsæt, men den gamle løsning på problemet er glemt og er blevet en kilde til ydeevneforringelse på systemer baseret på moderne AMD CPU'er. Nye systemer på Intel CPU'er påvirkes ikke af den gamle løsning, da de får adgang til ACPI ved hjælp af en separat intel_idle driver og ikke den generelle processor_idle driver.

En løsning blev føjet til kernen i marts 2002 for at blokere forekomsten af ​​en fejl i chipsæt, der er forbundet med ikke korrekt indstilling af inaktiv tilstand på grund af en forsinkelse i behandlingen af ​​STPCLK#-signalet. For at omgå problemet tilføjede ACPI-implementeringen en ekstra WAIT-instruktion, som gør processoren langsommere, så chipsættet når at gå i inaktiv tilstand. Ved profilering ved hjælp af IBS (Instruction-Based Sampling) instruktioner på AMD Zen3-processorer, blev det opdaget, at processoren bruger en betydelig mængde tid på at udføre stubs, hvilket fører til en forkert fortolkning af processorbelastningstilstanden og indstilling af dybere dvaletilstande (C- State) af processor-cpuidlen.

Denne adfærd afspejles i reduceret ydeevne under arbejdsbelastninger, der ofte veksler mellem inaktiv og optaget tilstand. For eksempel, når du bruger en patch, der deaktiverer bypass-manøvren, stiger tbench-testgennemsnittene fra 32191 MB/s til 33805 MB/s.

Kilde: opennet.ru

Tilføj en kommentar