Pamirštas pleistras, rastas Linux branduolyje, turintis įtakos AMD procesoriaus našumui

„Linux 6.0“ branduolys, kurį tikimasi išleisti kitą pirmadienį, apima pakeitimą, kuris išsprendžia sistemos, veikiančios AMD Zen procesoriais, našumo problemas. Nustatyta, kad našumo sumažėjimo šaltinis buvo kodas, pridėtas prieš 20 metų, siekiant išspręsti kai kurių mikroschemų rinkinių aparatinės įrangos problemą. Techninės įrangos problema jau seniai išspręsta ir nerodoma dabartiniuose mikroschemų rinkiniuose, tačiau senasis problemos sprendimas buvo pamirštas ir tapo sistemų, pagrįstų moderniais AMD procesoriais, našumo pablogėjimo šaltiniu. Naujoms „Intel“ procesorių sistemoms senasis sprendimas neturi įtakos, nes jos pasiekia ACPI naudodami atskirą „intel_idle“ tvarkyklę, o ne bendrą „procesor_idle“ tvarkyklę.

2002 m. kovo mėn. branduoliui buvo pridėtas sprendimas, skirtas blokuoti mikroschemų rinkinių klaidą, susijusią su netinkamu tuščiosios eigos būsenos nustatymu dėl vėlavimo apdorojant STPCLK# signalą. Norėdami išspręsti problemą, ACPI diegimas pridėjo papildomą WAIT instrukciją, kuri sulėtina procesorių, kad mikroschemų rinkinys turėtų laiko pereiti į tuščiosios eigos būseną. Profiliuojant naudojant IBS (instrukcijomis pagrįsto mėginių ėmimo) instrukcijas AMD Zen3 procesoriuose, buvo nustatyta, kad procesorius daug laiko praleidžia vykdydamas stubus, todėl neteisingai interpretuojama procesoriaus apkrovos būsena ir nustatomi gilesni miego režimai (C-State). procesoriaus cpuidle.

Šis elgesys atsispindi sumažėjusiu našumu esant darbo krūviams, kurie dažnai kinta tarp neaktyvios ir užimtos būsenos. Pavyzdžiui, naudojant pataisą, kuri išjungia aplinkkelio manevrą, tbench testo vidurkiai padidėja nuo 32191 MB/s iki 33805 MB/s.

Šaltinis: opennet.ru

Добавить комментарий