
Использование AMDCOVC для мониторинга, разгона и даунвольтинга GPU AMD в Linux
Утилита amdcovc разработана Матеушем Шпаковским (Mateusz Szpakowski), программистом из Польши.
Она предназначена для контроля и управления частотой видеокарт AMD, а также их вольтажом (только для драйверов Catalyst/Crimson) в операционных системах семейства linux как в консольном, так и в графическом режиме.
Программа amdcovc является надстройкой, использующей технологию OverDrive, встроенную в драйвера AMDGPU.
Она включается в GRUB в строке GRUB_CMDLINE_LINUX_DEFAULT, куда прописывают amdgpu.ppfeaturemask=0xffffffff.
При использовании amdcovc нужно понимать, что технология OverDrive поддерживается системами с ядром Линукс не ниже версии 4.17 и только для видеокарт с чипами Polaris и Vega. Поэтому на Linux 16.04 и с видеокартами других серий работа программы не гарантируется. Начиная с версии ядра 5.5 технология OverDrive поддерживает карты поколения Navi, поэтому для их полноценного использования нужно обновлять kernel.
Как скачать и скомпилировать программу amdcovc?
Архив с исходными кодами утилиты amdcovc скачивается на Github.
Для успешной компиляции нужно установить следующие библиотеки:
sudo apt install pciutils libpci-dev libncurses-dev
В директории с распакованными кодами программы amdcovc выполняют:
make
При успешном компилировании появится сообщение:
g++ -Wall -O3 -std=c++11 -DHAVE_TERMINFO=1 -c -o amdcovc.o amdcovc.cpp g++ -Wall -O3 -std=c++11 -o amdcovc amdcovc.o -ldl -lpci -lm -lncurses -ltinfo -pthread
Как использовать утилиту amdcovc?
Для запуска программы в терминале, запущенном в ее директории, выполняют команду:
./amdcovc
В результате в терминале появится информация по всем видеокартам АМД, установленным в системе: о частоте VCore, Vmemory, вольтаже ядра, загрузке ядра и памяти видеокарты, температуре, частоте вращения вентилятора, потребляемой мощности видеопроцессором, а также Core и Memory states:
Если выполнить команду amdcovc с ключом -v:
./amdcovc -v
то появится еще более детальная информация о GPU:
Для использования всех функций amdcovc нужно знать ее основные команды управления видеокартами АМД.
Команды, использующиеся для управления видеокартами утилитой amdcovc
Для управления основными параметрами видеокарт AMD используются следующие команды:
Только для драйверов AMDGPU:
-
ccoreclk[:[ADAPTERS][:LEVEL]]=CLOCK - установка current Core clock в MHz;
-
cmemclk[:[ADAPTERS][:LEVEL]]=CLOCK - установка current memory clock в MHz;
-
csocclk[:[ADAPTERS][:LEVEL]]=CLOCK - установка current SOC clock in MHz для видеокарт Vega;
-
cdcefclk[:[ADAPTERS][:LEVEL]]=CLOCK - установка current DCEF clock in MHz (Vega);
-
cfclk[:[ADAPTERS][:LEVEL]]=CLOCK - установка Fclock в MHz (AMDGPU) (vega2);
-
coreod[:[ADAPTERS][:LEVEL]]=PERCENT - установка Core Overdrive в процентах — в новых драйверах эта функция не поддерживается;
-
memod[:[ADAPTERS][:LEVEL]]=PERCENT - установка memory Overdrive в % — в новых драйверах не поддерживается;
-
coreod[:[ADAPTERS][:LEVEL]]=LEVEL - установка Core performance level;
-
memod[:[ADAPTERS][:LEVEL]]=LEVEL - установка memory performance level;
Только для драйверов AMD Catalyst/Crimson:
-
coreclk[:[ADAPTERS][:LEVEL]]=CLOCK — устанавливает частоту ядра (core clock) в MHz;
-
memclk[:[ADAPTERS][:LEVEL]]=CLOCK - установка memory clock в MHz.
-
vcore[:[ADAPTERS][:LEVEL]]=VOLTAGE - установка вольтажа Vddc в вольтах;
-
icoreclk[:ADAPTERS]=CLOCK - установка core clock в МГц для idle level;
-
imemclk[:ADAPTERS]=CLOCK - установка Memory clock в МГц для режима простоя idle;
-
ivcore[:ADAPTERS]=VOLTAGE - установка напряжения Vddc в вольтах для режима простоя (idle level);
-
fanspeed[:[ADAPTERS][:THID]]=PERCENT - установка fanspeed в процентах.
Значения параметров, использующихся в командах:
-
ADAPTERS - номер адаптера (устройства) (по умолчанию 0);
-
LEVEL — уровень производительности (обычно 0 или 1, по умолчанию — последний);
-
THID — номер контроллера температуры (thermal controller index) (должен равняться 0).
При установке значения fanspeed в ‘default’ будет принудительно включена автоматическая регулировка их вращения.
Список опций:
-
-a, --adapters=LIST — выводит на экран ифнормацию только об указанных адаптерах;
-
-v, --verbose — вывод информации для отладки (verbose informations);
-
-w, --watch=SECONDS — вывод в терминал информации каждые «значение SECONDS» секунд;
-
--version - вывод информации о версии утилиты.
Для указания номеров видеокарт используют опцию ‘—adapter’ с пеерчислением через запятую, например:
‘all’, ‘0-2’, ‘0,1,3-5’
Практические примеры использования утилиты amdcovc
При использовании команды:
sudo ./amdcovc -a 1,2,4-6
выводится короткая информация о GPU 1, 2 и 4 to 6.
Для драйверов amdgpu по команде
sudo ./amdcovc ccoreclk:0=1147
устанавливается Core clock 1147 МГц для видеокарты 0:
Команда:
sudo ./amdcovc fanspeed:0=60
устанавливает частоту вращеняи вентилятора в 60%/
sudo ./amdcovc vcore=0.88
устанавливает Vddc voltage 880 мВ для адаптера 0 для драйверов AMD Catalyst/Crimson. К сожалению, эта опция на драйверах amdgpu не работает. Выдается сообщение об ошибке: VDDC voltage available only for AMD Catalyst/Crimson drivers.
Ошибки, возникающие при компиляции amdcovc
Большинство ошибок, возникающих при компиляции утилиты amdcovc связано с отстутствием необходимых библиотек.
Например, при отсутствии библитоеки libpci-dev возникает ошибка pci/pci.h: Нет такого файла или каталога.
Терминал при этом выдает сообщение такого вида:
g++ -Wall -O3 -std=c++11 -DHAVE_TERMINFO=1 -c -o amdcovc.o amdcovc.cpp amdcovc.cpp:48:10: fatal error: pci/pci.h: Нет такого файла или каталога #include <pci/pci.h> ^~~~~~~~~~~ compilation terminated. Makefile:46: recipe for target 'amdcovc.o' failed make: *** [amdcovc.o] Error 1
Для исправления этой ошибки нужно установить libpci-dev командой:
sudo apt install libpci-dev
При появлении ошибки:
amdcovc.cpp:51:10: fatal error: term.h: Нет такого файла или каталога #include <term.h>
В этом случае нужно доустановить libncurses-dev командой:
sudo apt install libncurses-dev

