В настоящее время в списке рассылки ядра Linux рассматривается набор исправлений, которые помогут снизить энергопотребление процессоров Xeon 6 Sierra Forest в режиме ожидания.
Инженер Intel Патрик Влазлин разработал набор из трёх исправлений для драйвера Linux «intel_idle», которые помогают процессорам Sierra Forest достигать самых глубоких состояний C в режиме ожидания.
Влазлин объясняет это в серии исправлений:
Текущая реализация поиска подсказки mwait для самого глубокого состояния зависит от того, что они непрерывны в диапазоне [0, NUM_SUBSTATES-1]. Хотя это верно для большинства платформ Intel x86, это не является архитектурным требованием и может не привести к наиболее оптимизированному состоянию ожидания на некоторых из них.
Например, в отчёте Intel Sierra Forest в разделе 5 файла cpuid есть два подсостояния C6:
C6S (подсказка 0x22)
C6SP (подсказка 0x23)Подсказки 0x20 и 0x21 полностью игнорируются, из-за чего текущая реализация вычисляет неправильную подсказку при поиске самого глубокого
c-состояния, в которое может перейти отключённый процессор. В результате пакет с отключённым процессором никогда не сможет достичь PC6.Разрешите драйверу режима ожидания сообщать о самом глубоком состоянии ожидания x86-коду в автономном режиме.
…
В Sierra Forest подсказки mwait для последующих состояний ожидания не являются непрерывными, в результате чего код play_dead() не вычисляет наиболее оптимизированное состояние ожидания, когда процессор отключается. Это, в свою очередь, предотвращает переход в состояние PC6, когда любой из процессоров в пакете отключен. Принудительно используйте известную наилучшую подсказку mwait для самого глубокого состояния ожидания.
Удивительно, что эта проблема с Sierra Forest C не была замечена и исправлена несколько месяцев назад. Эти исправления сейчас находятся на рассмотрении, и, учитывая время и их относительно небольшой объём, мы надеемся, что они будут готовы к выходу следующей версии ядра Linux 6.13.