W jądrze Linux odkryto zapomnianą łatkę wpływającą na wydajność procesorów AMD.

W jądrze Linux 6.0, którego wydanie planowane jest na przyszły poniedziałek, wprowadzono zmianę rozwiązującą problemy z wydajnością systemów na procesorach AMD Zen. Źródłem spadku wydajności był kod dodany 20 lat temu, który miał na celu obejście problemu sprzętowego w niektórych chipsetach. Problem sprzętowy został dawno rozwiązany i nie pojawia się w aktualnych chipsetach, ale stara obejście problemu zostało zapomniane i stało się źródłem obniżenia wydajności w systemach na bazie nowoczesnych CPU AMD. Nowe systemy na CPU Intel nie dotykają starego obejścia, ponieważ dostęp do ACPI odbywa się za pomocą oddzielnego sterownika intel_idle, a nie wspólnego sterownika processor_idle.

Obejście zostało dodane do jądra w marcu 2002 roku w celu zablokowania występowania błędu w chipsetach związanym z brakiem odpowiedniego ustawienia stanu bezczynności (idle) z powodu opóźnienia w przetwarzaniu sygnału STPCLK#. Aby obejść problem w realizacji ACPI dodano dodatkową instrukcję WAIT, spowalniającą procesor, aby chipset miał czas na przejście w stan bezczynności. Podczas profilowania przy użyciu instrukcji IBS (Instruction-Based Sampling) na procesorach AMD Zen3 stwierdzono, że procesor spędza znaczną ilość czasu wykonując dumpa, co prowadzi do błędnej interpretacji stanu obciążenia procesora i wystawiania głębszych stanów snu (C-State) przez przetwornik cpuidle.

Takie zachowanie przekłada się na spadek wydajności w obciążeniach, w których często zmieniają się stany bezczynności (idle) i aktywności (busy). Na przykład, przy użyciu poprawki dezaktywującej obejście, średnie wyniki testu tbench wzrastają z 32191 MB/s do 33805 MB/s.

Źródło: opennet.ru

Kup solidny hosting stron z ochroną przed DDoS, serwery VPS VDS 🔥 Kup solidny hosting stron z ochroną przed DDoS, serwery VPS VDS | ProHoster