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