- Published on
nvidia-smi 命令详解
nvidia-smi 是 NVIDIA System Management Interface 的缩写。
1. 实时监控核心指标(基础必备)
watch -n 1 nvidia-smi
- 作用:最常用命令,每 1 秒刷新一次,实时显示所有 GPU 的核心状态概览(使用率、显存、温度、进程)。
- 替代:
nvidia-smi -l 1(但watch命令的显示更清晰)。
2. 监控指定进程的显存变化(定位内存泄漏)
nvidia-smi pmon -i 0 -s um 1
- 作用:监控 GPU 0 上每个进程的显存使用变化,每秒刷新一次。
-s um表示监控显存使用。 - 用途:当怀疑某个进程存在显存泄漏时,用此命令观察其显存占用是否随时间持续增长。
3. 显示最详细的 GPU 信息(高级调试)
nvidia-smi -q
- 作用:查询并显示所有 GPU 的完整技术规格和状态,信息量极大。
- 关键信息包括:
- ECC 错误计数
- 电源和功耗限制
- 时钟频率(当前/最大)
- 性能状态(P-State)
- 计算进程的完整命令行
- 过滤查看:
nvidia-smi -q -d PERFORMANCE仅查看性能相关状态。
4. 强制终止占用 GPU 的进程(清理环境)
sudo nvidia-smi --gpu-reset
- 作用:重置指定 GPU,强制停止其上的所有计算进程并清理显存。这是
kill -9都无效时的"杀手锏"。 - 警告:慎用! 这会终止目标 GPU 上的所有工作,可能导致数据丢失。仅在进程卡死、显存无法释放时使用。
- 指定 GPU:
sudo nvidia-smi -i 0 --gpu-reset仅重置 GPU 0。
5. 以机器可读格式输出(用于脚本监控)
nvidia-smi --query-gpu=index,timestamp,name,temperature.gpu,utilization.gpu,utilization.memory,memory.total,memory.free,memory.used --format=csv
- 作用:以 CSV 格式输出指定指标,便于用脚本(Python、Shell)解析和记录,用于构建自动化监控系统。
- 常用字段扩展:
power.draw:当前功耗clocks.gr:显卡核心时钟频率clocks.mem:显存时钟频率ecc.errors.corrected.volatile.total:累计纠错 ECC 错误数
6. 持续监控并输出详细 GPU 信息
nvidia-smi --query-gpu=timestamp,name,temperature.gpu,utilization.gpu,utilization.memory,memory.used,memory.total --format=csv -l 1
进阶技巧:组合使用
持续监控并记录到文件:
nvidia-smi --query-gpu=timestamp,utilization.gpu,memory.used,temperature.gpu --format=csv -l 1 > gpu_log.csv查看进程的父进程信息(找出是谁启动了占用 GPU 的进程):
nvidia-smi --query-compute-apps=pid,process_name,used_memory --format=csv然后使用
pstree -p <PID>查看进程树。
THE END