ps_mem 是一个可以帮助我们精确获取 Linux 中各个程序核心内存使用情况的简单 python 脚本。虽然在 Linux 上有很多可用于查看内存使用情况的工具,比如 free
、vmstat
、smem
、top
等,但这个工具和其它的区别在于其精确显示核心内存使用情况。
它会分别计算一个程序私有内存总量和共享内存总量,并以更准确的方式给出了总的内存使用量。很明显的,它将帮助大家知道系统中哪个程序正在占用更多的内存。
你可以通过包管理器、pip
、或直接运行 ps_mem.py
脚本等多种方式来安装 ps_mem
工具。需要注意的是:需要有 root 权限。
另外,推荐阅读以下内存工具:
- free – 一个在 Linux 上查看内存用量统计(可用和已用)的标准工具
- smem – Linux 内存报告/统计工具
- vmstat – 一个好用的用于虚拟内存统计的标准工具
通过包管理器安装 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 && 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
Private + Shared = RAM used Program
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
---------------------------------
1.3 GiB
=================================
只显示特定的 PID 列表的内存使用情况:
$ sudo ps_mem -p 2886,4386
Private + Shared = RAM used Program
13.5 MiB + 2.9 MiB = 16.4 MiB gnome-terminal-server
286.2 MiB + 11.8 MiB = 298.0 MiB firefox
---------------------------------
314.4 MiB
=================================
每 N 秒打印进程内存。以下命令每 2 秒报告一次内存使用情况:
$ sudo ps_mem w 2
只显示内存总量:
$ sudo ps_mem -t
1329884160
via: http://www.2daygeek.com/ps_mem-report-core-memory-usage-accurately-in-linux/
作者:2DAYGEEK 译者:xllc 校对:wxy
本文由 LCTT 原创编译,Linux中国 荣誉推出