nvidia-smi默认输出直接显示GPU温度(℃)、算力利用率(%)和显存占用(MiB),无需额外参数;Temp为温度,GPU-Util为利用率,Memory-Usage为显存已用/总量。

直接看温度和占用:nvidia-smi 默认输出里就有
运行 nvidia-smi 后,终端会显示一个表格,其中 Temp 列就是当前 GPU 温度(单位 ℃),GPU-Util 是算力利用率(%),Memory-Usage 是显存已用 / 总量(单位 MiB)。这些字段在默认视图中始终可见,无需额外参数。
常见误判点:
- 看到
Temp显示N/A:说明驱动未加载、GPU 未通电,或传感器硬件异常(多见于老卡或 BIOS 关闭了 GPU 监控) -
GPU-Util长期为 0%,但Memory-Usage占用高:大概率是进程只占显存没跑核(比如 PyTorch 模型加载完但没 forward),不是 GPU 真空闲 - 多卡系统里只看到一块卡的温度:默认只显示第一个可用 GPU(编号 0),其余卡需加
-i指定
按秒刷新监控:nvidia-smi -l1 和 watch 组合
想观察温度变化趋势或压测时盯住利用率,得让输出动起来。最稳妥的是 nvidia-smi -l1(每秒刷新一次),Ctrl+C 停止。它比 watch -n 0.5 nvidia-smi 更可靠——因为 watch 是外部轮询,可能错过驱动层瞬时状态更新,而 -l 是 nvidia-smi 内置的 polling 机制,与驱动通信更直接。
注意事项:
-
nvidia-smi -l不带数字时默认 5 秒,容易漏掉短时峰值;建议明确写-l1或-l2 - 如果执行后卡住几秒才出第一行,说明驱动响应慢,可能是 GPU 处于低功耗状态(
Perf显示 P12)、或 PCIe 链路未唤醒 - 终端窗口太窄会导致表格折行,温度和利用率被挤到下一行,肉眼难定位——调宽终端或用
--format=csv导出更稳
导出结构化数据:--query-gpu + --format=csv
要写脚本自动告警(比如温度 > 85℃ 发邮件),就不能靠人眼扫表格。用 --query-gpu 指定字段,配合 --format=csv 输出机器可读格式:
nvidia-smi --query-gpu=name,temperature.gpu,utilization.gpu,utilization.memory,memory.used,memory.total --format=csv,noheader,nounits
关键细节:
-
temperature.gpu是唯一能取到核心温度的字段;temperature.memory等字段在多数消费卡上返回N/A -
noheader去掉表头,方便 awk/sed 解析;nounits去掉单位(如 ℃、%、MiB),避免字符串处理麻烦 - 字段名必须严格匹配官方文档(
nvidia-smi --help-query-gpu可查),写成temp或gpu_temp会报错 - 该命令不支持
-l实时流式输出,如需持续采集,得套 shell 循环或用nvidia-smi -q -d TEMPERATURE -x转 XML 再解析
为什么 nvidia-smi 报错“couldn’t communicate with the NVIDIA driver”?
这是温度/占用查不到的根本原因,不是命令写错了。错误信息本身已指明路径:驱动层断连。优先排查这三件事:
- 确认
nvidia内核模块是否加载:lsmod | grep nvidia—— 若无输出,执行sudo modprobe nvidia;若报错Operation not permitted,说明 Secure Boot 启用且驱动未签名 - 检查
/dev/nvidiactl和/dev/nvidia0设备节点是否存在:ls -l /dev/nvidia*—— 缺失意味着 udev 规则未触发或权限不足 - 运行
dmesg | grep -i nvidia查内核日志,重点关注Failed to initialize NVDA GPU或BAR is not assigned类提示,通常指向 BIOS 中 PCIe/Resizable BAR 设置问题或物理插槽接触不良
温度传感器依赖驱动完整初始化,只要这个错误存在,任何 nvidia-smi 参数都拿不到有效值——别在参数上浪费时间,先让驱动活过来。


















