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

其名
10 声望2 粉丝

Hello World!