如何檢查Linux的內(nèi)存使用狀況
大家都經(jīng)常提問“我想要監(jiān)測Linux系統(tǒng)的內(nèi)存使用狀況。有哪些可用的圖形界面或者命令行工具來檢查當(dāng)前內(nèi)存使用情況?”下面就讓小編為你們解答吧。
如何檢查Linux的內(nèi)存使用狀況:
當(dāng)涉及到Linux系統(tǒng)性能優(yōu)化的時候,物理內(nèi)存是一個最重要的因素。自然的,Linux提供了豐富的選擇來監(jiān)測珍貴的內(nèi)存資源的使用情況。不同的工具,在監(jiān)測粒度(例如:全系統(tǒng)范圍,每個進程,每個用戶),接口方式(例如:圖形用戶界面,命令行,ncurses)或者運行模式(交互模式,批量處理模式)上都不盡相同。
下面是一個可供選擇的,但并不全面的圖形或命令行工具列表,這些工具用來檢查Linux平臺中已用和可用的內(nèi)存。
1. /proc/meminfo
一種最簡單的方法是通過“/proc/meminfo”來檢查內(nèi)存使用狀況。這個動態(tài)更新的虛擬文件事實上是諸如free,top和ps這些與內(nèi)存相關(guān)的工具的信息來源。從可用/閑置物理內(nèi)存數(shù)量到等待被寫入緩存的數(shù)量或者已寫回磁盤的數(shù)量,只要是你想要的關(guān)于內(nèi)存使用的信息,“/proc/meminfo”應(yīng)有盡有。特定進程的內(nèi)存信息也可以通過“/proc/<pid>/statm”和“/proc/<pid>/status”來獲取。
$ cat /proc/meminfo
2. atop
atop命令是用于終端環(huán)境的基于ncurses的交互式的系統(tǒng)和進程監(jiān)測工具。它展示了動態(tài)更新的系統(tǒng)資源摘要(CPU, 內(nèi)存, 網(wǎng)絡(luò), 輸入/輸出, 內(nèi)核),并且用醒目的顏色把系統(tǒng)高負載的部分以警告信息標(biāo)注出來。它同樣提供了類似于top的線程(或用戶)資源使用視圖,因此系統(tǒng)管理員可以找到哪個進程或者用戶導(dǎo)致的系統(tǒng)負載。內(nèi)存統(tǒng)計報告包括了總計/閑置內(nèi)存,緩存的/緩沖的內(nèi)存和已提交的虛擬內(nèi)存。
$ sudo atop
3. free
free命令是一個用來獲得內(nèi)存使用概況的快速簡單的方法,這些信息從“/proc/meminfo”獲取。它提供了一個快照,用于展示總計/閑置的物理內(nèi)存和系統(tǒng)交換區(qū),以及已使用/閑置的內(nèi)核緩沖區(qū)。
$ free -h
4. GNOME System Monitor
GNOME System Monitor 是一個圖形界面應(yīng)用,它展示了包括CPU,內(nèi)存,交換區(qū)和網(wǎng)絡(luò)在內(nèi)的系統(tǒng)資源使用率的較近歷史信息。它同時也可以提供一個帶有CPU和內(nèi)存使用情況的進程視圖。
$ gnome-system-monitor
5. htop
htop命令是一個基于ncurses的交互式的進程視圖,它實時展示了每個進程的內(nèi)存使用情況。它可以報告所有運行中進程的常駐內(nèi)存大小(RSS)、內(nèi)存中程序的總大小、庫大小、共享頁面大小和臟頁面大小。你可以橫向或者縱向滾動進程列表進行查看。
$ htop
6. KDE System Monitor
就像GNOME桌面擁有GNOME System Monitor一樣,KDE桌面也有它自己的對口應(yīng)用:KDE System Monitor。這個工具的功能與GNOME版本極其相似,也就是說,它同樣展示了一個關(guān)于系統(tǒng)資源使用情況,以及帶有每個進程的CPU/內(nèi)存消耗情況的實時歷史記錄。
$ ksysguard
7. memstat
memstat工具對于識別正在消耗虛擬內(nèi)存的可執(zhí)行部分、進程和共享庫非常有用。給出一個進程識別號,memstat即可識別出與之相關(guān)聯(lián)的可執(zhí)行部分、數(shù)據(jù)和共享庫究竟使用了多少虛擬內(nèi)存。
$ memstat -p <PID>
8. nmon
nmon工具是一個基于ncurses系統(tǒng)基準(zhǔn)測試工具,它能夠以交互方式監(jiān)測CPU、內(nèi)存、磁盤I/O、內(nèi)核、文件系統(tǒng)以及網(wǎng)絡(luò)資源。對于內(nèi)存使用狀況而言,它能夠展示像總計/閑置內(nèi)存、交換區(qū)、緩沖的/緩存的內(nèi)存,虛擬內(nèi)存頁面換入換出的統(tǒng)計,所有這些都是實時的。
$ nmon
9. ps
ps命令能夠?qū)崟r展示每個進程的內(nèi)存使用狀況。內(nèi)存使用報告里包括了 %MEM (物理內(nèi)存使用百分比), VSZ (虛擬內(nèi)存使用總量), 和 RSS (物理內(nèi)存使用總量)。你可以使用“–sort”選項來對進程列表排序。例如,按照RSS降序排序:
$ ps aux –sort -rss
10. smem
smem命令允許你測定不同進程和用戶的物理內(nèi)存使用狀況,這些信息來源于“/proc”目錄。它利用“按比例分配大小(PSS)”指標(biāo)來精確量化Linux的進程的有效內(nèi)存使用情況。內(nèi)存使用分析結(jié)果能夠輸出為柱狀圖或者餅圖類的圖形化圖表。
$ sudo smem –pie name -c “pss”
11. top
top命令提供了一個運行中進程的實時視圖,以及特定進程的各種資源使用統(tǒng)計信息。與內(nèi)存相關(guān)的信息包括 %MEM (內(nèi)存使用率), VIRT (虛擬內(nèi)存使用總量), SWAP (換出的虛擬內(nèi)存使用量), CODE (分配給代碼執(zhí)行的物理內(nèi)存數(shù)量), DATA (分配給非執(zhí)行的數(shù)據(jù)的物理內(nèi)存數(shù)量), RES (物理內(nèi)存使用總量; CODE+DATA), 和 SHR (有可能與其他進程共享的內(nèi)存數(shù)量)。你能夠基于內(nèi)存使用情況或者大小對進程列表進行排序。
12. vmstat
vmstat命令行工具顯示涵蓋了CPU、內(nèi)存、中斷和磁盤I/O在內(nèi)的各種系統(tǒng)活動的瞬時和平均統(tǒng)計數(shù)據(jù)。對于內(nèi)存信息而言,命令不僅僅展示了物理內(nèi)存使用情況(例如總計/已使用內(nèi)存和緩沖的/緩存的內(nèi)存),還同樣展示了虛擬內(nèi)存統(tǒng)計數(shù)據(jù)(例如,內(nèi)存頁的換入/換出,虛擬內(nèi)存頁的換入/換出)
$ vmstat -s