Статьи

Использование 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

Leave a Reply

Ваш адрес email не будет опубликован. Обязательные поля помечены *

Chinese (Traditional) ZH-TW English EN French FR German DE Russian RU Spanish ES