У Intel Iris Xe нет ни VRAM, ни собственного питания: графика делит энергобюджет с процессором и живёт в общей системной памяти. Поэтому разгонять её как дискретную карту бесполезно — реальный выигрыш дают параметры i915, правильный выбор между драйверами i915 и xe и ручной контроль частот через sysfs. Разбираю по шагам: что настроить, где смотреть телеметрию и почему двухканальная память важнее разгона частот.
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 — проверенный драйвер из ядра, работает начиная с 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, не ядро.
Три параметра покрывают почти все жалобы на 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
Основные ручки лежат в 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 — нет, значит запись не проходит.
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'
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 ГГц+ зависит от партии: лотерея кремния никуда не делась.
Начни с i915.enable_psr=1, затем =0. Проверь, не включена ли PSR в самой прошивке панели. Как компромисс отключи PSR на постоянной, но не на сон: так подсветка экономит энергию, а артефакты при пробуждении не появляются.
intel_gpu_top постоянно?Нет. Он создаёт заметную нагрузку на CPU в виде постоянных опросов, поэтому держи его для замеров и запускай intel_perf точечно на одном тесте.
module.param=value.Iris Xe разгоняется не частотой, а дисциплиной: параметры PSR/DC/FBC, контроль RPS через sysfs, наблюдение через intel_gpu_top и понимание того, что PL1/PL2 у ноутбука один на CPU и GPU. Проверь двухканальность памяти до любых твиков — иначе все остальные усилия упрутся в пропускную способность, которую нельзя компенсировать настройками.
Задай вопрос в чате — отвечаем быстро, по делу и без воды.
Комментарии