
Гетти Изображений
AMD прошла долгий путь с 2002 года, но ядро Linux по-прежнему относится к современным Threadripper как к системам эпохи Athlon — по крайней мере, в одном аспекте, который потенциально может вызвать отставание.
Инженер AMD Пратик Наяк (Prateek Nayak) недавно представил патч для драйверов бездействия процессоров Linux, который «пропускает фиктивное ожидание для процессоров на основе микроархитектуры Zen». Когда в 2002 году в ядро Linux была добавлена поддержка ACPI (написанная Энди Гровером и зафиксированная Линусом Торвальдсом), она включала «фиктивную операцию ожидания». По сути, система считывала данные без какой-либо другой цели, кроме задержки следующей инструкции до тех пор, пока ЦП не сможет полностью остановиться с помощью команды STPCLK#. Это позволило обеспечить некоторую экономию энергии и совместимость в первые дни реализации ACPI, когда некоторые наборы микросхем не переходили в состояние ожидания, когда этого можно было ожидать.
Но современные чипы AMD на базе Zen не нуждаются в этом обходном пути, и, как пишет Наяк, это вредит им, по крайней мере, при определенных рабочих нагрузках в Linux. Тестирование рабочих нагрузок с выборкой на основе инструкций (IBS) показывает, что «значительное количество времени тратится на фиктивную операцию, которая ошибочно учитывается как резидентность C-State». ЦП, видя всю эту фиктивную работу с низкими усилиями, может переходить в более глубокое и медленное C-состояние, что затем заставляет ЦП дольше «пробуждаться», особенно в задачах, требующих большого количества переключений между состояниями занятости и простоя.
Nayak провел тесты в tbench на двухсокетной системе Zen3 с базовым ядром Linux, ядром с полностью отключенным состоянием C2 и ядром с исправленной фиктивной операцией ожидания. В его пропатченной версии минимальная пропускная способность МБ/с увеличилась на 1390 %, а средняя пропускная способность МБ/с — на 51 % по сравнению с базовым ядром, что часто немного отстает от полного отключения C2.
Согласно блогу Phoronix, системы Intel избежали наследственного проклятия AMD, поскольку они используют систему на основе MWAIT уже не менее десяти лет. Это привело к срочному исправлению, представленному Дэйвом Хансеном из Intel. Его решение состояло в том, чтобы ограничить «фиктивное ожидание» системами Intel, где оно не повлияет на «удаленно современные системы Intel», и добавить комментарии к драйверам бездействия ядра, объясняющие, что происходит, и побудить тех, кто читает, «рассмотреть вопрос о переносе вашей системы на более современный механизм холостого хода».
Если на этой неделе будет представлен срочный патч, удаляющий или ограничивающий «фиктивное ожидание», он, скорее всего, сделает ядро Linux 6.0, которое Торвальдс планирует выпустить на следующей неделе.