昨天晚上跑的模型今天來一看別別人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 界的
通過這些命令,你就能精準地知道,服務器上的 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/