博客 / 詳情

返回

模型被擠了?立即查看服務器GPU/CPU佔用,別再誤殺他人進程!

昨天晚上跑的模型今天來一看別別人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 [其他用户的名字]

當你通過 topnvitop 發現某個用户正在佔用資源,但想了解更詳細的信息時,可以用這個命令:

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你的
  • 正確姿勢:

    1. 先用上面學到的命令,先看清楚情況。
    2. 如果確實需要資源,並且對方佔用時間過長或資源浪費,請禮貌地聯繫使用者協商,問問他大概什麼時候能結束。
    3. 如果聯繫不上,或者情況特別緊急,再考慮聯繫服務器管理員,讓他們來處理。

一點額外的小建議

除了這些命令行工具,如果你用的是帶圖形界面的服務器(比如通過 Xterminal 連接),通常也會有一些可視化的 CPU/GPU 狀態監控工具,操作起來更直觀,也可以去探索一下。

最後,我想説句心裏話:強烈建議所有從事編程的朋友,尤其是搞 AI 的,一定要學好 Linux! 服務器環境、各種工具、日常操作,都離不開 Linux。學好它,很多服務器上的疑難雜症都能迎刃而解,你的編程之路會順暢很多,少踩很多坑!

🔎嘿,這裏是程序元元👩🏻‍🎓| AI全棧,會發各種類型的文章
AI科班→獨角獸→大廠→國企🐾
AI+前端+後端+NLP+機器人+推薦+CV+多模態+爬蟲+數字人+gis...
🎉如果有幫助的話,就點個贊叭,讓我開心一下!🙋🏻‍♀ ✨也可以關注評論收藏私信⭐

點我查看更多精彩內容:https://wchloew.github.io/

user avatar
0 位用戶收藏了這個故事!

發佈 評論

Some HTML is okay.