天天看點

ps_mem:一個用于精确報告Linux核心記憶體用量的簡單Python腳本

它會分别計算一個程式私有記憶體總量和共享記憶體總量,并以更準确的方式給出了總的記憶體使用量。很明顯的,它将幫助大家知道系統中哪個程式正在占用更多的記憶體。

你可以通過包管理器、pip 、或直接運作 ps_mem.py 腳本等多種方式來安裝 ps_mem 工具。需要注意的是:需要有 root 權限。

另外,推薦閱讀以下記憶體工具:

<a href="http://www.2daygeek.com/free-command-to-check-memory-usage-statistics-in-linux/">free – 一個在 linux 上檢視記憶體用量統計(可用和已用)的标準工具</a>

<a href="http://www.2daygeek.com/smem-linux-memory-usage-statistics-reporting-tool/">smem – linux 記憶體報告/統計工具</a>

<a href="http://www.2daygeek.com/linux-vmstat-command-examples-tool-report-virtual-memory-statistics/">vmstat – 一個好用的用于虛拟記憶體統計的标準工具</a>

通過包管理器安裝 ps_mem

基于 rhel 的系統預設倉庫就包含 ps_mem 工具,是以我們可以簡單地通過包管理器進行安裝。

對于 rhel/centos ,使用 yum 包管理器 安裝 ps_mem 包:

$ sudo yum install ps_mem 

對于fedora ,使用 dnf 包管理器 安裝 ps_mem 包:

$ sudo dnf install ps_mem 

對于 arch linux ,使用 pacman 包管理器 安裝 ps_mem 包:

$ sudo pacman -s ps_mem 

通過 pip 安裝 ps_mem

pip 是在 linux 上推薦使用的一種安裝 python 包的工具。可以使用 pip 指令而不是包管理器去擷取最新的版本。使用 pip 包前,請確定你的系統上已安裝過 pip 包。否則,先使用發行版本的包管理器安裝 python-pip 包。

對于基于 debian 的系統:

$ sudo apt-get install python-pip 

對于基于 rhel/centos 的系統:

$ sudo yum install python-pip 

對于 fedora

$ sudo dnf install python-pip 

對于 opensuse

$ sudo zypper install python-pip 

對于基于 arch linux 的系統:

$ sudo pacman -s python-pip 

最後,在 linux 上運作 pip 工具安裝 ps_mem :

$ sudo pip install ps_mem 

直接運作 ps_mem.py 腳本

我們也可以從開發者 github 頁面下載下傳檔案,并直接運作 ps_mem.py 腳本。

$ git clone https://github.com/pixelb/ps_mem.git &amp;&amp; cd ps_mem 

$ sudo python ps_mem.py 

ps_mem 使用方法

不帶任何參數直接運作 ps_mem 以精确擷取每個程式的的核心記憶體使用情況。

$ sudo ps_mem 

 private  +   shared  =  ram used   program 

  1.6 mib + 438.5 kib =   2.1 mib   packagekitd 

  1.7 mib + 498.0 kib =   2.1 mib   indicator-application-service 

912.0 kib +   1.3 mib =   2.2 mib   window-stack-bridge 

  2.0 mib + 350.5 kib =   2.3 mib   gnome-keyring-daemon 

  1.8 mib + 575.0 kib =   2.3 mib   whoopsie 

  2.4 mib + 304.5 kib =   2.7 mib   systemd-journald 

  2.7 mib + 157.5 kib =   2.8 mib   ibus-engine-simple 

  2.7 mib + 182.0 kib =   2.9 mib   ibus-dconf 

  2.7 mib + 332.5 kib =   3.0 mib   networkmanager 

  3.1 mib + 169.5 kib =   3.2 mib   polkitd 

  1.9 mib +   1.7 mib =   3.6 mib   systemd (2) 

  3.4 mib + 172.5 kib =   3.6 mib   deja-dup-monitor 

  2.9 mib + 685.0 kib =   3.6 mib   zeitgeist-datahub 

  2.9 mib + 848.0 kib =   3.7 mib   python2.7 

. . . . . . 

222.1 mib +   9.4 mib = 231.5 mib   compiz 

286.2 mib +  11.8 mib = 298.0 mib   firefox 

--------------------------------- 

                          1.3 gib 

================================= 

輸出中列印出全路徑:

$ sudo ps_mem -s 

  3.2 mib + 951.0 kib =   4.1 mib   /usr/lib/evolution/evolution-addressbook-factory 

  3.7 mib + 826.5 kib =   4.5 mib   /usr/lib/policykit-1-gnome/polkit-gnome-authentication-agent-1 

  3.7 mib + 853.0 kib =   4.6 mib   /usr/lib/unity-settings-daemon/unity-fallback-mount-helper 

. . .  . . . 

131.9 mib + 168.0 kib = 132.1 mib   /usr/sbin/mysqld 

222.1 mib +   9.4 mib = 231.5 mib   /usr/bin/compiz 

286.2 mib +  11.8 mib = 298.1 mib   /usr/lib/firefox/firefox 

隻顯示特定的 pid 清單的記憶體使用情況:

$ sudo ps_mem -p 2886,4386 

 13.5 mib +   2.9 mib =  16.4 mib   gnome-terminal-server 

                        314.4 mib 

每 n 秒列印程序記憶體。以下指令每 2 秒報告一次記憶體使用情況:

$ sudo ps_mem w 2 

隻顯示記憶體總量:

$ sudo ps_mem -t1329884160  

作者:2daygeek

來源:51cto