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

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

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

Това поведение се отразява в спад в производителността при натоварвания, които често се редуват между състояния на покой и заетост. Например, когато се използва пач, който деактивира заобиколното решение, средните резултати от tbench benchmark се увеличават от 32 191 MB/s на 33 805 MB/s.

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

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