Перейти к содержимому
Komonec

Управление частотами и напряжением RX470/480 в Linux

Рекомендуемые сообщения

(изменено)

Добрый день.

 

Подскажите, есть ли возможность управлять частотами и напряжением RX470/480 в Linux (Ubuntu, Debian)?

 

Знаю, что можно менять значения в /sys/class/drm/card*/device/

 

Например, чтобы изменить частоту чипа, нужно сделать echo 7 > /sys/class/drm/card0/device/pp_dpm_sclk

0: 300Mhz

1: 466Mhz
2: 644Mhz
3: 950Mhz
4: 1130Mhz
5: 1150Mhz
6: 1175Mhz
7: 1200Mhz*

 

Что не очень удобно. Как управлять напряжением - я не нашел.

Пробовал управлять частотами в майнер от Клаймора, но значения не менялись.

Изменено пользователем Komonec

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

Рискую быть заминусованным, но отвечу.

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

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

Добрый день.

 

Подскажите, есть ли возможность управлять частотами и напряжением RX470/480 в Linux (Ubuntu, Debian)?

 

Знаю, что можно менять значения в /sys/class/drm/card*/device/

 

Например, чтобы изменить частоту чипа, нужно сделать echo 7 > /sys/class/drm/card0/device/pp_dpm_sclk

0: 300Mhz

1: 466Mhz

2: 644Mhz

3: 950Mhz

4: 1130Mhz

5: 1150Mhz

6: 1175Mhz

7: 1200Mhz*

 

Что не очень удобно. Как управлять напряжением - я не нашел.

Пробовал управлять частотами в майнер от Клаймора, но значения не менялись.

ну если все в ручную делать то да не очень удобно, но линукс на то и линукс что там все можно автоматизировать через скрипты

даунвольт на новых драйверах к сожалению пока не возможен, единственное решение шить в биос

лично остановился на следующей схеме:

частоты ядро/память, тайминги и вольтаж шью в биос, управление вентиляторами отдельный скрипт на питоне, теоретически их тоже можно в биос шить, но у меня сходу не получилось, а разбираться времени не было, да и скрипт на тот момент уже был написан и оттестирован

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

даунвольт на новых драйверах к сожалению пока не возможен, единственное решение шить в биос

Весь функионал в дровах уже есть, через pp_table все прекрасно даунвольтится.

Единственное для чего в линуксе нужно шить биос это тайминги.

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

есть пример рабочий? :)

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

Вот из EthOS wolfamdctrl (бинарное что-то) для управления частотами.

# ./wolfamdctrl -h
wolfamdctrl v0.1.0
Usage: ./wolfamdctrl [-i GPUIdx] [-m Mode] [--core-state State index] [--mem-state State index] [Modification options]
Mode is either 'r' for reading, or 'w' for writing.
Modification options are only valid when using write mode:
	--mem-clock Memory Mhz
	--core-clock Core Mhz
When reading, the state index parameter is optional - omitting it will show all states.
Obviously, when using write mode, the core or memory (or both) state indices and a modification option are required.


Весь функионал в дровах уже есть, через pp_table все прекрасно даунвольтится.
Единственное для чего в линуксе нужно шить биос это тайминги.

У меня некоторое время назад даже при прошивке в биос напряжения в линуксе выставлялось свое, автоматическое. Вы замеры делали ваттметром?


управление вентиляторами отдельный скрипт на питоне, теоретически их тоже можно в биос шить, но у меня сходу не получилось, а разбираться времени не было, да и скрипт на тот момент уже был написан и оттестирован

А можно поделиться скриптом для вентиляторов?

wolfamdctrl.zip

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

У меня некоторое время назад даже при прошивке в биос напряжения в линуксе выставлялось свое, автоматическое.

Это да. Некоторое время назад (незнаю как сейчас ибо пофиг) линукс категорически игнорил значения напряжений в биосе.

Но он никогда не игнорил уровень dpm и напряжение на контроллере памяти забитое через pp_table.

Он вероятно не игнорит напряжения и на ядре, но мне в настоящий момент пофиг (ибо и через dpm все работает).

Вы замеры делали ваттметром?

Розеткой EDIMAX SP2101W. Имхо ваттметры отстой ибо ими статистику нормально не собрать.

 

PS: Заранее прошу меня извинить относительно орфографических и других ошибок. У меня день рождения и я сижу пьянствую.

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

Это да. Некоторое время назад (незнаю как сейчас ибо пофиг) линукс категорически игнорил значения напряжений в биосе.

Но он никогда не игнорил уровень dpm и напряжение на контроллере памяти забитое через pp_table.

Можно пример скрипта, которым вы выставляете значения?

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

Можно пример скрипта, которым вы выставляете значения?

Нельзя (в прошлый раз за это заминусили).

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

А можно поделиться скриптом для вентиляторов?

http://pastebin.com/Npw6zD5x

 

запускать нужно из под рута, или юзера с разрешением писать в sysfs

 

максимальную/минимальную температуру и задержку можно прописать в начале скрипта, на максимальной температуре вентили на 100% на минимальной 0%, средние значения подбираются пропорционально, дефолтные значения 70/50 °С, 5 sec

 

один нюанс, заметил позже, не было времени переписывать:

 

скрипт пишет значение от 0 до 255 в файл /sys/class/drm/cardX/device/hwmon/hwmoX/pwm1

 

как бы логично предположить что  255 это вентили на 100%, а 0 - вентили отключены

 

но по факту вентили запускаются при значении ~60, если вам надо чтоб вентили включались скажем при 50 градусах, то минимальную температуру нужно указать чуть ниже

 

скрипт откатан на десятке ферм, за 5 месяцев "не было ни единого разрыва" )

 

 

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

Весь функионал в дровах уже есть, через pp_table все прекрасно даунвольтится.

Единственное для чего в линуксе нужно шить биос это тайминги.

Игралься с pp_table 5 месяцев назад, у меня тогда не получилось (

Да и сейчас вот так сходу мануалов нагуглить не удалось. Может вы подскажите где искать?

 

разве что wolfamdctrl нашёл (сверху вот тоже скидывали), но это сторонний бинарник, по отзывам - есть нюансы, одни пишут что неработает даунвольт, другие что работает, как всегда нужно проверять самому) но хотелось бы напрямую, без непонятных скомпилированых прокладок

 

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах
(изменено)

Игралься с pp_table 5 месяцев назад, у меня тогда не получилось (

Да и сейчас вот так сходу мануалов нагуглить не удалось. Может вы подскажите где искать?

А их и нет и никогда не было.

Структуру powerplaytable можно посмотреть в исходниках polaris bios editor (она такая же).

Повторюсь.

Чтобы даунвольтить ядро можно его не даунвольтить, а загнать его на высоких частотах на низкий dpm.

Это работает на всех разумных версиях ядра linux в ubuntu 16.04.

Изменено пользователем Roiltoj8

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах
(изменено)

А их и нет и никогда не было.

Структуру powerplaytable можно посмотреть в исходниках polaris bios editor (она такая же).

Повторюсь.

Чтобы даунвольтить ядро можно его не даунвольтить, а загнать его на высоких частотах на низкий dpm.

Это работает на всех разумных версиях ядра linux в ubuntu 16.04.

 

Вообще наш разговор начался с вашей фразы:

 

 

Весь функионал в дровах уже есть, через pp_table все прекрасно даунвольтится.

 

Возможно мы по разному понимаем слово "прекрасно", но то что вы описали, как по мне ни разу не "прекрасно", а настоящий гемор и изврат.

Изменено пользователем r9380

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

Возможно мы по разному понимаем слово "прекрасно", но то что вы описали, как по мне ни разу не "прекрасно", а настоящий гемор и изврат.

Для меня слово "прекрасно" означает "прекрасно работает для меня".

Правкой pp_table работает все, но это "гемор и изврат" и не везде.

Частично правкой pp_table и dpm тоже "гемор и изврат", но менее точно, существенно проще в реализации и везде.

При большой ферме затраты на "гемор и изврат" окупаются, ситуация малых ферм волнует потенциальных кодеров ровно никак

(за подобное утверждение меня тоже в прошлый раз заминусили).

Кому надо тот себе тул сделал (знаю пару человек кроме Wolf0).

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах
(изменено)

http://pastebin.com/Npw6zD5x

 

запускать нужно из под рута, или юзера с разрешением писать в sysfs

 

максимальную/минимальную температуру и задержку можно прописать в начале скрипта, на максимальной температуре вентили на 100% на минимальной 0%, средние значения подбираются пропорционально, дефолтные значения 70/50 °С, 5 sec

 

один нюанс, заметил позже, не было времени переписывать:

 

скрипт пишет значение от 0 до 255 в файл /sys/class/drm/cardX/device/hwmon/hwmoX/pwm1

 

как бы логично предположить что  255 это вентили на 100%, а 0 - вентили отключены

 

но по факту вентили запускаются при значении ~60, если вам надо чтоб вентили включались скажем при 50 градусах, то минимальную температуру нужно указать чуть ниже

 

скрипт откатан на десятке ферм, за 5 месяцев "не было ни единого разрыва" )

 

 

Спасибо за код. То что доктор прописал. Вот только не вник пока что в логику cpu_coef. Открылы cpuinfo и нашли там интел. Переписали дефолтное значение с нуля на единицу. В результате при попытке установить обороты скрипт лезет в каталог которого нет, а именно:

/sys/class/drm/card0/device/hwmon/hwmon1

Подозреваю что это особенность моей системы.

 

processor       : 0
vendor_id       : GenuineIntel
cpu family      : 15
model           : 4
model name      : Intel(R) Pentium(R) 4 CPU 2.80GHz
stepping        : 9
cpu MHz         : 350.000
cache size      : 1024 KB
physical id     : 0
siblings        : 1
core id         : 0
cpu cores       : 1
apicid          : 0
initial apicid  : 0
fpu             : yes
fpu_exception   : yes
cpuid level     : 5
wp              : yes
flags           : fpu vme de pse tsc msr pae mce cx8 apic sep mtrr pge mca cmov pat pse36 clflush dts acpi mmx fxsr sse sse2 ss ht tm pbe syscall nx lm constant_tsc pebs bts nopl eagerfpu pni dtes64 monitor ds_cpl cid cx16 xtpr
bugs            :
bogomips        : 5599.89
clflush size    : 64
cache_alignment : 128
address sizes   : 36 bits physical, 48 bits virtual
power management:
2017-03-05 01:00:47
Traceback (most recent call last):
  File "./amd_gpu_fan_ctrl.py.py", line 70, in <module>
    gpu_temp = temp(num)
  File "./amd_gpu_fan_ctrl.py.py", line 31, in temp
    with open('/sys/class/drm/card{0}/device/hwmon/hwmon{1}/temp1_input'.format(card_num, card_num + cpu_coef)) as f:
FileNotFoundError: [Errno 2] No such file or directory: '/sys/class/drm/card0/device/hwmon/hwmon1/temp1_input'
 
During handling of the above exception, another exception occurred:
 
Traceback (most recent call last):
  File "./amd_gpu_fan_ctrl.py.py", line 75, in <module>
    pwm1_enable(num)
  File "./amd_gpu_fan_ctrl.py.py", line 60, in pwm1_enable
    with open('/sys/class/drm/card{0}/device/hwmon/hwmon{1}/pwm1_enable'.format(card_num, card_num + cpu_coef), 'w') as f:
FileNotFoundError: [Errno 2] No such file or directory: '/sys/class/drm/card0/device/hwmon/hwmon1/pwm1_enable'
 
Покажите cpuinfo и ls /sys/class/drm/card0/device/hwmon/ на системе где скрипт работает из коробки. Я закомментил строки 13-16 пока.
 
UPD: да и вот ещё, наткнулся на башевскую реализацию для amdgpu-pro: https://github.com/DominiLux/amdgpu-pro-fans/blob/master/amdgpu-pro-fans.sh
Изменено пользователем kan5300

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах
(изменено)

Спасибо за код. То что доктор прописал. Вот только не вник пока что в логику cpu_coef. Открылы cpuinfo и нашли там интел. Переписали дефолтное значение с нуля на единицу. В результате при попытке установить обороты скрипт лезет в каталог которого нет, а именно:

/sys/class/drm/card0/device/hwmon/hwmon1

Подозреваю что это особенность моей системы.

И не только вашей (хотя у меня свой контроллер для вентилей). Это например с Asrock B85 с установленным G1840.

# ls -d /sys/class/drm/card?/device/hwmon/hwmon?
/sys/class/drm/card0/device/hwmon/hwmon0
/sys/class/drm/card1/device/hwmon/hwmon1
/sys/class/drm/card2/device/hwmon/hwmon2
/sys/class/drm/card3/device/hwmon/hwmon3
/sys/class/drm/card4/device/hwmon/hwmon4
/sys/class/drm/card5/device/hwmon/hwmon5

# ls /sys/class/hwmon
hwmon0  hwmon1  hwmon2  hwmon3  hwmon4  hwmon5  hwmon6

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

Более правильно видимо будет вычислить директорию hwmon как

hwmon_dir=glob.glob('/sys/class/drm/card'+card_id+'/device/hwmon/hwmon*')[0]
(карт с раздельным управлением вентиляторами я пока не видел, карты без вентилей нам не интересны). Изменено пользователем Roiltoj8

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

Добрый день, люди добрые!

 

По определенным причинам пришлось перенести карточки Sapphire RX 470 4G OC на комп с линухой. (Ubuntu 16.04, дрова amdgpu-pro 16.40).

Все завелось, скорости такие как под виндой без разгона.

Пробовал изменять параметры через /sys/class/drm/card0/device/, скорость не менялась.

Пробовал через wolfamdctrl, выставлял частоты как под виндой, но скорость падала до 7 Мх/с.

Осталась надежда на AMDOverdriveCtrl, но он выдает  ошибку "Fatal Error: Mismatch between the program and library build versions detected." Вот с ним сейчас и вожусь.

Подскажите как под линухой разогнать карточки до заветных цифр или хотя бы направьте, куда еще копать?

 

С большим к Вам уважением!

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

Добрый день, люди добрые!

 

По определенным причинам пришлось перенести карточки Sapphire RX 470 4G OC на комп с линухой. (Ubuntu 16.04, дрова amdgpu-pro 16.40).

Все завелось, скорости такие как под виндой без разгона.

Пробовал изменять параметры через /sys/class/drm/card0/device/, скорость не менялась.

Пробовал через wolfamdctrl, выставлял частоты как под виндой, но скорость падала до 7 Мх/с.

Осталась надежда на AMDOverdriveCtrl, но он выдает  ошибку "Fatal Error: Mismatch between the program and library build versions detected." Вот с ним сейчас и вожусь.

Подскажите как под линухой разогнать карточки до заветных цифр или хотя бы направьте, куда еще копать?

 

С большим к Вам уважением!

sudo ./wolfamdctrl -i 0 -m r

в студию. И скрипт запуска майнера (или строку запуска с параметрами).

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах
sudo ./wolfamdctrl -i 0 -m r

в студию. И скрипт запуска майнера (или строку запуска с параметрами).

 

sudo ./wolfamdctrl -i 0 -m r

выдает пустую строчку.

 

 

майнер запускаю со стандартными параметрами через screen:

#!/bin/sh
screen -d -m -A -S eth sudo /usr/local/ethdcrminer/start.bash

содержимое start.bash

#!/bin/sh
cd /usr/local/ethdcrminer
./ethdcrminer64 -epool eth-ru.dwarfpool.com:8008 -ewal 0x11cbc537cf13445e7ce048b54551426903123125 -epsw x -eworker comp1

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

Надо находиться либо в томже каталоге где лежит бинарник вулфктл либо прописывать полный путь например sudo /home/user/temp/wolfamdctl -i 0 -m t

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах
(изменено)

Спасибо за замечания по работе скрипта для регулирования вентиляторов. Походу на разных системах hwmon могут получать разные значения.
Переделал скрипт http://pastebin.com/URAiaMrc теперь все должно работать на любой системе где есть амд карта и amdgpu pro драйвера

Изменено пользователем r9380

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

А разьве из коробки утилой aticonfig низя менять параметры?

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

 

 

od6config не будет работать с rx 480 т.к. в amdgpu дровах нет поддержки ADL а od6config их использует. тоже самое с aticonfig, atiweak.

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

Господа, приветствую!

Я правильно понимаю что добиться результатов аналогичных Win платформе по mh/s в Linux так и не удалось? В силу знаний работы с ОС, у меня настроен linux сетап на 16.04 (4.4) + 16.60 (amdgpupro). Claymore выдает 23.4 для Sapphire 480 Nitro+. Сегодня пробовал из под винды поиграться с биосом, запустил и штатно увидел что Mh/s такой же 23-24. После игр с биосом (на win не взлетала карта из-за дров пока что забил на это) ubuntu выдает 24.7. Пробовал задать клок до 2100 через radeonjet, особо ничего не поменялось.

В интернетах упоминается что на ethos все хорошо, но учитывая отсутствие детальной инфы со скринами и так далее, выглядит как слухи

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

Господа, приветствую!

 

Я правильно понимаю что добиться результатов аналогичных Win платформе по mh/s в Linux так и не удалось? В силу знаний работы с ОС, у меня настроен linux сетап на 16.04 (4.4) + 16.60 (amdgpupro). Claymore выдает 23.4 для Sapphire 480 Nitro+. Сегодня пробовал из под винды поиграться с биосом, запустил и штатно увидел что Mh/s такой же 23-24. После игр с биосом (на win не взлетала карта из-за дров пока что забил на это) ubuntu выдает 24.7. Пробовал задать клок до 2100 через radeonjet, особо ничего не поменялось.

 

В интернетах упоминается что на ethos все хорошо, но учитывая отсутствие детальной инфы со скринами и так далее, выглядит как слухи

Если карта не шитая, то это нормальный хешрейт. 29+ появятся только после изменения таймингов в биосе.

 

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

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

Создайте аккаунт или войдите в него для комментирования

Вы должны быть пользователем, чтобы оставить комментарий

Создать аккаунт

Зарегистрируйтесь для получения аккаунта. Это просто!

Зарегистрировать аккаунт

Войти

Уже зарегистрированы? Войдите здесь.

Войти сейчас


  • Сейчас на странице   0 пользователей

    Нет пользователей, просматривающих эту страницу.

×