nvidia-smi (NVIDIA System Management Interface) — штатная CLI для мониторинга и частичного управления GPU NVIDIA. Идёт вместе с драйвером, отдельный «тяжёлый» стек не нужен. Ниже — базовая сводка, query/format, power limit, процессы и простое логирование.
Базовая сводка по GPU
Команда без аргументов показывает таблицу по всем видимым картам:
nvidia-smi
В шапке обычно видны версия драйвера и заявленная поддержка CUDA. В таблице по GPU:
- имя модели, bus-id, persistence mode;
- вентилятор, температура, perf state, power draw / power cap;
- занятая / суммарная видеопамять;
- GPU-Util, compute mode;
- ниже — процессы, которые держат контекст на GPU (PID, тип, память).
Условный фрагмент вывода (цифры и модель зависят от железа):
+-----------------------------------------------------------------------------+ | NVIDIA-SMI 535.104.05 Driver Version: 535.104.05 CUDA Version: 12.2 | |-------------------------------+----------------------+----------------------+ | GPU Name Persistence-M| Bus-Id Disp.A | Volatile Uncorr. ECC | | Fan Temp Perf Pwr:Usage/Cap| Memory-Usage | GPU-Util Compute M. | | 0 NVIDIA RTX 4090 On | 00000000:01:00.0 Off | Off | | 34% 65C P8 15W / 450W | 4000MiB / 24576MiB | 12% Default | +-------------------------------+----------------------+----------------------+
Обновление «как top» через watch:
watch -n 2 nvidia-smi
Либо встроенный loop у самой утилиты: nvidia-smi -l 2 (интервал в секундах).
Версия драйвера и CUDA
Для скриптов удобнее машинночитаемый CSV через --query-gpu и --format:
nvidia-smi --query-gpu=driver_version,cuda_version --format=csv
Пример ответа:
driver_version, cuda_version 535.104.05, 12.2
Поле cuda_version в nvidia-smi — это максимальная версия CUDA, которую заявляет драйвер, а не обязательно то, что установлено в /usr/local/cuda. Для точной версии toolkit смотрите nvcc --version, если toolkit реально стоит.
Энергопотребление и power limit
Текущий draw:
nvidia-smi --query-gpu=power.draw,power.limit,power.max_limit --format=csv
Ограничить power limit (Вт), например до 100:
sudo nvidia-smi -pl 100 # или для конкретной карты: sudo nvidia-smi -i 0 -pl 100
Лимит должен попадать в допустимый для модели диапазон (min/max limit). На многих системах нужны root-права и иногда включённый persistence mode. После ребута лимит часто сбрасывается — для постоянства обычно ставят unit/cron или включают persistence и скрипт на старте.
Persistence mode (драйвер не выгружается, быстрее «просыпается» GPU):
sudo nvidia-smi -pm 1
Процессы на GPU
Кто держит карту — внизу обычного nvidia-smi или через process monitor:
nvidia-smi pmon -s um
Условный вид:
# gpu pid type sm mem enc dec command 0 1245 C 50% ... 0 0 python3 0 3765 G 5% ... 0 0 Xorg
- C — compute (CUDA и подобные нагрузки);
- G — graphics (Xorg, композитор, игры и т.п.);
- C+G — смешанный тип, если показывается.
Список в CSV:
nvidia-smi --query-compute-apps=pid,process_name,used_memory --format=csv
Зависший job — сначала мягко kill PID, при необходимости kill -9 PID. На shared-серверах сначала убедитесь, что процесс ваш: чужой CUDA-job «убивать» без договорённости — плохая идея.
Логирование
Простой поток полного вывода каждые 5 секунд в файл:
nvidia-smi -l 5 > gpu_log.txt
Для метрик удобнее сразу query + CSV (его проще парсить и класть в Prometheus/Grafana через exporter или свой скрипт):
nvidia-smi --query-gpu=timestamp,name,temperature.gpu,utilization.gpu,utilization.memory,memory.used,memory.total,power.draw --format=csv -l 5 > gpu_metrics.csv
Выборочный разбор уже записанного «красивого» лога:
grep -E 'MiB|%' gpu_log.txt | head
Полезные query-поля
Частый набор для мониторинга одной строкой:
nvidia-smi --query-gpu=index,name,temperature.gpu,utilization.gpu,memory.used,memory.total,power.draw,power.limit --format=csv,noheader,nounits
Полный список поддерживаемых полей:
nvidia-smi --help-query-gpu
На что смотреть на практике
- Memory-Usage почти full, util низкий — часто «утёк» или закеширован контекст, либо модель лежит в VRAM без активных kernel.
- Util 100%, power у cap — карта упёрлась в лимит мощности или термолимиты (смотрите temp и throttling через dmesg/другие утилиты при необходимости).
- Несколько GPU —
-i 0,1или фильтр в query; проверяйте, что job сел на нужный device (CUDA_VISIBLE_DEVICES). - MIG / vGPU — вывод и возможности отличаются; для MIG есть отдельные режимы и query.
Итог
nvidia-smi закрывает повседневные задачи: живая картина по загрузке и VRAM, версии драйвера, power limit, кто занимает GPU, простое логирование в CSV. Для продакшен-мониторинга кластера обычно дополняют DCGM, Prometheus nvidia_gpu_exporter или облачными агентами — но для отладки на конкретной машине достаточно одной утилиты из комплекта драйвера.
