Беше открита забравена корекция в ядрото на Linux, която засяга производителността на процесорите на AMD

Ядрото на Linux 6.0, което се очаква да бъде пуснато следващия понеделник, включва промяна, която адресира проблеми с производителността на системи, работещи на процесори AMD Zen. Установено е, че източникът на спада в производителността е код, добавен преди 20 години за заобикаляне на хардуерен проблем в някои чипсети. Хардуерният проблем отдавна е коригиран и не се появява в настоящите чипсети, но старото решение на проблема е забравено и се е превърнало в източник на влошаване на производителността на системи, базирани на модерни AMD CPU. Новите системи на процесори на Intel не са засегнати от старото решение, тъй като те осъществяват достъп до ACPI, използвайки отделен драйвер intel_idle, а не общия драйвер processor_idle.

Заобиколно решение беше добавено към ядрото през март 2002 г., за да се блокира появата на грешка в чипсети, свързана с неправилна настройка на състоянието на неактивност поради забавяне в обработката на STPCLK# сигнала. За да заобиколи проблема, изпълнението на ACPI добави допълнителна инструкция WAIT, която забавя процесора, така че чипсетът да има време да премине в неактивно състояние. При профилиране с помощта на IBS (Instruction-Based Sampling) инструкции на AMD Zen3 процесори, беше открито, че процесорът прекарва значително време в изпълнение на пънове, което води до неправилна интерпретация на състоянието на натоварване на процесора и настройка на по-дълбоки режими на заспиване (C- състояние) от процесора cpuidle.

Това поведение се отразява в намалена производителност при работни натоварвания, които често се редуват между неактивни и заети състояния. Например, когато използвате пач, който деактивира маневрата за байпас, средните стойности на tbench теста се увеличават от 32191 MB/s на 33805 MB/s.

Източник: opennet.ru

Добавяне на нов коментар