Een 20 jaar oude chipset-oplossing heeft moderne AMD Linux-systemen pijn gedaan

AMD --

AMD-ingenieur K Prateek Nayak heeft onlangs ontdekt dat een ~ 20 jaar oude chipset-oplossing in de Linux-kernel die nog steeds wordt toegepast op moderne AMD-systemen, in sommige gevallen verantwoordelijk is voor de prestaties op moderne Zen-hardware. Gelukkig is er een oplossing onderweg om die tijdelijke oplossing te beperken tot oude systemen en op zijn beurt te helpen met de prestaties voor moderne systemen.

Vorige week werd een patch gepost voor de ACPI-processor inactieve code om een ​​oude chipset-oplossing op moderne AMD Zen-systemen te voorkomen. Sinds ACPI-ondersteuning werd toegevoegd aan de Linux-kernel in 2002, is er een “dummy wait-op” geweest om sommige chipsets aan te pakken waarbij STPCLK# niet op tijd wordt bevestigd. De dummy I/O-lezing vertraagt ​​verdere instructieverwerking totdat de CPU volledig is gestopt. Dit was een probleem met tenminste sommige AMD Athlon-tijdperk systemen met een VIA-chipset… Maar geen probleem met nieuwere chipsets van ongeveer de afgelopen twee decennia.


Een Linux-kerneloplossing voor de afgelopen twee decennia, bedoeld voor nu oude chipsets, wordt nog steeds onnodig toegepast op moderne AMD-systemen, wat op zijn beurt de prestaties in bepaalde workloads kan schaden.

Nu deze tijdelijke oplossing nog steeds wordt toegepast op zelfs moderne AMD-systemen, ontdekte K Prateek Nayak:

Het samplen van bepaalde workloads met IBS op het AMD Zen3-systeem laat zien dat er een aanzienlijke hoeveelheid tijd wordt doorgebracht in de dummy-operatie, die ten onrechte wordt geteld als C-State-residentie. Een hoge C-State residency-waarde kan de cpuidle-gouverneur ertoe aanzetten om een ​​diepere C-State aan te bevelen tijdens de daaropvolgende inactieve instanties, waardoor een vicieuze cirkel ontstaat, wat leidt tot prestatievermindering op workloads die snel schakelen tussen drukke en inactieve fasen.

Een dergelijke workload is tbench waar een enorme prestatievermindering kan worden waargenomen tijdens bepaalde runs.

In ieder geval voor Tbench heeft deze langdurige, onvoorwaardelijke oplossing in de Linux-kernel de prestaties van AMD Ryzen / Threadripper / EPYC in bepaalde workloads geschaad:

Deze tijdelijke oplossing heeft geen invloed gehad op moderne Intel-systemen, aangezien die nieuwere Intel-platforms in plaats daarvan het alternatieve op MWAIT gebaseerde intel_idle-stuurprogrammacodepad gebruiken.

De AMD-patch evolueerde naar deze patch door Intel Linux-ingenieur Dave Hansen. Die patch om de “dummy-wacht”-oplossing tot oude systemen te beperken, is al in de wachtrij geplaatst in de x86/urgent-tak van TIP. Omdat het de route van “x86/urgent” volgt en voor het repareren van een overijverige tijdelijke oplossing die niet nodig is op moderne hardware, is het waarschijnlijk dat deze patch deze week nog steeds voor de Linux 6.0-kernel zal worden ingediend in plaats van te moeten wachten tot de volgende ( v6.1) samenvoegvenster.

Leave a Comment