smem 介绍
smem 是 linux 系统上一款可以生成多种内存耗用报告的命令行工具。与现有工具不一样的是 smem 可以报告实际使用的物理内存(PSS),这是一种更有意义的指标。可以用来衡量内存系统的库金和应用程序所占用的内存数量。
由于大部分的物理内存通常在多个应用程序之间共享,名为实际使用物理内存(RSS)的这个标准的内存耗用衡量指标会大大高估内存耗用情况。PSS 这个参数而是衡量了每个应用程序在每个共享内存区中的 ”公平分配“,给出一个切合实际的衡量指标。
关于 RSS、PSS 的介绍可查看文章:Linux 内存中VSS、RSS、PSS、USS 介绍
安装
sudo apt-get install smem
常用命令
smem -u
# 参数 -u 显示每个用户所耗用的内存总量
User Count Swap USS PSS RSS
memcached 1 0 0 812 0
qiming 1 0 0 2207 0
mysql 1 0 0 11313 0
www 23 0 0 43324 0
root 10 0 0 67839 0
smem -p
# 参数 -p 查看内存占用百分比
PID User Command Swap USS PSS RSS
23796 root /init 0.00% 0.00% 0.00% 0.00%
72 www php-fpm: pool www 0.00% 0.00% 0.00% 0.00%
74 www php-fpm: pool www 0.00% 0.00% 0.00% 0.00%
75 www php-fpm: pool www 0.00% 0.00% 0.00% 0.00%
15099 www nginx: worker process 0.00% 0.00% 0.04% 0.00%
15100 www nginx: worker process 0.00% 0.00% 0.04% 0.00%
15101 www nginx: worker process 0.00% 0.00% 0.04% 0.00%
smem -w
# 参数 -w 查看系统内存使用情况
# 可以 -p -w 结合
Area Used Cache Noncache
firmware/hardware 0 0 0
kernel image 0 0 0
kernel dynamic memory 5627160 157948 5469212
userspace memory 174228 71404 102824
free memory 2403520 2403520 0
smem -w -p
# 以百分比展示
Area Used Cache Noncache
firmware/hardware 0.00% 0.00% 0.00%
kernel image 0.00% 0.00% 0.00%
kernel dynamic memory 67.75% 1.93% 65.83%
userspace memory 2.12% 0.87% 1.25%
free memory 30.12% 30.12% 0.00%
smem -R 24G -w
# 参数-R REALMEM,REALMEM这个值是指物理内存数量。此参数可以让smem在整个系统(-w)的输出中发现固件/硬件所耗用的内存数量(对比上下即可发现,注意firmware/hardware)
Area Used Cache Noncache
firmware/hardware 16960916 0 16960916
kernel image 0 0 0
kernel dynamic memory 5636972 157948 5479024
userspace memory 174228 71404 102824
free memory 2393708 2393708 0
smem -c "name user pss"
#参数-c 用来显示需要展示的列
Name User PSS
init root 140
mysqld_safe root 232
php-fpm www 380
php-fpm www 382
nginx www 632
memcached memcached 824
smem -s rss
#参数-s 根据某一列(例如 rss)来排序
PID User Command Swap USS PSS RSS
1 root /init 0 0 440 0
70 root php-fpm: master process (/w 0 0 1447 0
72 www php-fpm: pool www 0 0 380 0
15099 www nginx: worker process 0 0 3239 0
smem -s rss -r
#参数-r 一般与参数-s结合使用,表示反转排序(从升序改为降序)
PID User Command Swap USS PSS RSS
80 www php-fpm: pool www 0 0 382 0
81 www php-fpm: pool www 0 0 382 0
112 root /www/server/panel/pyenv/bin 0 0 16958 0
130 root /www/server/panel/pyenv/bin 0 0 33785 0
271 root nginx: master process /www/ 0 0 3699 0
3005 root /bin/sh /www/server/mysql/b 0 0 232 0
3622 mysql /www/server/mysql/bin/mysql 0 0 11313 0
smem -M php
#参数-M 过滤相关进程
PID User Command Swap USS PSS RSS
15108 www nginx: worker process 0 0 65 0
15109 www nginx: worker process 0 0 65 0
15110 www nginx: worker process 0 0 65 0
15111 www nginx: cache manager proces 0 0 89 0
271 root nginx: master process /www/ 0 0 1307 0
smem -k
#显示内存单位
smem -u -k
User Count Swap USS PSS RSS
memcached 1 0 0 824.0K 0
mysql 1 0 0 11.0M 0
www 23 0 0 42.3M 0
root 10 0 0 66.3M 0
**粗体** _斜体_ [链接](http://example.com) `代码` - 列表 > 引用
。你还可以使用@
来通知其他用户。