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 上的所有工作,可能导致数据丢失。仅在进程卡死、显存无法释放时使用。
  • 指定 GPUsudo 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