天天看點

使用 smem 可視化顯示Linux記憶體使用情況使用 smem 可視化顯示Linux記憶體使用情況

實體記憶體不足對linux桌面系統和伺服器系統的性能影響都很大。當你的計算機變慢時,要做的第一件事就是釋放記憶體。尤其是在多使用者環境以及執行關鍵任務的伺服器環境下,記憶體消耗會變得更加關鍵,因為多個使用者和應用線程會同時競争更多的記憶體空間。

使用 smem 可視化顯示Linux記憶體使用情況使用 smem 可視化顯示Linux記憶體使用情況

<a target="_blank"></a>

由于linux使用到了虛拟記憶體(virtual memory),是以要準确的計算一個程序實際使用的實體記憶體就不是那麼簡單。 隻知道程序的虛拟記憶體大小也并沒有太大的用處,因為還是無法擷取到實際配置設定的實體記憶體大小。

rss(resident set size),使用top指令可以查詢到,是最常用的記憶體名額,表示程序占用的實體記憶體大小。但是,将各程序的rss值相加,通常會超出整個系統的記憶體消耗,這是因為rss中包含了各程序間共享的記憶體。

pss(proportional set size)會更準确一些,它将共享記憶體的大小進行平均後,再分攤到各程序上去。

uss(unique set size )是pss中自己的部分,它隻計算了程序獨自占用的記憶體大小,不包含任何共享的部分。

smem是一個能夠生成多種記憶體耗用報告的指令行工具,它從/proc檔案系統中提取各程序的pss/uss資訊,并進行彙總輸出。它還内建了圖表的生成能力,是以能夠友善地分析整個系統的記憶體使用情況。

$ sudo apt-get install smem

$ sudo yum install smem python-matplotlib

你可以在非特權模式下使用smem,它能夠顯示目前使用者運作的所有程序的記憶體使用情況,并按照pss的大小進行排序。

$ smem

使用 smem 可視化顯示Linux記憶體使用情況使用 smem 可視化顯示Linux記憶體使用情況

如有你想得到整個系統中所有使用者的記憶體使用情況,就需要使用root權限來運作smem。

$ sudo smem

使用 smem 可視化顯示Linux記憶體使用情況使用 smem 可視化顯示Linux記憶體使用情況

也可以按使用者次元來輸出報告:

$ sudo smem -u

使用 smem 可視化顯示Linux記憶體使用情況使用 smem 可視化顯示Linux記憶體使用情況

smem提供了以下選項來對輸出結果進行篩選,支援按映射方式(mapping)、程序和使用者三個次元的篩選:

-m &lt;正規表達式&gt;

-p &lt;正規表達式&gt;

-u &lt;正規表達式&gt;

想了解smem更多的使用方式,可以查詢使用者手冊(man page)。

圖形化的報告使用起來會更加友善快捷。smem支援兩種格式的圖形顯示方式:直方圖和餅圖。

下面是一些圖形化顯示的執行個體。

下面的指令行會基于pss/rss值,生成直方圖,以使用者alice為例。

$ sudo smem --bar name -c "pss uss" -u alice

使用 smem 可視化顯示Linux記憶體使用情況使用 smem 可視化顯示Linux記憶體使用情況

這個例子會生成一張餅圖,圖中顯示了系統中各程序的pss記憶體使用量:

使用 smem 可視化顯示Linux記憶體使用情況使用 smem 可視化顯示Linux記憶體使用情況

概括來說,smem是一個友善易用的記憶體分析工具。利用smem的格式化輸出,你可以對記憶體使用報告進行自動化分析,并執行一些自動化的處理措施。如果你還知道其他的一些優秀的記憶體檢測工具,請在留言區告訴我。

原文釋出時間:2014-12-21

本文來自雲栖合作夥伴“linux中國”

繼續閱讀