Обходной путь чипсета 20-летней давности вредит современным Linux-системам AMD

AMD --

Инженер AMD K Prateek Nayak недавно обнаружил, что обходной путь набора микросхем в ядре Linux, которому около 20 лет, который все еще применяется к современным системам AMD, в некоторых случаях ответственен за снижение производительности на современном оборудовании Zen. К счастью, уже готово исправление, позволяющее ограничить этот обходной путь старыми системами и, в свою очередь, повысить производительность современных систем.

На прошлой неделе был опубликован патч для кода бездействия процессора ACPI, чтобы избежать обходного пути старого чипсета в современных системах AMD Zen. С тех пор как в 2002 году в ядро ​​Linux была добавлена ​​поддержка ACPI, для некоторых наборов микросхем, в которых STPCLK# не устанавливается вовремя, существует «фиктивная операция ожидания». Фиктивное чтение ввода-вывода задерживает дальнейшую обработку инструкций до полной остановки ЦП. Это было проблемой, по крайней мере, для некоторых систем эпохи AMD Athlon с чипсетом VIA… Но не для более новых чипсетов примерно последних двух десятилетий.


Обходной путь ядра Linux за последние два десятилетия, предназначенный для устаревших наборов микросхем, все еще без необходимости применяется к современным системам AMD, что, в свою очередь, может снизить производительность в некоторых рабочих нагрузках.

Поскольку этот обходной путь все еще применяется даже к современным системам AMD, K Prateek Nayak обнаружил:

Выборка определенных рабочих нагрузок с IBS в системе AMD Zen3 показывает, что значительное количество времени тратится на фиктивную операцию, которая ошибочно учитывается как резидентность C-State. Большое значение резидентности C-State может привести к тому, что регулятор процессора порекомендует более глубокое C-State во время последующих экземпляров бездействия, запуская порочный круг, приводящий к снижению производительности при рабочих нагрузках, которые быстро переключаются между фазами занятости и простоя.

Одной из таких рабочих нагрузок является tbench, где во время определенных запусков можно наблюдать значительное снижение производительности.

По крайней мере, для Tbench этот давний безоговорочный обходной путь в ядре Linux снижает производительность AMD Ryzen/Threadripper/EPYC в некоторых рабочих нагрузках:

Этот обходной путь не затронул современные системы Intel, поскольку эти более новые платформы Intel вместо этого используют альтернативный путь кода драйвера intel_idle на основе MWAIT.

Патч AMD превратился в этот патч инженером Intel Linux Дэйвом Хансеном. Этот патч, ограничивающий обходной путь «фиктивного ожидания» для старых систем, уже поставлен в очередь в ветке TIP x86/urgent. Поскольку он идет по маршруту «x86/срочно» и исправляет чрезмерно усердный обходной путь, который не нужен на современном оборудовании, вполне вероятно, что этот патч будет представлен на этой неделе все еще для ядра Linux 6.0, а не ждать до следующего ( v6.1) окно слияния.

.

Leave a Comment