Det ble funnet en glemt oppdatering i Linux-kjernen som påvirker ytelsen til AMD-prosessorer

Linux 6.0-kjernen, som forventes å bli utgitt neste mandag, inkluderer en endring som adresserer ytelsesproblemer med systemer som kjører på AMD Zen-prosessorer. Kilden til ytelsesfallet ble funnet å være kode lagt til for 20 år siden for å omgå et maskinvareproblem i enkelte brikkesett. Maskinvareproblemet har lenge vært løst og vises ikke i nåværende brikkesett, men den gamle løsningen for problemet er glemt og har blitt en kilde til ytelsesforringelse på systemer basert på moderne AMD CPUer. Nye systemer på Intel CPUer påvirkes ikke av den gamle løsningen, siden de får tilgang til ACPI ved å bruke en separat intel_idle-driver, og ikke den generelle processor_idle-driveren.

En løsning ble lagt til kjernen i mars 2002 for å blokkere forekomsten av en feil i brikkesett assosiert med ikke riktig innstilling av inaktiv tilstand på grunn av en forsinkelse i behandlingen av STPCLK#-signalet. For å omgå problemet la ACPI-implementeringen til en ekstra WAIT-instruksjon, som bremser prosessoren slik at brikkesettet har tid til å gå inn i en inaktiv tilstand. Ved profilering ved bruk av IBS (Instruction-Based Sampling)-instruksjoner på AMD Zen3-prosessorer, ble det oppdaget at prosessoren bruker en betydelig mengde tid på å utføre stubber, noe som fører til en feilaktig tolkning av prosessorens belastningstilstand og innstilling av dypere hvilemodus (C- State) av prosessorens cpuidle.

Denne oppførselen gjenspeiles i redusert ytelse under arbeidsbelastninger som ofte veksler mellom inaktiv og opptatt tilstand. For eksempel, når du bruker en oppdatering som deaktiverer bypass-manøveren, øker tbench-testgjennomsnittet fra 32191 MB/s til 33805 MB/s.

Kilde: opennet.ru

Legg til en kommentar