gpu-util=0%不等于gpu空闲,它仅反映sm单元活跃周期,无法检测显存拷贝、tensor core未触发或pcie瓶颈;真实计算压力需结合memory-usage、temp和进程列表判断。

别只看 GPU-Util,它根本不能代表计算压力
看到 nvidia-smi 里 GPU-Util 显示 0% 就以为 GPU 没干活?这是最常见也最危险的误判。这个字段只统计 SM 单元的“活跃周期占比”,对以下场景完全无感:
• 纯显存拷贝(比如 torch.cuda.empty_cache() 后的内存整理)
• Tensor Core 没触发(模型刚加载完权重,还没开始 forward)
• PCIe 带宽瓶颈导致核空等(Perf 显示 P12 或 P8,但 GPU-Util 仍是 0)
真正反映计算压力的,是 Memory-Usage、Temp 和进程列表的组合信号。
nvidia-smi -l1 是唯一靠谱的实时监控方式
watch -n1 nvidia-smi 看似方便,实则漏峰严重——每次都是新进程调用驱动接口,瞬时峰值极易被跳过。nvidia-smi -l1 才是正确姿势:
• 内置 polling,与内核模块直连,响应更准
• 不加数字默认 5 秒刷新,压测时基本无效,必须显式写 -l1
• 首次输出延迟 > 2 秒?说明 GPU 处于低功耗状态(查 Perf 列是否为 P12),需跑个 dummy kernel 唤醒
• 终端宽度不够会导致表格折行,Temp 和 GPU-Util 被挤到下一行 → 调宽终端,或改用结构化输出:nvidia-smi --query-gpu=temperature.gpu,utilization.gpu,utilization.memory --format=csv,noheader,nounits
宝塔Linux面板11.8.1为官网当前正式版,新增AI建站能力并经过宝塔网站工程师深度调教,开放自定义AI功能API,同时对WAF进行界面重构和深度优化,提升拦截能力与运维效率。
多卡系统里,nvidia-smi 默认只骗你一张卡
默认只显示索引为 0 的 GPU,其他卡的状态完全不可见。
定位真实压力源必须组合使用:
• 查所有卡物理信息:nvidia-smi -L(输出每张卡的 UUID 和索引)
• 查某张卡详情(如索引 1):nvidia-smi -i 1
• 查谁占着设备:fuser -v /dev/nvidia*(返回的是主设备号,需对照 nvidia-smi -L 中顺序)
• 查进程归属用户:ps -o pid,user,comm -p [PID]
权限常被忽略:普通用户必须在 video 或 render 组,且 /dev/nvidia* 权限必须是 c 195,* root root,否则报 NVIDIA-SMI has failed because it couldn't communicate with the NVIDIA driver
自动化判断压力?别 parse 表格,用 --query-gpu
靠人眼扫表格做阈值告警,既慢又不可靠。
脚本应直接消费机器可读格式:
• 温度 + 利用率:nvidia-smi --query-gpu=temperature.gpu,utilization.gpu --format=csv,noheader,nounits
• 显存占用 + 进程名:nvidia-smi --query-compute-apps=pid,process_name,used_memory --format=csv,noheader,nounits
• 关键阈值建议:
– Memory-Usage > 90% 总量 → 显存即将 OOM
– Temp 持续 > 85℃ → 触发降频,算力实际已衰减
– Perf 长期卡在 P12 或 P8 → 计算单元未被唤醒,不是没活干,是根本没启动










