LINUX.ORG.RU

Современные видеокарты AMD (RDNA1-4) сбрасывают частоты в 1080p играх.

 ,


2

1

Приветствую, коллеги.
Приобрёл весной видеокарту 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



Последнее исправление: c0unt0 (всего исправлений: 2)

Карта хорошая, одобряю. Рецепт - огонь.

tiinn ★★★★★
()

Спасибо )) Также в режиме auto замечены фризы при просмотре видео (декодирование) в Хром / Vivaldi, т.к. используется аппаратное ускорение. Если выставить в profile_peak (без разгона), 2.8 ГГц, то через какое-то время сбрасывается в auto. Выключил демон lact - не помогло. Пока не нашёл, кто скидывает - поставил скрипт */10 (каждые 10 минут) в crontab:

cat ~/bin/profile_peak 
#!/bin/bash
echo profile_peak > /sys/class/drm/card1/device/power_dpm_force_performance_level
cat /sys/class/drm/card1/device/power_dpm_force_performance_level

Потом поищу, кто так делает. Электричества не жалко. Она там всё равно не 180 Вт ест, а например 90.
Но согласитесь, АМД свинью подбросила олдфагам, которые не перешли на изогнутые метровые мониторы ))

c0unt0
() автор топика
Последнее исправление: c0unt0 (всего исправлений: 1)

Просто выставить профиль (profile_peak) - недостаточно.

Достаточно:

echo "high" > /sys/class/drm/card$NUM/device/power_dpm_force_performance_level

https://rocm.docs.amd.com/projects/amdsmi/en/develop/conceptual/perf-determinism.html :

HIGH - Forces clocks to maximum regardless of workload.

Всё остальное - игрища с частотой, мощностью питания и скоростью оборотов вентилятора - это уже в области разгона.

r--r--r--
()
Ответ на: комментарий от r--r--r--

Недостаточно.
Вы смотрели как она частоты агрессивно скидывает? Это в игре заметно, я писал. Особенно с лучами. Что и послужило причиной для исследования.
Опять же - заметно в 1080p. Если у вас 2к-4к монитор, то должно быть норм.
Микро-разгон нужен именно для фиксации частоты. И high, как писал - это 2.7 ГГц. profile_peak + мкро-разгон - 3.5 ГГц. Что явно видно на fps.

c0unt0
() автор топика
Ответ на: комментарий от c0unt0

Микро-фризы ушли кстати после кручения настроек. И пока не возвращались. Уже пробовал играть, выходить, всё норм.
Проверяется glxgears. Там шестерёнки клинило периодически. Но учитывая, сколько я её мучал, пока не подобрал правильный порядок действий, пойдёт ))
Не зависла - и на том спасибо ))

c0unt0
() автор топика
Последнее исправление: c0unt0 (всего исправлений: 1)
Ответ на: комментарий от c0unt0

АМД свинью подбросила олдфагам

Да ничего она не подбрасывала. Powerplay себя всегда так при недогрузе карты вёл.

// к слову, на мутанте уровня 9900к + 6600XT эту проблему не наблюдаю. 2*2697v3 это вообще не игровая сборка.

devl547 ★★★★★
()
Ответ на: комментарий от c0unt0

Недостаточно.

Вы смотрели как она частоты агрессивно скидывает?

Она вообще ничего никуда не скидывает, потому что "high" - это фиксированные частоты не зависимо от нагрузки.

r--r--r--
()
Ответ на: комментарий от r--r--r--

Так смотрели в mangohud или нет? Я могу видео выложить, как на high без мини-разгона в скрипте они прыгают от ~100 МГц до 2.4 ГГц просто стоя на улице, вид на дорогу с машинами. В среднем 1.2-2.2 ГГц. А не 3.5, которые требуются. Прямо сейчас проверил.

c0unt0
() автор топика
Последнее исправление: c0unt0 (всего исправлений: 1)
Ответ на: комментарий от bryak

Её подпирать надо разгоном. Как я в скрипте писал. Иначе в гробу она видала все эти профили…

# Небольшой разгон 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       
c0unt0
() автор топика
Ответ на: комментарий от devl547

Недогруз - понятие растяжимое )) Раньше видеокарты так себя не вели. Читал на reddit-e, что у чела RX 580 выдавала больше RX 5700 )) Ещё когда это всё выходило.
Я пытал ИИ, почему так. Оказываетцо, АМД нацелена на рынок датацентров, где важен каждый ватт. И консолей, в том числе носимых, где тоже (ну, про дроны для ускорения нейронок говорить не будем).
Поэтому у них позиция в сторону линуксоидов такова: мы дали вам инструменты, если надо - пользуйтесь.
А вообще проблема лежит глубже. Оффтопик сообщает драйверам, что запущена игра, и надо поднапрячься. А линукс - нет. И видюха считает игру на старом проце - мусорной нагрузкой. Которой 3.5 ГГц не требуются. Я нашёл способ сказать, что это не так.
Возможно, в wayland-e найдут способ общения с драйвером. Но у меня X-ы и lxpanel (временно lxqt-panel, в Sid сломали отрисовку трея, issue написал разрабам), на вяленого пока не перехожу.

c0unt0
() автор топика
Ответ на: комментарий от devl547

// к слову, на мутанте уровня 9900к + 6600XT эту проблему не наблюдаю. 2*2697v3 это вообще не игровая сборка.

В однопотоке Core i9-9900K быстрее своего оппонента примерно на 60–65%.Тактовые частоты: Xeon 2697v3 в однопоточном бусте достигает максимум 3.6 ГГц (а при нагрузке на все ядра падает до 3.1 ГГц). В то же время i9-9900K «из коробки» разгоняется до 5.0 ГГц на одно-два ядра, а в ручном разгоне может стабильно держать 5.0 ГГц по всем ядрам.Архитектура (IPC): Архитектура Coffee Lake (i9-9900K) эффективнее старой Haswell (Xeon v3) по количеству инструкций за такт (IPC) примерно на 15–20%.

Видите, ваша система видеокарту раскрывает. Поэтому у Вас всё хорошо. Статья писалась не для обладателей процессоров под 5 ГГц и более. И мониторов 2-4к. Я это отразил в заголовке и начале статьи.
И почему использую такое старьё - тоже указал. Для работы. И почему не могу сейчас отгрузить 200к на Threadripper + ещё стопку на 128 (иногда бывает мало)-256 ГБ DDR5 ECC REG 5200 МГц. Поэтому надо иногда играть на том, что есть ))
Да и другие игры не такие процессоро-зависимые. На очереди Baldurs Gate 3, Days Gone, Last of Us I как-то не зашёл, линейный в начале, может потом раскачается.
STALKER 2 (не ржите, хотя бы запущу - посмотрю, а может тюнинг сделаю. Грозу отключу, как в 1м, или ещё какие эффекты).
Можно конечно 2й комп поставить и его включать периодически. Но неудобно. Да и полюбому есть линуксоиды, которые не могут проапгрэйдиться сейчас. А видюху взять могут на АМД.

c0unt0
() автор топика

А теперь аккуратно без резких движений посмотри температуру карты в нагрузке. Только не нервничай сразу.

LightDiver ★★★★★
()
Ответ на: комментарий от LightDiver

Корпус серверный, вентиляторы на 0.8 А. Там продувается всё. Но карта и сама по себе холодная. + 3 вентилятора и 4 трубки + андервольт 0.1 В = GPU 45-47 C, VRAM 68-70 C, Tjun 50, FAN 845 rpm (настройки не менял). В Киберпанке, активные действия.
Стоит за стенкой на лоджии, там сейчас 16 С, как в серверной.
Как видите, запас огромный, даже если добавить до 25 С комнатной. Просто вентиляторы прибавят на видеокарте. И даже если заменить корпусные вентиляторы 0.8 А => 0.3 А, ИМХО уложится до тротлинга. Сейчас «домашние» корпуса не как в 00х, с 3мя вентиляторами на передней панели.

c0unt0
() автор топика
Последнее исправление: c0unt0 (всего исправлений: 2)
Ответ на: комментарий от c0unt0

Так смотрели в mangohud или нет? Я могу видео выложить,

Видите, ваша система видеокарту раскрывает. Поэтому у Вас всё хорошо. Статья писалась не для обладателей процессоров под 5 ГГц и более. И мониторов 2-4к. Я это отразил в заголовке и начале статьи.

Смотри как я "раскрыл видеокарту" sleep’ом на bash’е в одну минуту.

echo 'Memory frequency:'
cat /sys/class/drm/card0/device/pp_dpm_mclk
echo 'Clock frequency:'
cat /sys/class/drm/card0/device/pp_dpm_sclk
echo 'Preformace level:'
cat /sys/class/drm/card0/device/power_dpm_force_performance_level
echo 'Set performace level to HIGH and sleep for 60 sec...'
echo 'high' > /sys/class/drm/card0/device/power_dpm_force_performance_level
sleep 60
echo 'Wake up and check frequencies:'
echo 'Memory frequency:'
cat /sys/class/drm/card0/device/pp_dpm_mclk
echo 'Clock frequency:'
cat /sys/class/drm/card0/device/pp_dpm_sclk
echo 'Preformace level:'
cat /sys/class/drm/card0/device/power_dpm_force_performance_level
echo 'auto' > /sys/class/drm/card0/device/power_dpm_force_performance_level
Memory frequency:
0: 100Mhz *
1: 500Mhz 
2: 625Mhz 
3: 875Mhz 
Clock frequency:
0: 300Mhz 
1: 800Mhz *
2: 2100Mhz 
Preformace level:
auto
Set performace level to HIGH and sleep for 60 sec...
Wake up and check frequencies:
Memory frequency:
0: 100Mhz 
1: 500Mhz 
2: 625Mhz 
3: 875Mhz *
Clock frequency:
0: 300Mhz 
1: 2030Mhz *
2: 2100Mhz 
Preformace level:
high

r--r--r--
()
Ответ на: комментарий от r--r--r--

Вы смотрите раз в минуту. А я смотрел в реальном времени в Mangohud под нагрузкой. Значит не смотрели. И лень это сделать. Но переписываться и спорить - не лень.
2030 - это очень мало (и то он у вас будет прыгать ниже, это Вы в моменте подловили). Даже 2.7 ГГц мало. Нормально она работает после 3+ ГГц. В идеале - 3.5. Разница 1 ГГц почти. Или 30%.

c0unt0
() автор топика
Ответ на: комментарий от c0unt0

Вы смотрите раз в минуту.

Нет, пчел. Это через минут. И через две. И через три.

2030 - это очень мало

Это норма для моей карты.

Значит не смотрели. И лень это сделать.

Вместо того, чтобы тупить возьми и повтори эту процедуру у себя. Будет скакать - разбирайся со своими процессами.

r--r--r--
()
Для того чтобы оставить комментарий войдите или зарегистрируйтесь.