V jedru Linuxa je bil najden pozabljen popravek, ki vpliva na zmogljivost procesorja AMD

Linuxovo jedro 6.0, ki naj bi izšlo prihodnji ponedeljek, vključuje spremembo, ki odpravlja težave z zmogljivostjo procesorjev AMD Zen. Vir padca zmogljivosti je bila koda, dodana pred 20 leti, da bi se izognila težavi s strojno opremo v nekaterih čipsetih. Težava s strojno opremo je že dolgo odpravljena in se v trenutnih čipsetih ne pojavlja več, vendar je bila stara rešitev opuščena in je postala vir poslabšanja zmogljivosti v sistemih, ki temeljijo na sodobnih procesorjih AMD. Novejši sistemi z Intelovimi procesorji niso prizadeti zaradi stare rešitve, saj dostopajo do ACPI z uporabo ločenega gonilnika intel_idle in ne z deljenim gonilnikom processor_idle.

Marca 2002 je bila jedru dodana rešitev, ki je preprečila napako v čipih, povezano z nezmožnostjo pravilne nastavitve stanja mirovanja zaradi zakasnitve pri obdelavi signala STPCLK#. Da bi se tej težavi izognili, je bila implementaciji ACPI dodana dodatna instrukcija WAIT, ki je upočasnila procesor, da je čip lahko prešel v stanje mirovanja. Profiliranje z uporabo instrukcij na osnovi vzorčenja (IBS) na procesorjih AMD Zen3 je pokazalo, da procesor porabi veliko časa za izvajanje zaporednega ukaza (stub), kar vodi do napačne interpretacije obremenitve procesorja in nastavitve globljih načinov mirovanja (C-States) s strani upravljalnika cpuidle.

To vedenje se odraža v padcu zmogljivosti pri obremenitvah, ki se pogosto izmenjujejo med stanjem mirovanja in zasedenosti. Na primer, pri uporabi popravka, ki onemogoči to rešitev, se povprečni rezultati primerjalnega testa tbench povečajo z 32191 MB/s na 33805 MB/s.

Vir: opennet.ru

Dodaj komentar