Донецкий техникум промышленной автоматики

контроль і розгін графічних карт NVIDIA в Linux

  1. nvidia-smi
  2. Корисні команди
  3. Журнал
  4. Driver Persistence
  5. розгін
  6. висновок

Багато геймери, Майнер і просто любителі повозитися з multimedia давно використовують відеокарти NVIDIA для своїх цілей. Використовують на «всю котушку». Розробники відеокарт дозволили простим людям створювати програми для запуску на відкритих, використовуючи міць всіх CUDA ядер. Попутно відеокарти стали комплектуватися оперативною пам'яттю в кілька гігабайт. Після цього проста відеокарта перетворилася в комп'ютер-в-комп'ютері. Тому контроль графічних карт NVIDIA є першочерговим завданням для тих, хто хоче вичавити по максимуму і одночасно домогтися того, щоб карта працювала, як можна довше.

nvidia-smi

Для контролю стану відеокарти ми будемо використовувати утиліту nvidia-smi (NVIDIA System Management Interface), яка входить в комплект драйверів вироблених компанією NVIDIA для своїх карт.

Якщо у вас Linux, то після установки NVIDIA драйверів nvidia-smi можна знайти в папці:

/ Usr / bin / nvidia-smi

Nvidia-smi є консольної програмою (у неї немає графічного інтерфейсу) і для її запуску необхідно скористатися командним рядком.

Корисні команди

З моєї точки зору самої корисним способом запуску nvidia-smi, є запуск без параметрів:

nvidia-smi

ви отримаєте багато корисної інформації структурованої у вигляді простенької таблички. Давайте запусти кілька додатків навантажувальних відеокарти і подивимося, що видасть nvidia-smi. Для цього скористаємося прикладами, які поставляються разом з NVIDIA Cuda Toolkit (установка цього Toolkit описана тут ). Ці приклади точно навантажать нашу відеокарту 🙂 А так же запустимо конвертування відео з одного формату в інший за допомогою утиліти FFmpeg , Яка проводить кодування / розкодування відео на графічний прискорювач відеокарти .

Дивлячись на скріншот ми бачимо, що у нас запущені 4 додатки використовують ресурси відеокарти:

  • Xorg - графічна підсистема Linux. Використовує драйвер NVIDIA, тому вона тут в списку;
  • SimpleGL - приклад з Cuda Toolkit;
  • marchinCubes - ще приклад з Cuda Toolkit;
  • FFmpeg - в нашому тесті він займається конвертацією відео за допомогою NVIDIA GPU.

Шапка таблиці дає інформацію про назву відеокарти, версії драйвера, поточний режим роботи і температуру. Все дається в зрозумілому вигляді і додаткових пояснень не вимагає. Розглянемо докладніше розділ Processes, тут кожен процес має 5 параметрів:

  • GPU - номер відеокарти на якому додаток запущено (якщо відеокарта одна, то там буде 0);
  • PID - ID процесу, з цього ID ви можете kill'ьнуть процес звичайної командою kill;
  • Type - тип програми:
    • «G» - графічне (звичайна графіка, яка отрісовивается відкритий);
    • «C» - обчислювальний, наприклад можна дуже ефективно перемножать матриці на відеокарті (CUDA ядра), але частіше за все підбирають паролі або Майні битки;
    • «G + C» - малює і обчислює і все це робить за допомогою відеокарти.
  • Process name - назва програми;
  • GPU Memory Usage - скільки відеопам'яті займає додаток.

Щоб отримати максимум інформації про стан відеокарти наберіть:

nvidia-smi -q

вивалиться величезна «простирадло», де ви знайдете всю інформацію про вашу картку.

Якщо встановлено кілька відеокарт в системі і потрібно отримати інформацію про якийсь мапі конкретно, то потрібно вказати ID цієї карти:

nvidia-smi -q -i 1

Для того, щоб отримати весь список відеокарт в системі за допомогою команди:

nvidia-smi -L

Журнал

Для контролю стану відеокарти протягом певного проміжку часу допоможе журнал або log. Nvidia-smi дозволяє виводити інформацію про необхідні параметри на екран або у файл для подальшого аналізу.

Наступна команда буде безперервно з інтервалом в 5 секунд виводити на екран інформація про споживання відеопам'яті і температурі GPU:

nvidia-smi --query-gpu = timestamp, name, temperature.gpu, memory.free, memory.used --format = csv -l 5 timestamp, name, temperature.gpu, memory.free [MiB], memory.used [MiB] 2018/04/01 07: 48: 31.490, GeForce 840M, 46, 1778 MiB, 224 MiB 2018/04/01 07: 48: 36.491, GeForce 840M, 46, 1778 MiB, 224 MiB 2018/04/01 07: 48: 41.492, GeForce 840M, 46, 1778 MiB, 224 MiB

За допомогою опції «-f» можна перенаправити висновок в файл:

nvidia-smi --query-gpu = timestamp, name, temperature.gpu, memory.free, memory.used --format = csv -l 5 -f video.log

Ще один спосіб дивитися за відкритий - це запустити nvidia-smi з ключами dmon або pmon.

За допомогою dmon можна стежити за загальними параметрами відеокарти. Я найчастіше використовую dmon для контролю завантаженості чіпів NVDEC / NVENC розташованих в карті NVIDIA і які відповідають за кодування та розкодування відео на апаратному рівні.

nvidia-smi dmon # gpu pwr temp sm mem enc dec mclk pclk # Idx WC%%%% MHz MHz 0 - 46 0 0 - - 405 135 0 - 46 0 0 - - 405 135 0 - 46 6 2 - - 405 135

Якщо хочете журналіровать споживання ресурсів відеокарти кожним прорцессом, то можна скористатися опцією pmon.

nvidia-smi pmon # gpu pid type sm mem enc dec command # Idx # C / G%%%% name 0 3473 G 0 0 0 0 Xorg 0 27856 C 2 3 60 45 ffmpeg 0 3473 G 0 0 0 0 Xorg 0 27856 C 2 3 71 53 ffmpeg 0 3473 G 0 0 0 0 Xorg 0 27856 C 4 6 79 58 ffmpeg

Driver Persistence

Peristence - сталість. Якщо з додатком потрібна відеокарта, то звернення відбувається спочатку до драйверу, а від драйвера до відеокарти. Сучасні системи можуть вивантажувати драйвери з пам'яті (наприклад, знизити енергоспоживання). Якщо додаток вимагає драйвер, а драйвер в цей час вивантажено, то система завантажує драйвер. На це йде час. Виникає лаг (lag). Щоб лагов не було, є можливість зробити драйвер невивантажуваного:

nvidia-smi -pm 0

перевіряємо статус драйвера »

# Nvidia-smi -q | grep Pers Persistence Mode: Enabled

для того, щоб повернути все як було (дозволити вивантажувати драйвер) робимо:

nvidia-smi -pm 1

і відразу ж перевіряємо:

# Nvidia-smi -q | egrep Pers Persistence Mode: Enabled

Слід пам'ятати, що якщо ви змінювали налаштування відеокарти (частоту, енергоспоживання), то переклад / виведення її в Persistence скине всі попередні налаштування.

розгін

За замовчуванням розгін вимкнений. Ви не можете контролювати частоту графічного процесора:

ні швидкість вентилятора на відеокарті:

Для того, щоб в nvidia-settings з'явилася можливість розгону, потрібно додати в файл

/etc/X11/xorg.conf

в секцію Section «Device» рядок:

Option "Coolbits" "13"

і перезавантажити комп'ютер. Після перезавантаження в nvidia-settings стануть доступні наступні опції для регулювання розгону:

настройка частоти графічного процесора

настройка частоти графічного процесора

настройка швидкості обертання вентилятора

настройка швидкості обертання вентилятора

Слід пам'ятати, що розгін переводить відеокарту в нестандартний режим роботи і тому контроль її стану потрібно здійснювати ще ретельніше.

висновок

У цій статті ми розглянули, як здійснювати контроль і розгін графічних карт NVIDIA в Linux. Торкнулися тільки самі базові принципи і лише злегка занурилися в цю цікаву тему. На простих прикладах подивилися, як стежити за станом відеокарти, як вести логи. Злегка торкнулися теми розгону. Правда часто вже і цього достатньо, щоб грамотно задіяти міць відеокарти.