昨天晚上跑的模型今天来一看被别人kill了 心累
更让人郁闷的是,你后来才发现,原来有些人根本不会先看服务器是不是空着。
但抱怨归抱怨,作为一名有素质的“共享玩家”,学会在自己跑模型前,先看看服务器上有没有别人在跑,以及如何友好地处理资源冲突,这应该是所有人应该最先学习的!
【重要忠告⚠️】核心原则:千万不要直接 Kill 别人的进程!这是共享服务器的基本素养,请务必牢记。
那到底该怎么看服务器的资源占用情况呢?别急,教程这就奉上!
核心教程:如何查看服务器资源占用情况?
无论是 CPU 还是 GPU,我们都有对应的查看工具和命令。
1. CPU 占用情况:top 命令
如果你想看服务器上 CPU 的使用情况,top 命令绝对是你的首选,它就像 Linux 里的“任务管理器”,能实时动态显示系统进程。
- 怎么看?
- 直接在命令行输入 top,回车。
- 看 CPU 整体利用率: 顶部 Cpu(s) 那一行,us(用户空间)、sy(内核空间)的百分比越高,说明 CPU 越忙。
- 看负载: 顶部 load average 后面的三个数字,分别代表过去 1、5、15 分钟的系统平均负载。这个数值通常不应该超过 CPU 核心数,高了就说明系统很忙。
- 看哪个进程在用: 往下看,%CPU 列就是每个进程占用的 CPU 百分比,USER 列是哪个用户在跑这个进程。
通过 top,你就能知道服务器的 CPU 是不是“满载”了,有没有人在上面跑着特别耗 CPU 的程序。
2. GPU 占用情况:nvidia-smi 系列,AIer的“救命稻草”
对于搞深度学习的我们,GPU 才是真正的命根子。NVIDIA 提供了一套强大的工具来监控 GPU。
-
nvidia-smi (系统自带,基本款):
- 直接输入 nvidia-smi 回车。
- 它会显示所有 GPU 的基本信息:型号、驱动版本、CUDA 版本、显存使用率 (Memory-Usage) 和 GPU 利用率 (GPU-Util)。
- 你可以一目了然地看到每张显卡“累不累”、“还剩多少空间”。
-
gpustat (简化版,更清晰):
- 如果 nvidia-smi 的输出觉得有点复杂,可以试试 gpustat。它能给出更简洁、更友好的 GPU 运行概览。
- 如果提示没有这个应用: pip install gpustat (确保在你的Python环境中安装)。
-
nvitop (实时查看进程,强烈推荐!):
- 这个工具就像 GPU 界的 top 命令,能实时显示每个 GPU 上正在运行的进程,以及这些进程属于哪个用户、占用了多少显存和利用率。谁在用你的卡,一目了然!
- 如果提示没有这个应用: pip install nvitop (同样确保在你的Python环境中安装)。
通过这些命令,你就能精准地知道,服务器上的 GPU 是不是被占用了,以及具体是哪个用户在占用。
3. 查看其他用户的进程:ps -aux | grep [其他用户的名字]
当你通过 top 或 nvitop 发现某个用户正在占用资源,但想了解更详细的信息时,可以用这个命令:
ps -aux | grep [其他用户的名字]
- 把 [其他用户的名字] 替换成你想查看的用户名(比如 ps -aux | grep userA)。
- 这个命令会列出该用户在服务器上运行的所有进程,包括进程ID (PID)、CPU/内存占用等。这样你就能知道对方在跑什么程序了。
4. 【进阶版】可视化监控与集群管理工具
-
如果你权限够高/有条件:DCGM-Exporter + Prometheus/Alertmanager
- 如果你所在的团队有更专业的服务器管理需求,可以考虑部署 DCGM-Exporter。它能配合 Prometheus 和 Alertmanager,搭建一套完整的可视化监控系统。
- 这样你不仅能通过网页直观地看到所有 GPU 的实时状态,还能设置卡空闲/高负载告警,再也不用手动去查了!当然,这套系统需要连接互联网和一些运维知识去部署。
-
如果你用的服务器是集群/有资源管理工具:问问管理员!
- 如果你们的服务器是由很多 GPU 组成的阵列(比如学校或实验室的大型集群),那很可能它们是通过 Slurm、PBS 等资源分配管理工具来统一调度任务的。
- 这种情况下,你直接用 squeue (Slurm) 或其他对应命令,就能清晰地查看目前所有提交的任务情况,包括占用了多少 CPU、GPU、内存。
- 【作者建议💡】 我的建议是,直接去问管理这台共享服务器的负责人或团队成员,他们有没有推荐的、已经安装好的资源检查工具或管理命令。这是最直接、最准确,也最省事的方法!因为不同服务器可能安装的工具不一样,系统自带的检查工具也可能不同。
【终极忠告】千!万!不!要!直!接!Kill!别人的进程!
再强调一遍,这是程序员共享服务器的“黄金法则”:
- 绝不能直接 Kill: 别人的模型可能跑了几天几夜,一 Kill 就前功尽弃了。这不仅是不礼貌,更是可能引发矛盾的“雷区”。我会想kill你的
- 正确姿势:
- 先用上面学到的命令,先看清楚情况。
- 如果确实需要资源,并且对方占用时间过长或资源浪费,请礼貌地联系使用者协商,问问他大概什么时候能结束。
- 如果联系不上,或者情况特别紧急,再考虑联系服务器管理员,让他们来处理。
一点额外的小建议
除了这些命令行工具,如果你用的是带图形界面的服务器(比如通过 Xterminal 连接),通常也会有一些可视化的 CPU/GPU 状态监控工具,操作起来更直观,也可以去探索一下。
最后,我想说句心里话:强烈建议所有从事编程的朋友,尤其是搞 AI 的,一定要学好 Linux! 服务器环境、各种工具、日常操作,都离不开 Linux。学好它,很多服务器上的疑难杂症都能迎刃而解,你的编程之路会顺畅很多,少踩很多坑!
🔎嘿,这里是程序元元👩🏻🎓| AI全栈,会发各种类型的文章 AI科班→独角兽→大厂→国企🐾 AI+前端+后端+NLP+机器人+推荐+CV+多模态+爬虫+数字人+gis… 🎉如果有帮助的话,就点个赞叭,让我开心一下!🙋🏻♀ ✨也可以关注评论收藏私信⭐
点我查看更多精彩内容:https://wchloew.github.io/
评论前必须登录!
注册