LINUX.ORG.RU

Radeon RX550 undervolting

 , , , ,


0

1

Стоит у меня в компе низкопрофильная RX550. И греется. Кулер включён на автоматическое регулирование оборотов: сначала 300 RPM, всё хорошо, но температура растёт, как только поднимается больше 50 градусов, кулер выдаёт 4000 RPM, шумит, но температура через какое-то время спадает, и кулер возвращается на 300 RPM.

Логичнее всего было бы организовать какой-нибудь дополнительный обдув, чтобы температура без нагрузки никогда не поднималась до 50 градусов. Но есть ведь вариант понизить напряжения на карте: частоты будут ниже, потреблять карта будет меньше, греться будет меньше. Одни плюсы. А если вдруг потребуется побольше производительности, можно и вернуть напряжения к стандартным.

Какими инструментами можно это сделать? Погуглив, я нашёл только ohgodatool, который выглядит довольно стрёмно. Ещё не собирал. Может, есть какой-то альтернативный вариант? Насколько я понимаю, через sysfs можно попросить драйвер об оверклоке, а понизить частоту нельзя. Это так?

★★★★★

А с циркуляцией воздуха в копрусе нет проблем? Может тепло не эффективно отводится.

Dred ★★★★★
()

Насколько я понимаю, через sysfs можно попросить драйвер об оверклоке, а понизить частоту нельзя. Это так?

Можно и частоту, и напряжение понизить через sysfs. Я так понизил напряжение на своей RX 560.

echo "s 5 1150 835" > /sys/class/drm/card0/device/pp_od_clk_voltage
echo "s 6 1150 835" > /sys/class/drm/card0/device/pp_od_clk_voltage
echo "s 7 1150 835" > /sys/class/drm/card0/device/pp_od_clk_voltage

echo "m 0 300 705" > /sys/class/drm/card0/device/pp_od_clk_voltage
echo "m 1 625 750" > /sys/class/drm/card0/device/pp_od_clk_voltage
echo "m 2 1750 800" > /sys/class/drm/card0/device/pp_od_clk_voltage

echo "c" > /sys/class/drm/card0/device/pp_od_clk_voltage

Для каждого уровня свои частота и напряжение. Значение по умолчанию можешь так посмотреть:

cat /sys/class/drm/card0/device

Только в параметры ядра нужно добавить:

amdgpu.ppfeaturemask=0xfffd7fff
Kron4ek ★★★★★
()
Последнее исправление: Kron4ek (всего исправлений: 1)
Ответ на: комментарий от CYB3R

Кстати, еще можешь и TDP ограничить. Например, до 30 Вт:

echo 30000000 > /sys/class/drm/card0/device/hwmon/hwmon0/power1_cap

Карта начнет тротлить, если превысит это значение.

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

Похоже, что с RX550 это делается как-то иначе, на pp_ у меня начинаются только эти файлы:

/sys/class/drm/card0/device/pp_cur_state    /sys/class/drm/card0/device/pp_mclk_od
/sys/class/drm/card0/device/pp_dpm_mclk     /sys/class/drm/card0/device/pp_num_states
/sys/class/drm/card0/device/pp_dpm_pcie     /sys/class/drm/card0/device/pp_power_profile_mode
/sys/class/drm/card0/device/pp_dpm_sclk     /sys/class/drm/card0/device/pp_sclk_od
/sys/class/drm/card0/device/pp_force_state  /sys/class/drm/card0/device/pp_table

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

И такого у меня тоже нет, только это:

/sys/class/drm/card0/device/hwmon/hwmon1/power/autosuspend_delay_ms
/sys/class/drm/card0/device/hwmon/hwmon1/power/control
/sys/class/drm/card0/device/hwmon/hwmon1/power/runtime_active_time
/sys/class/drm/card0/device/hwmon/hwmon1/power/runtime_status
/sys/class/drm/card0/device/hwmon/hwmon1/power/runtime_suspended_time
CYB3R ★★★★★
() автор топика
Ответ на: комментарий от Kron4ek

Не, параметры ядра пока не трогал, ядро федоровское 5.11.7.

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

Значение по умолчанию можешь так посмотреть:

Тут название файла пропущено? Я знаю только про информацию в /sys/kernel/debug/dri/0/amdgpu_pm_info.

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

Да, пропущено, я имел в виду:

cat /sys/class/drm/card0/device/pp_od_clk_voltage

До того, как запишешь туда кастомные значения, там будут значения по умолчанию.

Kron4ek ★★★★★
()

Сделай небольшой обдув. У меня напротив RX 5600XT пара NF-A12x15 - про шум при любых нагрузках забыл.

anonymous
()
Ответ на: комментарий от CYB3R

Кстати, напряжение иногда можно снизить не снижая частоту (собственно, андервольтинг в чистом виде), в таком случае производительность вообще не теряется, а вот энергопотребление снижается. У меня была еще одна RX 560 - на ней получилось почти на 200 мВ снизить напряжение. Может быть, на твоей карте тоже получится что-то подобное.

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

Сейчас нашёл ещё atitool. Тоже интересно потыкать, что это такое.

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

Да, я сейчас включил ручной режим и добавил в fancontrol. Но понизить напряжение на чипе всё равно хочу.

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

Попробуй модуль amdgpu в initramfs добавить, чтобы он сразу при запуске системы грузился, а не отложенно.

В /etc/dracut.conf.d/amdgpu.conf добавить:

add_drivers+="amdgpu"

Затем:

dracut --force
Kron4ek ★★★★★
()
Последнее исправление: Kron4ek (всего исправлений: 1)

У меня такая же карта, 50 градусов – это не температура для видеокарты. Тебе нужен

https://github.com/grmat/amdgpu-fancontrol

Ниже 65 у меня вентилятор в принципе не включается, т.е. 99% времени он выключен.

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

Ошибся, нужно не add_drivers, а force_drivers:

force_drivers+="amdgpu"

Потому что нужна именно самая ранняя подгрузка модуля.

Kron4ek ★★★★★
()
Ответ на: комментарий от s-o
~ sudo lsinitrd | grep amdgpu.ko
-rw-r--r--   1 root     root      1761152 Oct 23 18:30 usr/lib/modules/5.11.7-200.fc33.x86_64/kernel/drivers/gpu/drm/amd/amdgpu/amdgpu.ko.xz
CYB3R ★★★★★
() автор топика
Ответ на: комментарий от Kron4ek

Добавил (даже пробелы не забыл), драйвер подгружается, но файлы всё ещё не появляются. В dmesg это:

[    2.637164] [drm] amdgpu kernel modesetting enabled.
[    2.637260] amdgpu: Topology: Add CPU node
[    2.637343] fb0: switching to amdgpudrmfb from EFI VGA
[    2.637427] amdgpu 0000:04:00.0: vgaarb: deactivate vga console
[    2.637552] amdgpu 0000:04:00.0: amdgpu: Trusted Memory Zone (TMZ) feature not supported
[    2.637845] amdgpu 0000:04:00.0: No more image in the PCI ROM
[    2.637869] amdgpu 0000:04:00.0: amdgpu: Fetched VBIOS from ROM BAR
[    2.637871] amdgpu: ATOM BIOS: 113-LEXA_XL_170109_4G_D5_HE_LPSF_W82
[    2.637972] amdgpu 0000:04:00.0: amdgpu: VRAM: 4096M 0x000000F400000000 - 0x000000F4FFFFFFFF (4096M used)
[    2.637976] amdgpu 0000:04:00.0: amdgpu: GART: 256M 0x000000FF00000000 - 0x000000FF0FFFFFFF
[    2.638535] [drm] amdgpu: 4096M of VRAM memory ready
[    2.638541] [drm] amdgpu: 4096M of GTT memory ready.
[    2.640700] amdgpu: hwmgr_sw_init smu backed is polaris10_smu
[    2.968919] amdgpu: Topology: Add dGPU node [0x699f:0x1002]
[    2.968925] amdgpu 0000:04:00.0: amdgpu: SE 2, SH per SE 1, CU per SH 5, active_cu_number 8
[    2.971815] fbcon: amdgpudrmfb (fb0) is primary device
[    2.971819] amdgpu 0000:04:00.0: [drm] fb0: amdgpudrmfb frame buffer device
[    3.242004] amdgpu 0000:04:00.0: amdgpu: Using BACO for runtime pm
[    3.242274] [drm] Initialized amdgpu 3.40.0 20150101 for 0000:04:00.0 on minor 0
[    6.950904] snd_hda_intel 0000:04:00.1: bound 0000:04:00.0 (ops amdgpu_dm_audio_component_bind_ops [amdgpu])
[   48.232227] amdgpu 0000:04:00.0: PCIe Bus Error: severity=Corrected, type=Data Link Layer, (Receiver ID)
[   48.232234] amdgpu 0000:04:00.0:   device [1002:699f] error status/mask=00000080/00002000
[   48.232243] amdgpu 0000:04:00.0:    [ 7] BadDLLP               

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

Собственно, без force_drivers в initramfs он загружается на долю секунды позже, но это особо ни на что не влияет (ошибка на 48 секунде вряд ли с этим вообще связана):

[    2.901400] [drm] amdgpu kernel modesetting enabled.
[    2.901523] amdgpu: Topology: Add CPU node
[    2.901631] fb0: switching to amdgpudrmfb from EFI VGA
[    2.901721] amdgpu 0000:04:00.0: vgaarb: deactivate vga console
[    2.901850] amdgpu 0000:04:00.0: amdgpu: Trusted Memory Zone (TMZ) feature not supported
[    2.902130] amdgpu 0000:04:00.0: No more image in the PCI ROM
[    2.902153] amdgpu 0000:04:00.0: amdgpu: Fetched VBIOS from ROM BAR
[    2.902156] amdgpu: ATOM BIOS: 113-LEXA_XL_170109_4G_D5_HE_LPSF_W82
[    2.902251] amdgpu 0000:04:00.0: amdgpu: VRAM: 4096M 0x000000F400000000 - 0x000000F4FFFFFFFF (4096M used)
[    2.902255] amdgpu 0000:04:00.0: amdgpu: GART: 256M 0x000000FF00000000 - 0x000000FF0FFFFFFF
[    2.902808] [drm] amdgpu: 4096M of VRAM memory ready
[    2.902813] [drm] amdgpu: 4096M of GTT memory ready.
[    2.906133] amdgpu: hwmgr_sw_init smu backed is polaris10_smu
[    3.233904] amdgpu: Topology: Add dGPU node [0x699f:0x1002]
[    3.233910] amdgpu 0000:04:00.0: amdgpu: SE 2, SH per SE 1, CU per SH 5, active_cu_number 8
[    3.236776] fbcon: amdgpudrmfb (fb0) is primary device
[    3.236780] amdgpu 0000:04:00.0: [drm] fb0: amdgpudrmfb frame buffer device
[    3.509810] amdgpu 0000:04:00.0: amdgpu: Using BACO for runtime pm
[    3.510125] [drm] Initialized amdgpu 3.40.0 20150101 for 0000:04:00.0 on minor 0
[    7.162978] snd_hda_intel 0000:04:00.1: bound 0000:04:00.0 (ops amdgpu_dm_audio_component_bind_ops [amdgpu])
CYB3R ★★★★★
() автор топика
Ответ на: комментарий от CYB3R

Может быть, баг какой-то в новом ядре? Есть возможность более старое попробовать?

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

проверить в /proc/cmdline (или dmesg) что строка ядра точно включает в себя amdgpu.ppfeaturemask=0xfffd7fff

проверить

$ cat /sys/module/amdgpu/parameters/ppfeaturemask
4294803455

если нет (и видимо нет), то параметр не передался.

тогда сделать свой аналог

$ cat /etc/initramfs-tools/modules 
options amdgpu ppfeaturemask=0xfffd7fff

и перестроить инитрд.

s-o
()
Ответ на: комментарий от s-o
~ cat /sys/module/amdgpu/parameters/ppfeaturemask
0xffffbfff
CYB3R ★★★★★
() автор топика
Ответ на: комментарий от Kron4ek

Кстати, напряжение иногда можно снизить не снижая частоту (собственно, андервольтинг в чистом виде), в таком случае производительность вообще не теряется, а вот энергопотребление снижается.

Это надо очень осторожно делать, потому что легко может при этом некорректно работать. Я так cpu андервольтил. Все было хорошо, но в интенсивных вычислениях с плавающей точкой иногда стали ошибки проскакивать.

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

Это верно, нужно по чуть-чуть снижать и смотреть, как работает под нагрузкой. Впрочем, в случае с видеокартой это не так опасно как в случае с процессором, как максимум система просто зависнет (у меня так было). Тогда как в случае с процессором могут быть какие-нибудь критические ошибки, приводящие к потере данных на файловой системе, например, так как он за обработку всего отвечает.

Kron4ek ★★★★★
()
Последнее исправление: Kron4ek (всего исправлений: 1)
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.