物理內存不足對Linux桌面系統和伺服器系統的性能影響都很大。當你的計算機變慢時,要做的第一件事就是釋放內存。尤其是在多用戶環境以及執行關鍵任務的伺服器環境下,內存消耗會變得更加關鍵,因為多個用戶和應用線程會同時競爭更多的內存空間。
如果要監測系統內各種資源的使用情況(比如說CPU或內存),圖形化顯示是一種高效的方法,通過圖形界面可以快速分析各用戶和進程的資源消耗情況。在linux下圖形化分析內存使用情況的方法,使用到命令行工具是smem.
物理內存使用情況: RSS 、 PSS 和 USS
由於Linux使用到了虛擬內存(virtual memory),因此要準確的計算一個進程實際使用的物理內存就不是那麼簡單。 只知道進程的虛擬內存大小也並沒有太大的用處,因為還是無法獲取到實際分配的物理內存大小。
· RSS(Residentset size),使用top命令可以查詢到,是最常用的內存指標,表示進程佔用的物理內存大小。但是,將各進程的RSS值相加,通常會超出整個系統的內存消耗,這是因為RSS中包含了各進程間共享的內存。
· PSS(Proportionalset size)會更準確一些,它將共享內存的大小進行平均後,再分攤到各進程上去。
· USS(Unique set size )是PSS中自己的部分,它只計算了進程獨自佔用的內存大小,不包含任何共享的部分。
常用參數
$ smem
默認情況下,如果不帶參數,將顯示所有進程的內存使用情況,而且是一次顯示,不是動態顯示。
$ smem -m
顯示每個庫使用內存的情況
$ smem -p | grepfirefox
按百分比顯示使用情況
$ smem -u -p
按用戶統計使用情況
圖形結果
如果你使用的圖形界面,還可以生成圖形結果
圓餅圖
smem --pie name -s uss
柱狀圖
smem --bar pid -c 「pss uss rss」