Подробный гайд: Настройка параметров ядра Linux с драйвером AMDGPU
Важно:
Перед внесением изменений в параметры ядра создайте резервную копию конфигурации и убедитесь, что у вас есть доступ к системе в режиме восстановления (recovery mode) на случай проблем с загрузкой.
Оглавление
- Введение: что такое параметры ядра
- Проверка текущего драйвера и оборудования
- Способы настройки параметров ядра
- Основные параметры AMDGPU
- Параметры для старых карт (SI/CIK)
- Оптимизация для игр и производительности
- Устранение неполадок
- Полезные команды для диагностики
Введение: что такое параметры ядра
Параметры ядра (kernel parameters) — это настройки, передаваемые ядру Linux при загрузке. Они позволяют управлять поведением драйверов, включая amdgpu — открытый драйвер для видеокарт AMD Radeon серии GCN (Graphics Core Next) и новее.
Эти параметры добавляются в загрузчик (обычно GRUB) и применяются при каждом старте системы.
Проверка текущего драйвера и оборудования
Перед настройкой определите, какой драйвер используется и какая у вас видеокарта:
# Проверка активного драйвера
lspci -k | grep -EA3 'VGA|3D|Display'
# Пример вывода:
# 01:00.0 VGA compatible controller: Advanced Micro Devices, Inc. [AMD/ATI] ...
# Kernel driver in use: amdgpu
# Kernel modules: radeon, amdgpu
# Проверка версии ядра и модуля
modinfo amdgpu | grep -E 'filename|version'
# Проверка текущих параметров модуля
cat /sys/module/amdgpu/parameters/*
Способы настройки параметров ядра
Способ 1: Через GRUB (универсальный)
1. Откройте конфигурационный файл:
sudo nano /etc/default/grub
2. Найдите строку GRUB_CMDLINE_LINUX_DEFAULT и добавьте параметры:
# Пример:
GRUB_CMDLINE_LINUX_DEFAULT="quiet splash amdgpu.ppfeaturemask=0xffffffff amdgpu.dpm=1"
3. Обновите GRUB и перезагрузитесь:
# Для Debian/Ubuntu:
sudo update-grub
# Для Fedora/RHEL:
sudo grub2-mkconfig -o /boot/grub2/grub.cfg
# Для Arch Linux:
sudo grub-mkconfig -o /boot/grub/grub.cfg
sudo reboot
Способ 2: Через modprobe (для параметров модуля)
Создайте файл конфигурации модуля:
sudo nano /etc/modprobe.d/amdgpu.conf
Добавьте параметры:
# Пример:
options amdgpu ppfeaturemask=0xffffffff
options amdgpu si_support=1
Примените изменения:
# Обновите initramfs (обязательно для загрузки параметров с раннего этапа)
# Debian/Ubuntu:
sudo update-initramfs -u
# Fedora:
sudo dracut --force
# Arch Linux:
sudo mkinitcpio -P
sudo reboot
Способ 3: Временная настройка (для тестирования)
При загрузке в меню GRUB нажмите e, найдите строку linux и добавьте параметры в конец строки перед ---. Нажмите Ctrl+X или F10 для загрузки.
Основные параметры AMDGPU
Общие параметры
| Параметр | Тип | Описание | Значение по умолчанию |
|---|---|---|---|
vramlimit |
int | Ограничение объёма VRAM в МБ (для тестов) | 0 (полный объём) |
dpm |
int | Управление динамическим питанием (0=выкл, 1=вкл) | -1 (авто) |
runpm |
int | Runtime PM для дискретных GPU (0=выкл, -1=авто) | -1 |
aspm |
int | Управление ASPM PCIe (0=выкл, 1=вкл) | -1 (авто) |
audio |
int | Включить/выключить HDMI/DP аудио | -1 (включено) |
Параметры производительности и питания
| Параметр | Описание | Рекомендация |
|---|---|---|
ppfeaturemask=0xffffffff |
Включает все функции PowerPlay, включая разгон | Для разгона/мониторинга |
ppfeaturemask=0xffff7fff |
Отключает GFXOFF (стабильность при зависаниях) | При проблемах с зависаниями |
vm_update_mode=3 |
Обновление таблиц VM через CPU | При ошибках "gmc_v8_0 is hung" |
sg_display=0 |
Отключить S/G display на APU | При мерцании экрана |
Параметры дисплея
| Параметр | Описание | Значения |
|---|---|---|
dc |
Включить/выключить Display Core | -1=авто, 0=выкл, 1=вкл |
abmlevel |
Уровень Adaptive Backlight Management | 0-4 (0=выкл) |
freesync_video |
Оптимизация для FreeSync | 0=выкл, 1=вкл |
virtual_display |
Виртуальные дисплеи для headless-систем | 0000:26:00.0,4 |
Параметры безопасности и отладки
| Параметр | Описание |
|---|---|
ras_enable |
Включение RAS (Reliability, Availability, Serviceability) |
tmz |
Trusted Memory Zone (защита данных в памяти) |
debug_mask |
Бинарная маска отладки (0x1=VM, 0x4=сброс и т.д.) |
Параметры для старых карт: Southern Islands и Sea Islands
Для карт GCN 1.0 (Southern Islands, 2012) и GCN 1.1/2.0 (Sea Islands, 2013) может потребоваться явное включение поддержки в amdgpu:
Для Southern Islands (HD 7000, R7 240/250, R9 280):
# В GRUB_CMDLINE_LINUX_DEFAULT:
radeon.si_support=0 amdgpu.si_support=1
Для Sea Islands (R7 260, R9 285/380, R9 290/390):
# В GRUB_CMDLINE_LINUX_DEFAULT:
radeon.cik_support=0 amdgpu.cik_support=1
Если возникают проблемы с загрузкой:
# Отключите динамическое управление питанием:
radeon.dpm=0
Совет:Проверьте dmesg | grep amdgpu — система может подсказать нужные параметры:
Use radeon.cik_support=0 amdgpu.cik_support=1 to override
Оптимизация для игр и производительности
Максимальная производительность (для игр)
# В /etc/default/grub:
GRUB_CMDLINE_LINUX_DEFAULT="quiet splash \
amdgpu.ppfeaturemask=0xffffffff \
amdgpu.dpm=1 \
amdgpu.runpm=0 \
pcie_aspm=off \
iommu=pt"
| Параметр | Эффект |
|---|---|
ppfeaturemask=0xffffffff |
Разблокировка всех функций разгона |
dpm=1 |
Принудительное включение DPM |
runpm=0 |
Запрет отключения GPU в простое |
pcie_aspm=off |
Отключение энергосбережения PCIe (стабильность) |
iommu=pt |
Улучшение производительности DMA |
Энергосбережение (для ноутбуков)
# В /etc/default/grub:
GRUB_CMDLINE_LINUX_DEFAULT="quiet splash \
amdgpu.ppfeaturemask=0xffffbfff \
amdgpu.abmlevel=2 \
amdgpu.runpm=-1"
| Параметр | Эффект |
|---|---|
abmlevel=2 |
Умеренное снижение яркости для экономии |
runpm=-1 |
Авто-управление питанием |
Стабильность при проблемах
Если наблюдаются зависания, артефакты или "белый экран":
# Отключение GFXOFF (частая причина зависаний на RDNA)
amdgpu.ppfeaturemask=0xffff7fff
# Отключение S/G display при мерцании
amdgpu.sg_display=0
# Фиксация уровня производительности
# (устанавливается через sysfs, не параметр ядра)
echo "high" > /sys/class/drm/card0/device/power_dpm_force_performance_level
Устранение неполадок
Чёрный экран при загрузке
# Добавьте в параметры ядра:
nomodeset # временно, для загрузки
# Затем настройте amdgpu.dc=1 или amdgpu.dc=0 в зависимости от карты
Мерцание/артефакты на высоких частотах
# Отключите DPM или зафиксируйте уровень:
amdgpu.dpm=0
# или
amdgpu.ppfeaturemask=0xfffd7fff # отключает GFXOFF и stutter
Зависания с ошибкой "gmc_v8_0 is hung"
# Принудительное обновление VM через CPU:
amdgpu.vm_update_mode=3
Проблемы с HDMI 4K@60Hz / аудио
# Попробуйте отключить аудио драйвер amdgpu:
amdgpu.audio=0
# Или используйте параметр для дисплея:
amdgpu.dcdebugmask=0x10
Карта не определяется / используется radeon вместо amdgpu
- Проверьте, что в ядре включена поддержка
CONFIG_DRM_AMDGPU_SI/CONFIG_DRM_AMDGPU_CIK - Добавьте параметры
si_support=1/cik_support=1как описано выше
3. Убедитесь, что radeon не загружается первым:
echo "blacklist radeon" | sudo tee -a /etc/modprobe.d/blacklist.conf
Полезные команды для диагностики
# Проверка загрузки модуля и параметров
lsmod | grep amdgpu
cat /sys/module/amdgpu/parameters/*
# Мониторинг GPU в реальном времени
watch -n 1 'cat /sys/kernel/debug/dri/0/amdgpu_pm_info'
# Частоты GPU и памяти
cat /sys/class/drm/card0/device/pp_dpm_sclk # GPU clock
cat /sys/class/drm/card0/device/pp_dpm_mclk # Memory clock
# Температура
cat /sys/class/drm/card0/device/hwmon/hwmon*/temp1_input
# Загрузка GPU (%)
cat /sys/class/drm/card0/device/gpu_busy_percent
# Использование VRAM
cat /sys/class/drm/card0/device/mem_info_vram_used
cat /sys/class/drm/card0/device/mem_info_vram_total
# Проверка активного драйвера
lspci -k -d ::0300
# Логи ядра, связанные с GPU
dmesg | grep -i amdgpu
journalctl -k | grep -i amdgpu
Дополнительные ресурсы
- ArchWiki: AMDGPU: wiki.archlinux.org/title/AMDGPU
- AMD Instinct: Kernel Parameters Guide: instinct.docs.amd.com/projects/system-acceptance/en/latest/common/kernel-parameters.html
- Утилита CoreCtrl для настройки AMD GPU: gitlab.com/corectrl/corectrl
Предупреждение:
Экспериментальные параметры (особенно ppfeaturemask=0xffffffff) могут привести к нестабильности системы или повреждению оборудования при неправильном разгоне. Используйте на свой страх и риск и всегда тестируйте изменения в безопасном режиме.