Komonec 98 21 фев 2017, 08:20 (изменено) Добрый день. Подскажите, есть ли возможность управлять частотами и напряжением RX470/480 в Linux (Ubuntu, Debian)? Знаю, что можно менять значения в /sys/class/drm/card*/device/ Например, чтобы изменить частоту чипа, нужно сделать echo 7 > /sys/class/drm/card0/device/pp_dpm_sclk 0: 300Mhz 1: 466Mhz2: 644Mhz3: 950Mhz4: 1130Mhz5: 1150Mhz6: 1175Mhz7: 1200Mhz* Что не очень удобно. Как управлять напряжением - я не нашел. Пробовал управлять частотами в майнер от Клаймора, но значения не менялись. Изменено 21 фев 2017, 09:01 пользователем Komonec 3 Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах
Roiltoj8 66 Опубликовано: 21 фев 2017, 16:30 Рискую быть заминусованным, но отвечу. Возможность есть (парсите pp_table и будет вам счастье), публично доступного, халявного тулза для этого нет. 2 Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах
r9380 131 Опубликовано: 22 фев 2017, 12:44 Добрый день. Подскажите, есть ли возможность управлять частотами и напряжением 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* Что не очень удобно. Как управлять напряжением - я не нашел. Пробовал управлять частотами в майнер от Клаймора, но значения не менялись. ну если все в ручную делать то да не очень удобно, но линукс на то и линукс что там все можно автоматизировать через скрипты даунвольт на новых драйверах к сожалению пока не возможен, единственное решение шить в биос лично остановился на следующей схеме: частоты ядро/память, тайминги и вольтаж шью в биос, управление вентиляторами отдельный скрипт на питоне, теоретически их тоже можно в биос шить, но у меня сходу не получилось, а разбираться времени не было, да и скрипт на тот момент уже был написан и оттестирован 2 Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах
Roiltoj8 66 Опубликовано: 22 фев 2017, 13:22 даунвольт на новых драйверах к сожалению пока не возможен, единственное решение шить в биосВесь функионал в дровах уже есть, через pp_table все прекрасно даунвольтится. Единственное для чего в линуксе нужно шить биос это тайминги. 1 Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах
booz 314 Опубликовано: 22 фев 2017, 13:29 есть пример рабочий? :) 0 Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах
arceny 46 Опубликовано: 22 фев 2017, 13:43 Вот из 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 1 Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах
Roiltoj8 66 Опубликовано: 22 фев 2017, 14:34 У меня некоторое время назад даже при прошивке в биос напряжения в линуксе выставлялось свое, автоматическое.Это да. Некоторое время назад (незнаю как сейчас ибо пофиг) линукс категорически игнорил значения напряжений в биосе. Но он никогда не игнорил уровень dpm и напряжение на контроллере памяти забитое через pp_table. Он вероятно не игнорит напряжения и на ядре, но мне в настоящий момент пофиг (ибо и через dpm все работает). Вы замеры делали ваттметром?Розеткой EDIMAX SP2101W. Имхо ваттметры отстой ибо ими статистику нормально не собрать. PS: Заранее прошу меня извинить относительно орфографических и других ошибок. У меня день рождения и я сижу пьянствую. 2 Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах
arceny 46 Опубликовано: 22 фев 2017, 14:40 Это да. Некоторое время назад (незнаю как сейчас ибо пофиг) линукс категорически игнорил значения напряжений в биосе. Но он никогда не игнорил уровень dpm и напряжение на контроллере памяти забитое через pp_table. Можно пример скрипта, которым вы выставляете значения? 0 Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах
Roiltoj8 66 Опубликовано: 22 фев 2017, 14:45 Можно пример скрипта, которым вы выставляете значения?Нельзя (в прошлый раз за это заминусили). 0 Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах
r9380 131 Опубликовано: 22 фев 2017, 16:30 А можно поделиться скриптом для вентиляторов? 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 месяцев "не было ни единого разрыва" ) 2 Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах
r9380 131 Опубликовано: 22 фев 2017, 16:37 Весь функионал в дровах уже есть, через pp_table все прекрасно даунвольтится. Единственное для чего в линуксе нужно шить биос это тайминги. Игралься с pp_table 5 месяцев назад, у меня тогда не получилось ( Да и сейчас вот так сходу мануалов нагуглить не удалось. Может вы подскажите где искать? разве что wolfamdctrl нашёл (сверху вот тоже скидывали), но это сторонний бинарник, по отзывам - есть нюансы, одни пишут что неработает даунвольт, другие что работает, как всегда нужно проверять самому) но хотелось бы напрямую, без непонятных скомпилированых прокладок 0 Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах
Roiltoj8 66 Опубликовано: 22 фев 2017, 18:58 (изменено) Игралься с pp_table 5 месяцев назад, у меня тогда не получилось ( Да и сейчас вот так сходу мануалов нагуглить не удалось. Может вы подскажите где искать? А их и нет и никогда не было. Структуру powerplaytable можно посмотреть в исходниках polaris bios editor (она такая же). Повторюсь. Чтобы даунвольтить ядро можно его не даунвольтить, а загнать его на высоких частотах на низкий dpm. Это работает на всех разумных версиях ядра linux в ubuntu 16.04. Изменено 22 фев 2017, 20:24 пользователем Roiltoj8 1 Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах
r9380 131 Опубликовано: 23 фев 2017, 12:04 (изменено) А их и нет и никогда не было. Структуру powerplaytable можно посмотреть в исходниках polaris bios editor (она такая же). Повторюсь. Чтобы даунвольтить ядро можно его не даунвольтить, а загнать его на высоких частотах на низкий dpm. Это работает на всех разумных версиях ядра linux в ubuntu 16.04. Вообще наш разговор начался с вашей фразы: Весь функионал в дровах уже есть, через pp_table все прекрасно даунвольтится. Возможно мы по разному понимаем слово "прекрасно", но то что вы описали, как по мне ни разу не "прекрасно", а настоящий гемор и изврат. Изменено 23 фев 2017, 12:05 пользователем r9380 1 Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах
Roiltoj8 66 Опубликовано: 23 фев 2017, 15:20 Возможно мы по разному понимаем слово "прекрасно", но то что вы описали, как по мне ни разу не "прекрасно", а настоящий гемор и изврат.Для меня слово "прекрасно" означает "прекрасно работает для меня". Правкой pp_table работает все, но это "гемор и изврат" и не везде. Частично правкой pp_table и dpm тоже "гемор и изврат", но менее точно, существенно проще в реализации и везде. При большой ферме затраты на "гемор и изврат" окупаются, ситуация малых ферм волнует потенциальных кодеров ровно никак (за подобное утверждение меня тоже в прошлый раз заминусили). Кому надо тот себе тул сделал (знаю пару человек кроме Wolf0). 0 Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах
kan5300 7 Опубликовано: 4 мар 2017, 22:03 (изменено) 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 Изменено 5 мар 2017, 04:36 пользователем kan5300 1 Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах
Roiltoj8 66 Опубликовано: 5 мар 2017, 23:16 (изменено) Спасибо за код. То что доктор прописал. Вот только не вник пока что в логику 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] (карт с раздельным управлением вентиляторами я пока не видел, карты без вентилей нам не интересны). Изменено 5 мар 2017, 23:19 пользователем Roiltoj8 0 Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах
alexanderbondikov 0 Опубликовано: 6 мар 2017, 06:50 Добрый день, люди добрые! По определенным причинам пришлось перенести карточки 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." Вот с ним сейчас и вожусь. Подскажите как под линухой разогнать карточки до заветных цифр или хотя бы направьте, куда еще копать? С большим к Вам уважением! 0 Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах
kan5300 7 Опубликовано: 6 мар 2017, 19:18 Добрый день, люди добрые! По определенным причинам пришлось перенести карточки 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 в студию. И скрипт запуска майнера (или строку запуска с параметрами). 0 Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах
alexanderbondikov 0 Опубликовано: 7 мар 2017, 04:36 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 0 Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах
kan5300 7 Опубликовано: 7 мар 2017, 20:24 Надо находиться либо в томже каталоге где лежит бинарник вулфктл либо прописывать полный путь например sudo /home/user/temp/wolfamdctl -i 0 -m t 0 Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах
r9380 131 Опубликовано: 8 мар 2017, 14:21 (изменено) Спасибо за замечания по работе скрипта для регулирования вентиляторов. Походу на разных системах hwmon могут получать разные значения.Переделал скрипт http://pastebin.com/URAiaMrc теперь все должно работать на любой системе где есть амд карта и amdgpu pro драйвера Изменено 9 мар 2017, 09:46 пользователем r9380 0 Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах
Socket32 22 Опубликовано: 8 мар 2017, 17:43 А разьве из коробки утилой aticonfig низя менять параметры? 0 Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах
Mictlantecuhtli 95 Опубликовано: 8 мар 2017, 18:21 od6config не будет работать с rx 480 т.к. в amdgpu дровах нет поддержки ADL а od6config их использует. тоже самое с aticonfig, atiweak. 1 Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах
tooler 0 Опубликовано: 31 мар 2017, 12:53 Господа, приветствую!Я правильно понимаю что добиться результатов аналогичных 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 все хорошо, но учитывая отсутствие детальной инфы со скринами и так далее, выглядит как слухи 0 Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах
muchacho 0 Опубликовано: 31 мар 2017, 16:39 Господа, приветствую! Я правильно понимаю что добиться результатов аналогичных 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 Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах