最近不少搞算法的同事跑来问我,说训练模型的时候老是卡顿,怀疑是GPU被占满了,但又不知道怎么查。其实这个问题特别常见,不管是做深度学习还是图形渲染,只要用到GPU服务器,都得学会看GPU占用情况。今天咱们就聊聊怎么像老司机一样,快速排查服务器的GPU状态。

一、为什么需要关注GPU占用?
你可能遇到过这种情况:代码跑得好好的突然变慢,或者任务直接卡死了。这时候第一反应就是“是不是GPU爆了?”确实,现在GPU成了很多计算任务的命根子,它的使用情况直接关系到任务能不能顺利完成。
我见过最夸张的例子是,有个团队三台服务器上的GPU都被同一个同事的脚本占着,但他本人完全不知道。结果其他人都等着用卡,项目进度全耽误了。所以定期检查GPU占用,就像开车要看油表一样,是基本功。
有位运维大哥说过:“不管多高级的服务器,不会看GPU占用就是瞎子摸象。”
二、基础查询命令:nvidia-smi详解
说到查GPU,第一个要掌握的就是nvidia-smi这个神器。只要你的服务器装了NVIDIA显卡和驱动,在终端直接输入这个命令就行。
来看个实际输出的例子:
| 参数 | 含义 | 正常范围 |
|---|---|---|
| GPU-Util | GPU计算单元使用率 | 根据任务浮动 |
| Memory-Usage | 显存使用量 | 警惕接近Total值 |
| Temp | GPU温度 | 通常低于85℃ |
| Power Draw | 功耗 | 不超过TDP上限 |
刚开始用的时候,你可能只关心GPU-Util那个百分比,觉得低了就是浪费,高了就是好用。其实没那么简单,有时候Util显示90%,但任务还是跑得慢,这可能是因为显存快满了,系统在频繁做数据交换。
三、实时监控与自动告警设置
光会手动查还不够,毕竟你不能一直守在终端前面。这时候就需要实时监控了。
- 简单的循环查询:在Linux下可以用
watch -n 1 nvidia-smi,每1秒刷新一次 - 配合htop使用:开两个终端,一个看GPU,一个看CPU和内存,全面把握系统状态
- 设置使用率阈值:当GPU使用率连续5分钟超过95%,自动发邮件告警
我们团队现在用的方法更省事:写了个脚本定时跑nvidia-smi,把结果解析后存到数据库里。这样不仅能看实时状态,还能分析历史趋势,比如哪个时间段的GPU最闲,就可以把大任务安排到那个时候。
四、深入分析:谁在占用GPU?
知道GPU被占用了还不够,关键是找出“罪魁祸首”。nvidia-smi命令加上-l参数可以持续监控,但更有效的是用nvidia-smi -q查看详细信息。
比如看到某个进程占了很多显存,你可以:
- 记下PID(进程ID)
- 用
ps aux | grep PID看看是哪个用户、哪个程序 - 如果是异常占用,直接
kill -9 PID结束掉
有一次我发现一张卡显存用了20G,但GPU利用率是0,明显有问题。一查是个上周跑的训练任务,早该结束了,但进程没完全退出。这种“僵尸进程”特别浪费资源,定期清理一下能省出不少卡。
五、远程查询与多服务器管理
现在很多公司都不止一台GPU服务器,可能分散在不同的机房,甚至不同的城市。总不能每台都跑过去敲命令吧?
这时候就需要远程查询技巧了:
- SSH远程执行:
ssh user@server "nvidia-smi" - 使用Prometheus+Granafa:搭建完整的监控平台,在网页上就能看所有服务器的GPU状态
- 简单的HTTP接口:自己写个脚本,把nvidia-smi的结果通过web服务暴露出来
我们现在的做法是在每台服务器上都跑一个agent,收集GPU信息后推到中央服务器。想要查哪台机的状态,打开内部网页就行,特别方便。
六、常见问题与解决方案
在实际操作中,你会遇到各种奇怪的问题,我这里总结几个常见的:
问题1:nvidia-smi命令找不到
这说明要么没装驱动,要么环境变量有问题。先试试whereis nvidia-smi找到路径,或者重装一下驱动。
问题2:GPU使用率波动太大
如果是训练任务,这可能正常,因为每个batch的计算量不同。但如果长期在0%和100%之间跳来跳去,可能是数据供给跟不上,需要检查数据加载部分。
问题3:显存泄漏
这是最头疼的问题,显存使用量一直涨,直到OOM(内存溢出)。通常是因为代码里分配了显存但没释放,需要仔细检查模型和数据处理部分。
七、GPU资源调度与优化建议
查GPU占用不是为了查而查,最终目的是为了更好地利用资源。对于团队来说,可以考虑下面这些优化方案:
- 设置使用权限:不同项目组用不同的GPU,避免互相影响
- 任务队列:当所有卡都被占用时,新任务自动排队
- 资源共享:对于小任务,可以考虑一张卡同时跑多个任务
我们最近在试一个办法:把8张卡分成两组,4张给紧急任务用,另外4张给大家日常开发用。这样既保证了重要项目不被耽误,又让每个人都能测试代码。
八、进阶工具与平台推荐
除了nvidia-smi,还有一些更强大的工具值得试试:
NVML(NVIDIA Management Library):提供了编程接口,可以自己写监控程序
DCGM(Data Center GPU Manager):NVIDIA官方的大规模GPU管理工具,功能很全
ClusterManager:一些第三方公司出的管理平台,适合大型集群
如果你是新手,建议先从nvidia-smi开始,等熟练了再尝试这些高级工具。毕竟再好的工具,也得先理解基础概念才会用。
服务器GPU查询是个实践出真知的技能。多查、多看、多总结,慢慢你就能根据GPU占用情况,快速判断出系统哪里出了问题。记住,好的工程师不是等出了问题才去查,而是通过持续监控,把问题消灭在萌芽状态。
内容均以整理官方公开资料,价格可能随活动调整,请以购买页面显示为准,如涉侵权,请联系客服处理。
本文由星速云发布。发布者:星速云。禁止采集与转载行为,违者必究。出处:https://www.67wa.com/146160.html