Современные видеокарты AMD (RDNA1-4) сбрасывают частоты в 1080p играх.
Приветствую, коллеги.
Приобрёл весной видеокарту Gigabyte RX 9060 XT 16 GB, с 3мя вентиляторами за 42к.
По рассчётам ИИ её должно было более чем хватать на мои 2*2697v3 + 1080p монитор.
Однако, производительность не улучшилась относительно RX 5700 8 GB. Стал копать, вывел частоты в mangohud.
Увидел снижение частот на 1 ГГц на простых сценах (тёмные коридоры в Cyberpunk, хотя если смотреть в окно на город - fps больше).
Спросил ИИ - проблема говорит известная и тянется аж с RDNA 1. И пользователи offtopic-a просто фиксируют минимальную частоту в драйвере.
Но для пользователей линукс-а был подготовлен отдельный квест, и я его прошёл.
Если по-простому: в скрипт запуска игры добавляете:
# 0. Установка макс. профиля, чтобы не скидывала частоты, мониторим через lact(github) или nvtop
echo "profile_peak" | sudo tee /sys/class/drm/card1/device/power_dpm_force_performance_level
#Синтаксис ниже - кастомный для каждой версии RDNA(1-4). Здесь для RX 9060. Для вашей попросите переписать ИИ под вашу видеокарту и проверьте в консоли по 1й:
# Небольшой разгон GPU, иначе будет держать частоту в районе 2.8 Ghz вместо топовой.
echo "s 50" | sudo tee /sys/class/drm/card1/device/pp_od_clk_voltage
# Снижение напряжения на 0.1 В, чтобы не упиралась в TDP:
echo "vo -100" | sudo tee /sys/class/drm/card1/device/pp_od_clk_voltage
# Commit-им:
echo "c" | sudo tee /sys/class/drm/card1/device/pp_od_clk_voltage
#Проверка:
# sudo cat /sys/class/drm/card1/device/pp_od_clk_voltage
# 1. Запускаем игру в фоновом режиме (&)
"${WINE}" ${VDESKTOP} "${EXE}" --launcher-skip --skipStartScreen --intro-skip ${ARGS} "$@" &
# 2. Даем Wine 10 секунд, чтобы он успел породить процессы и wineserver
sleep 10
# Цикл выполняется, пока pgrep находит процесс с именем игры
while pgrep -f "Cyberpunk2077.exe" > /dev/null; do sleep 3 && echo sleeping ; done
# Выполняется после исчезновения процесса из системы - возвращаем профиль на auto для энергосбережения
echo "auto" | sudo tee /sys/class/drm/card1/device/power_dpm_force_performance_level
# Возвращаем заводской автомат по питанию и частотам после закрытия процесса
echo "r" | sudo tee /sys/class/drm/card1/device/pp_od_clk_voltage
Теперь объяснение. Просто выставить профиль (profile_peak) - недостаточно. Держит частоты фиксировано на 2.8 ГГц вместо 3.2-3.4.
Для фикса на максималках нужно немного разогнать. Не важно, на 50 МГц или на 10.
Но тут мы начинаем упираться в TDP. Поэтому используем небольшой downvolt (0.1 V). На данной видеокарте отыграл часов 12, всё стабильно. На вашей downvolt подбирайте сами. Это удобно делать с LACT (есть статьи на Хабре, лежит на гитхабе). Пакеты есть, ничего собирать не надо.
У вас карта может быть card0, проверяйте ls /sys/class/drm/ | grep card
=================
Ну и если у кого-то возникнут вопросы: а зачем тебе старые ксеоны и такая видюха - Ксеоны и 128 GB DDR4 для работы, видюха на запас (и на лучи посмотреть), т.к. ходили слухи, что производство карт c 16 ГБ урежут. Апгрэйд на Threadripper 7960X запланирован, но из-за дефицита DDR5 ECC откладывается. ECC - для ZFS.
Монитор 1080 не от безденежья, а т.к. много годного контента и в более низком разрешении (сериалы). Натягивать его на 2к-4к без апскэйла ИИ - нереально. Ну и ютуб в 2к пока тяжко ворочается ))
#radeon chill, #rdna1, #rdna2, #rdna3, #rdna4