Vergeten patch gevonden in de Linux-kernel die de CPU-prestaties van AMD beïnvloedt

De Linux 6.0-kernel, die volgende week maandag uitkomt, bevat een wijziging die prestatieproblemen met AMD Zen-processors aanpakt. De oorzaak van de prestatiedaling was code die 20 jaar geleden werd toegevoegd om een ​​hardwareprobleem in sommige chipsets te omzeilen. Het hardwareprobleem is al lang opgelost en komt niet voor in huidige chipsets, maar de oude workaround is vergeten en is de oorzaak geworden van prestatievermindering op systemen gebaseerd op moderne AMD CPU's. Nieuwere systemen gebaseerd op Intel CPU's hebben geen last van de oude workaround, omdat ze toegang hebben tot ACPI via een aparte intel_idle driver, niet de algemene processor_idle driver.

In maart 2002 werd een tijdelijke oplossing aan de kernel toegevoegd om een ​​bug in chipsets te blokkeren waarbij de inactieve status niet correct werd ingesteld vanwege een vertraging in de verwerking van het STPCLK#-signaal. Om dit probleem te omzeilen, werd een extra WAIT-instructie toegevoegd aan de ACPI-implementatie, waardoor de processor vertraagd werd en de chipset tijd had om in de inactieve status te komen. Bij het profileren met behulp van Instruction-Based Sampling (IBS)-instructies op AMD Zen3-processors, bleek dat de processor aanzienlijk veel tijd besteedde aan het uitvoeren van een stub, wat leidde tot een onjuiste interpretatie van de processorbelasting en het instellen van diepere slaapstanden (C-State) door de cpuidle-handler.

Dit gedrag wordt weerspiegeld in een afname van de prestaties bij belasting die vaak wisselt tussen inactieve en actieve toestanden. Bij gebruik van een patch die de tijdelijke oplossing uitschakelt, stijgt de gemiddelde tbench-benchmark bijvoorbeeld van 32191 MB/s naar 33805 MB/s.

Bron: opennet.ru

Voeg een reactie