🐧 KSysGuard + NVidia GPU

Posted: 2019-10-27 in Hardware, IT
Метки:, ,

Всем привет. Если на вашей машине стоит линух, и вы хоть раз заглядывали в мониторинг тулзой ksysguard, то могли заметить, что кроме списка процессов и общих графиков по загрузке CPU, памяти и сети можно добавлять ещё и свои вкладки. Но по умолчанию там есть только внутрисистемные датчики и те аппаратные сенсоры, которые видит ядро (это прежде всего всякие сенсоры материнской платы о температурах, оборотах кулера и напряжениях питания).
Однако туда можно прикрутить и датчики от других устройств, самое интерсное из которых — видеокарта.

Если в вашей линукс-машине стоит дискретная карта, то возникает резонная мысль для определения её состояния не запускать каждый раз панель от драйвера или какие-то диагностические тулы, а добавить эти данные в тот же ksysguard.

Оказывается, это сделать совсем не сложно. Ключевая идея — использование механизма мониторинга удалённого хоста. В моём случае используется видеокарта nvidia с их фирменным драйвером, и у нас в комплекте есть такие тулы, как nvidia-settings и nvidia-smi.

Сперва берем готовый скрипт интеграции:
— можно отсюда https://gist.github.com/frantic1048/41f56fd6328fa83ce6ad5acb3a4c0336
тут скрипт полагается на тул nvidia-settings (это графическая тула от драйвера для настройки/мониторинга видяхи), а эта тулза не работает без иксов. Это может вызвать проблемы, если вам понадобится мониторить карты по удалёнке через SSH или в аварийном режиме без запущенной графической оболочки.

— или отсюда https://gist.github.com/Sporif/4ce63f7b6eea691bdbb18905a9589169
Этот скрипт полагается на консольную утилиту nvidia-smi, которая менее капризна в плане окружения (ей нужен только загруженный ядерный модуль nvidia), и которая работает вне зависимости от ранлевела и наличия запущенной графической оболочки.
К тому же тут автор не забыл про единицы измерения, да и сам код чище, нет вызовов awk, ибо вывод nvidia-smi сильно проще обрабатывать.

Впрочем, ничто не мешает совместить два скрипта в один и использовать данные из обоих тулз. Идея скрипта проста до безобразия — это по сути простейший вариант ksysguardd, который отдает данные в понятном программе виде, взяв их от утилит мониторинга.

Так что сохраняем этот перловый скрипт, например, в /opt/nvmon.pl
Запускаем для проверки, что скрипт отдаёт данные:
$ perl /opt/nvmon.pl
ksysguardd 1.2.0
ksysguardd> monitors
gpu_temp integer
gpu_graphics integer
gpu_memory integer
gpu_video_engine integer
gpu_fan_speed integer
gpu_core_usage integer
gpu_core_clock integer
gpu_mem_mib integer
gpu_mem_clock integer
gpu_video_decode integer
gpu_video_encode integer
ksysguardd> gpu_mem_mib
878
ksysguardd> gpu_temp
38
ksysguardd>

Прерываем скрипт по Ctrl-C, осталось его прописать в свой локальный мониторинг.

Открываем ksysguard, «Файл» — «Мониторинг удалённого хоста…», прописываем нашу команду запуска:

После этого видим, что справа в списке датчиков появилась новая группа GPU-Local, делаем «Файл» — «Создать вкладку», и накидываем на эту вкладку наши датчики GPU. Теперь запускаем ksysguard, и какое-нить более-менее тяжелое gpu-приложение, например игруху.

Смотрим на двух грустных товарищей на заднем плане, не осиливших настроить подобное под виндой на радеоне:

После чего закрываем игру и отчетливо видим момент её закрытия на графиках мониторинга GPU:

Теперь наш мониторинг стал ещё чуточку удобнее.

- комментарии

Добавить комментарий

Заполните поля или щелкните по значку, чтобы оставить свой комментарий:

Логотип WordPress.com

Для комментария используется ваша учётная запись WordPress.com. Выход /  Изменить )

Google photo

Для комментария используется ваша учётная запись Google. Выход /  Изменить )

Фотография Twitter

Для комментария используется ваша учётная запись Twitter. Выход /  Изменить )

Фотография Facebook

Для комментария используется ваша учётная запись Facebook. Выход /  Изменить )

Connecting to %s

This site uses Akismet to reduce spam. Learn how your comment data is processed.