問題:我想要監測Linux系統的記憶體使用狀況。有哪些可用的圖形介面或者命令列工具來檢查當前記憶體使用情況?
當涉及到Linux系統效能優化的時候,實體記憶體是一個最重要的因素。自然的,Linux提供了豐富的選擇來監測珍貴的記憶體資源的使用情況。不同的工具,在監測粒度(例如:全系統範圍,每個程式,每個使用者),介面方式(例如:圖形使用者介面,命令列,ncurses)或者執行模式(互動模式,批量處理模式)上都不盡相同。
下面是一個可供選擇的,但並不全面的圖形或命令列工具列表,這些工具用來檢查Linux平臺中已用和可用的記憶體。
1. /proc/meminfo
一種最簡單的方法是通過“/proc/meminfo”來檢查記憶體使用狀況。這個動態更新的虛擬檔案事實上是諸如free,top和ps這些與記憶體相關的工具的資訊來源。從可用/閒置實體記憶體數量到等待被寫入快取的數量或者已寫回磁碟的數量,只要是你想要的關於記憶體使用的資訊,“/proc/meminfo”應有盡有。特定程式的記憶體資訊也可以通過“/proc/<pid>/statm”和“/proc/<pid>/status”來獲取。
- $ cat /proc/meminfo
2. atop
atop命令是用於終端環境的基於ncurses的互動式的系統和程式監測工具。它展示了動態更新的系統資源摘要(CPU, 記憶體, 網路, 輸入/輸出, 核心),並且用醒目的顏色把系統高負載的部分以警告資訊標註出來。它同樣提供了類似於top的執行緒(或使用者)資源使用檢視,因此係統管理員可以找到哪個程式或者使用者導致的系統負載。記憶體統計報告包括了總計/閒置記憶體,快取的/緩衝的記憶體和已提交的虛擬記憶體。
- $ sudo atop
3. free
free命令是一個用來獲得記憶體使用概況的快速簡單的方法,這些資訊從“/proc/meminfo”獲取。它提供了一個快照,用於展示總計/閒置的實體記憶體和系統交換區,以及已使用/閒置的核心緩衝區。
- $ free -h
4. GNOME System Monitor
GNOME System Monitor 是一個圖形介面應用,它展示了包括CPU,記憶體,交換區和網路在內的系統資源使用率的較近歷史資訊。它同時也可以提供一個帶有CPU和記憶體使用情況的程式檢視。
- $ gnome-system-monitor
5. htop
htop命令是一個基於ncurses的互動式的程式檢視,它實時展示了每個程式的記憶體使用情況。它可以報告所有執行中程式的常駐記憶體大小(RSS)、記憶體中程式的總大小、庫大小、共享頁面大小和髒頁面大小。你可以橫向或者縱向滾動程式列表進行檢視。
- $ htop
6. KDE System Monitor
就像GNOME桌面擁有GNOME System Monitor一樣,KDE桌面也有它自己的對口應用:KDE System Monitor。這個工具的功能與GNOME版本極其相似,也就是說,它同樣展示了一個關於系統資源使用情況,以及帶有每個程式的CPU/記憶體消耗情況的實時歷史記錄。
- $ ksysguard
7. memstat
memstat工具對於識別正在消耗虛擬記憶體的可執行部分、程式和共享庫非常有用。給出一個程式識別號,memstat即可識別出與之相關聯的可執行部分、資料和共享庫究竟使用了多少虛擬記憶體。
- $ memstat -p <PID>
8. nmon
nmon工具是一個基於ncurses系統基準測試工具,它能夠以互動方式監測CPU、記憶體、磁碟I/O、核心、檔案系統以及網路資源。對於記憶體使用狀況而言,它能夠展示像總計/閒置記憶體、交換區、緩衝的/快取的記憶體,虛擬記憶體頁面換入換出的統計,所有這些都是實時的。
- $ nmon
9. ps
ps命令能夠實時展示每個程式的記憶體使用狀況。記憶體使用報告裡包括了 %MEM (實體記憶體使用百分比), VSZ (虛擬記憶體使用總量), 和 RSS (實體記憶體使用總量)。你可以使用“–sort”選項來對程式列表排序。例如,按照RSS降序排序:
- $ ps aux –sort -rss
10. smem
smem命令允許你測定不同程式和使用者的實體記憶體使用狀況,這些資訊來源於“/proc”目錄。它利用“按比例分配大小(PSS)”指標來精確量化Linux程式的有效記憶體使用情況。記憶體使用分析結果能夠輸出為柱狀圖或者餅圖類的圖形化圖表。
- $ sudo smem –pie name -c “pss”
11. top
top命令提供了一個執行中程式的實時檢視,以及特定程式的各種資源使用統計資訊。與記憶體相關的資訊包括 %MEM (記憶體使用率), VIRT (虛擬記憶體使用總量), SWAP (換出的虛擬記憶體使用量), CODE (分配給程式碼執行的實體記憶體數量), DATA (分配給非執行的資料的實體記憶體數量), RES (實體記憶體使用總量; CODE+DATA), 和 SHR (有可能與其他程式共享的記憶體數量)。你能夠基於記憶體使用情況或者大小對程式列表進行排序。
12. vmstat
vmstat命令列工具顯示涵蓋了CPU、記憶體、中斷和磁碟I/O在內的各種系統活動的瞬時和平均統計資料。對於記憶體資訊而言,命令不僅僅展示了實體記憶體使用情況(例如總計/已使用記憶體和緩衝的/快取的記憶體),還同樣展示了虛擬記憶體統計資料(例如,記憶體頁的換入/換出,虛擬記憶體頁的換入/換出)
- $ vmstat -s