Zaboravljena zakrpa pronađena u Linux kernelu koja utiče na performanse AMD CPU-a

Linux 6.0 kernel, čije se izdanje očekuje sljedećeg ponedjeljka, uključuje promjenu koja se bavi problemima performansi sa sistemima koji rade na AMD Zen procesorima. Utvrđeno je da je izvor pada performansi kod koji je dodat prije 20 godina kako bi se riješio hardverski problem u nekim skupovima čipova. Hardverski problem je odavno riješen i ne pojavljuje se u trenutnim čipsetima, ali staro rješenje za problem je zaboravljeno i postalo je izvor degradacije performansi na sistemima baziranim na modernim AMD CPU-ima. Na nove sisteme na Intelovim CPU-ima ne utiče staro zaobilazno rešenje, pošto pristupaju ACPI-ju pomoću posebnog drajvera intel_idle, a ne opšteg drajvera processor_idle.

Zaobilazno rješenje je dodato kernelu u martu 2002. kako bi se blokiralo pojavljivanje greške u skupovima čipova povezanih s neispravnim postavljanjem stanja mirovanja zbog kašnjenja u obradi STPCLK# signala. Da bi se zaobišao problem, implementacija ACPI dodala je dodatnu WAIT instrukciju, koja usporava procesor tako da čipset ima vremena da pređe u stanje mirovanja. Prilikom profiliranja pomoću IBS (Instruction-Based Sampling) instrukcija na AMD Zen3 procesorima, otkriveno je da procesor troši značajnu količinu vremena na izvršavanje stubova, što dovodi do pogrešne interpretacije stanja opterećenja procesora i postavljanja dubljeg režima mirovanja (C- State) od strane procesora cpuidle.

Ovo ponašanje se ogleda u smanjenoj izvedbi pod radnim opterećenjima koja se često mijenjaju između stanja mirovanja i zauzetosti. Na primjer, kada koristite zakrpu koja onemogućuje manevar zaobilaženja, prosječni rezultati testa na tbench testu se povećavaju sa 32191 MB/s na 33805 MB/s.

izvor: opennet.ru

Dodajte komentar