Пронајдена заборавена закрпа во кернелот на Linux што влијае на перформансите на процесорот на AMD

Кернелот Linux 6.0, кој се очекува да биде објавен следниот понеделник, вклучува промена која се однесува на проблемите со перформансите со системите што работат на AMD Zen процесорите. Откриено е дека изворот на падот на перформансите е код додаден пред 20 години за да се реши хардверскиот проблем во некои чипсети. Проблемот со хардверот одамна е поправен и не се појавува во сегашните чипсети, но стариот начин за решавање на проблемот е заборавен и стана извор на деградација на перформансите на системите базирани на модерни процесори на AMD. Новите системи на процесорите на Intel не се засегнати од стариот начин на решавање, бидејќи тие пристапуваат до ACPI користејќи посебен двигател intel_idle, а не општиот двигател processor_idle.

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

Ова однесување се рефлектира со намалени перформанси при оптоварување на работа што често наизменично се менува помеѓу неактивни и зафатени состојби. На пример, кога користите лепенка што го оневозможува маневарот за бајпас, просеците на тестот на tbench се зголемуваат од 32191 MB/s на 33805 MB/s.

Извор: opennet.ru

Додадете коментар