Все об Arch Linux

Arch Linux будет тем, что вы из него сделаете!

Intel Iris Xe: частоты, лимиты и энергопотребление

У Intel Iris Xe нет ни VRAM, ни собственного питания: графика делит энергобюджет с процессором и живёт в общей системной памяти. Поэтому разгонять её как дискретную карту бесполезно — реальный выигрыш дают параметры i915, правильный выбор между драйверами i915 и xe и ручной контроль частот через sysfs. Разбираю по шагам: что настроить, где смотреть телеметрию и почему двухканальная память важнее разгона частот.

Как Iris Xe делит энергию с процессором?

Iris Xe встречается в 11-м поколении (Tiger Lake, 96 EU) и 12-м (Alder Lake-P, Xe-LP), плюс у UHD-графики 8-го и 10-го поколений — там ядер меньше, а частота ниже. Отдельная Iris Xe MAX в ноутбуках с Tiger Lake-H несёт на борту HBM, но в Arch на ноутбуках с обычной графикой ты имеешь дело с UMA-вариантом.

Ключевая особенность — общий power budget. Пакет PL1/PL2 ограничивает CPU и GPU вместе, поэтому turbo процессора напрямую забирает частоты у GT. При отладке похожего класса проблем на Ryzen у меня уже есть разбор: низкая частота кадров на Ryzen iGPU. На Intel то же самое выглядит иначе — вместо игры на драйвере решает энергетический лимит, а не сам GPU.

# кто сидит на GPU и какой драйвер загружен
lspci -k | grep -A3 'VGA compatible controller'
lsmod | grep -E 'i915|^xe'
dmesg | grep -iE 'i915|xe 0000' | head -20

Базовая связка для видео и 3D ставится одинаково для всех поколений:

sudo pacman -S --needed intel-media-driver mesa vulkan-intel libva-utils glxinfo
glxinfo -B | grep -i 'OpenGL renderer'
vainfo | head -20

Какой драйвер выбрать: i915 или xe?

i915 — проверенный драйвер из ядра, работает начиная с Broadwell и до Alder Lake без нареканий. xe — новая DRM-платформа: с ядра 6.8 она включается конфигом CONFIG_DRM_XE, с 6.11 получила поддержку Tiger Lake и новее, но по-прежнему developmental. Ставь xe, только если тебе нужны фичи, которых нет в i915, и ты готов к отладке — иначе i915.

# принудительно оставить i915 (модуль можно не грузить в initramfs)
echo "options i915 enable_psr=1 enable_dc=0 enable_fbc=1" | sudo tee /etc/modprobe.d/i915.conf
sudo modprobe -r xe 2>/dev/null
sudo modprobe i915

Драйвер xe не знает параметров i915.enable_psr, enable_dc и enable_fbc — они живут в модуле i915, и передавать их через modprobe.d для xe бессмысленно. Ускорение декодирования VAAPI от драйвера не зависит: свежий intel-media-driver (ветка 25.x) работает с обоими бэкендами, а за видео в браузере отвечает связка mesa + intel-media-driver, не ядро.

Какие параметры ядра помогают i915?

Три параметра покрывают почти все жалобы на Iris Xe.

i915.enable_psr — Panel Self Refresh. Значения: 0 выключено, 1 определяет драйвер (обычный режим), 2 включает всегда. На внутренней IPS-матрице экономит заметно, потому что панель не перерисовывается, пока картинка статична. Минус — артефакты, двоение картинки, залипание после suspend на части eDP-панелей. Лечится переключением на 1, а если не помогло — на 0.

i915.enable_dc=0 отключает power well дисплейного домена: напряжение на контуре не проваливается в спящем состоянии. Минус — рост потребления в простое, плюс — предсказуемая стабильность на ноутбуках с Tiger Lake и новее, где DC-режим иногда ловит зависания.

i915.enable_fbc=1 включает frame buffer compression: кадр сжимается перед записью в разделяемую память, что режет трафик по шине. На Xe-LP через новый xe этот параметр не поддерживается.

# проверить, что параметры реально применились
cat /sys/module/i915/parameters/enable_psr
cat /sys/module/i915/parameters/enable_dc
cat /sys/module/i915/parameters/enable_fbc

Как смотреть и менять частоты GT?

Основные ручки лежат в sysfs, и почти все параметры модулей читаются тем же синтаксисом module.param=value — полный список с пояснениями собран в отдельном разборе.

# текущая, минимальная, максимальная и boost-частота
cat /sys/class/drm/card0/gt_cur_freq_mhz
cat /sys/class/drm/card0/gt_min_freq_mhz
cat /sys/class/drm/card0/gt_max_freq_mhz
cat /sys/class/drm/card0/gt_boost_freq_mhz

# нижняя граница RPS (можно поднять, чтобы убрать провалы частоты)
echo 900 | sudo tee /sys/class/drm/card0/gt_min_freq_mhz

Подробная сводка, включая состояния RC6 и текущий P-state, лежит в debugfs:

sudo mount -t debugfs none /sys/kernel/debug 2>/dev/null
sudo cat /sys/kernel/debug/dri/0/i915_frequency_info
sudo cat /sys/kernel/debug/dri/0/i915_rc6_residency_ms
sudo cat /sys/kernel/debug/dri/0/gt/gt0/rps_act_freq_mhz
ls /sys/kernel/debug/dri/0/gt/uc/gt0/          # регистры и счётчики микрокода

Живая телеметрия — через intel_gpu_top. Он рисует частоту, загрузку движков и, в свежих версиях, потребление в графе PWR.

sudo pacman -S --needed intel-gpu-tools
sudo intel_gpu_top -s 500
sudo intel_gpu_top -L          # доступные режимы отображения
sudo intel_gpu_top -J | jq '.periods[-1]'

Для счётчиков через Mesa есть переменная INTEL_PERF=1 — она печатает occupancy и частоты в консоль при каждом вызове OpenGL/Vulkan, удобно для разбора одного теста, а не всей системы:

INTEL_PERF=1 glxgears -v
INTEL_PERF=1 vkcube

Температуры GPU и общие кривые по частоте я разбирал отдельно — температура и частота через sysfs/class/drm.

Как измерить и изменить лимиты мощности?

Интегрированная графика питается от RAPL-домена, который считает энергопакетов. Модуль intel_rapl_msr даёт доступ к счётчикам и позволяет менять PL1/PL2, если прошивка не заблокировала запись.

sudo modprobe intel_rapl_msr
for d in /sys/class/powercap/intel-rapl:*/; do
  printf '%-10s %s uJ\n' "$(cat "$d/name")" "$(cat "$d/energy_uj")"
done

Второй домен с именем i915 — это и есть GPU. Его счётчик и PL1 смотри так:

D=/sys/class/powercap/intel-rapl:0:1
cat $D/name $D/energy_uj $D/constraint_0_name $D/constraint_0_power_limit_uw
echo 25000000 | sudo tee $D/constraint_0_power_limit_uw   # 25 Вт в микроваттах

Понижение PL1 втыкается ради энергосбережения от сети, повышение — ради игры на розетке. Ошибка на микроваттах легко превращается в мгновенный троттлинг или чёрный экран, поэтому перед записью запомни исходное значение и держи под рукой команду отката. Помни, что фактический предел может жить в firmware или MSR: если после записи constraint_0_power_limit_uw меняется, а частота GT — нет, значит запись не проходит.

Почему двухканальная память важнее частоты GPU?

Iris Xe читает кадры и текстуры прямо из системной памяти — отдельного видеобуфера у обычной версии нет. Ширина канала упирается в контроллер памяти, и на одноканальной DDR4-3200 ты получаешь вдвое меньше пропускной способности, чем на двухканальной. Частоту GT при этом поднять нельзя: она упирается в тот же пакет PL. Отсюда простое правило — сначала двухканальность, потом частоты, потом параметры ядра.

Windows на тех же машинах ограничена точно так же: в диспетчере задач Iris Xe рисуется как UMA без VRAM, поэтому в играх просадки кадров появляются раньше, чем на десктопе с дискретной картой. Отличить «мало памяти» от «мало ядер» помогает смена планки на двухканальный комплект.

# сколько каналов задействовано
sudo lshw -class memory | grep -iE 'channel|bank'
sudo dmidecode -t 17 | grep -iE 'channel|size|locator'

Частые вопросы

Как понять, какой драйвер активен — i915 или xe?

lspci -k в блоке Kernel driver in use покажет i915 или xe, а строка OpenGL renderer в glxinfo -B — iris (Intel Graphics) либо iris (Xe). Если модуль загружен, но в рендерере Iris Xe вместо Iris — значит включился llvmpipe, и тут уже вопрос к Mesa, а не к ядру.

Почему после i915.enable_dc=0 выросло потребление в простое?

Так и задумано: display power well больше не отключается, контур остаётся под напряжением. Проверь, что это не откат троттлинга — сравни i915_rc6_residency_ms до и после, GT должен просыпаться заметно реже.

Можно ли выставить частоту выше gt_max_freq_mhz?

Ядро обрежет значение до аппаратного предела, а без C-states верхняя граница живёт в debugfs (rps_max_freq_mhz) и сбрасывается при перезагрузке. Даже если запись проходит, стабильность на 1.2 ГГц+ зависит от партии: лотерея кремния никуда не делась.

Что делать, если PSR даёт артефакты или двоение картинки?

Начни с i915.enable_psr=1, затем =0. Проверь, не включена ли PSR в самой прошивке панели. Как компромисс отключи PSR на постоянной, но не на сон: так подсветка экономит энергию, а артефакты при пробуждении не появляются.

Нужен ли intel_gpu_top постоянно?

Нет. Он создаёт заметную нагрузку на CPU в виде постоянных опросов, поэтому держи его для замеров и запускай intel_perf точечно на одном тесте.

Полезные ресурсы

Заключение

Iris Xe разгоняется не частотой, а дисциплиной: параметры PSR/DC/FBC, контроль RPS через sysfs, наблюдение через intel_gpu_top и понимание того, что PL1/PL2 у ноутбука один на CPU и GPU. Проверь двухканальность памяти до любых твиков — иначе все остальные усилия упрутся в пропускную способность, которую нельзя компенсировать настройками.



Не получилось? Поможем настроить

Задай вопрос в чате — отвечаем быстро, по делу и без воды.

Читайте также

Комментарии

Загрузка…

Откроется GitHub: создайте новый issue с вашим комментарием (кнопка «Submit new issue»). После отправки обновите эту страницу — комментарий появится ниже.

Telegram Max