AI服务器GPU算力监控:用 nvidia-smi 和 DCGM 查看真实占用
AI 服务器 GPU 算力监控的核心是同时看 GPU 利用率、显存占用和功耗,只看显存容易误判。
下面按“先确认环境、再手动查看、最后接入监控”的顺序,给出一套零基础也能照做的流程。
先确认驱动和 GPU 状态
监控工具依赖 NVIDIA 驱动,先登录服务器执行:
nvidia-smi
能正常输出显卡型号、驱动版本和显存信息,说明驱动已就绪。
如果提示命令不存在,先安装或修复驱动,再继续后面的步骤。
记录下 Driver Version 和 GPU 型号,后面选择 DCGM 版本时会用到。
用 nvidia-smi 快速判断算力占用
日常排查先看实时状态:
nvidia-smi --query-gpu=index,name,utilization.gpu,memory.used,memory.total,power.draw,temperature.gpu --format=csv -l 2
这条命令每 2 秒刷新一次,重点看三列:
utilization.gpu:GPU 计算单元利用率,持续接近 100% 说明算力在忙;长期低于 10% 但显存被占满,可能是进程卡住或任务在等数据。memory.used:已用显存。显存高不代表算力高,推理服务空闲时也会占显存。power.draw:功耗。功耗明显低于显卡额定值,通常说明没有跑满算力。
想看具体是哪个进程占用,执行:
nvidia-smi
输出下方会列出 Processes 区域,记录 PID 后可用 ps -p PID -o pid,user,cmd 确认进程归属。
安装 DCGM 做长期监控
nvidia-smi 适合临时查看,长期监控建议用 NVIDIA DCGM(Data Center GPU Manager)。
以 Ubuntu 为例,先添加官方仓库再安装:
curl -fsSL https://developer.download.nvidia.com/compute/cuda/repos/ubuntu2204/x86_64/cuda-keyring_1.1-1_all.deb -o cuda-keyring.deb
sudo dpkg -i cuda-keyring.deb
sudo apt-get update
sudo apt-get install -y datacenter-gpu-manager
sudo systemctl enable --now nvidia-dcgm
安装后验证服务状态:
systemctl status nvidia-dcgm
看到 active (running) 即表示 DCGM 已在运行。
如果系统是 CentOS 或其他发行版,仓库地址和包名会不同,按 NVIDIA 官方文档对应版本操作即可。
接入 Prometheus 采集关键指标
DCGM 自带 exporter 能力,常用方式是通过 dcgm-exporter 暴露指标。
启动容器示例:
docker run -d --gpus all --rm -p 9400:9400 nvcr.io/nvidia/k8s/dcgm-exporter:3.3.0-3.2.0-ubuntu22.04
然后在 Prometheus 的 prometheus.yml 中增加抓取任务:
scrape_configs:
- job_name: 'gpu'
static_configs:
- targets: ['服务器IP:9400']
重启 Prometheus 后,在查询框输入 DCGM_FI_DEV_GPU_UTIL,能看到曲线说明采集成功。
最值得关注的指标有:
DCGM_FI_DEV_GPU_UTIL:GPU 利用率DCGM_FI_DEV_FB_USED:显存使用量DCGM_FI_DEV_POWER_USAGE:功耗DCGM_FI_DEV_GPU_TEMP:温度
避坑与结果验证
不要只看显存判断算力是否被占用。 显存被占但利用率很低,常见于进程异常退出后残留、数据加载瓶颈或推理服务空闲。
如果 nvidia-smi 显示利用率高但业务变慢,先检查是否多个进程争抢同一张卡,可以用 nvidia-smi 的进程列表和 nvidia-smi pmon 对照。
监控接入后,做一次验证:手动跑一个短时 GPU 任务,观察 DCGM_FI_DEV_GPU_UTIL 是否同步上升,任务结束后是否回落。
曲线能跟随业务变化,说明监控链路正常。
最后提醒:DCGM 版本和驱动版本存在对应关系,升级驱动后如果 exporter 无数据,优先检查版本兼容性和 nvidia-dcgm 服务状态。