linux 内存统计工具 smem

smem 是 Linux 平台上一个非常好用的内存使用统计工具,能够统计出进程的 uss,pss,rss 内存占用情况,尤其对于 uss,它是去除共享库之后的内存占用情况,能够反映一个进程真实的内存占用。此外,smem 也能够按用户进行统计,输出一个用户下所有进程占用的内存之和。以及按模块显示内存占用的映射关系,比如某个共享库占用多大内存,被多少个进程使用等。

smem 可以使用 yum install smem 进行安装。如果没有可用的 yum 源,可以直接拷贝一份已有的 smem 程序,路径为 /bin/smem,实际上 smem 是一个 Python2 的脚本,拷贝过来可以直接执行。

smem 可以直接在非 root 用户下执行,如下:

[ant01@centos ~]$ smem
  PID User     Command                         Swap      USS      PSS      RSS
 1975 ant01    -bash                              0      500      935     2152
 1996 ant01    python /usr/bin/smem               0     4320     4796     6540

按用户进行内存使用统计:

[ant01@centos ~]$ smem -u
User     Count     Swap      USS      PSS      RSS
ant01        2        0     4824     5735     8696

smem -m 可以按模块查看共享库占用的内存大小以及被多少进程使用,如下:

[ant01@centos ~]$ smem -m
Map                                       PIDs   AVGPSS      PSS
[vdso]                                       2        0        0
[vsyscall]                                   2        0        0
/usr/lib64/gconv/gconv-modules.cache         1        5        5
/usr/lib64/libutil-2.17.so                   1        8        8
/usr/bin/python2.7                           1        9        9
/usr/lib64/libnss_files-2.17.so              1        9        9
/usr/lib64/libpthread-2.17.so                1       10       10
/usr/lib64/python2.7/lib-dynload/_functo     1       10       10
/usr/lib64/python2.7/lib-dynload/grpmodu     1       10       10
/usr/lib64/libm-2.17.so                      1       13       13
/usr/lib64/python2.7/lib-dynload/_locale     1       13       13
/usr/lib/locale/locale-archive               2        7       15
/usr/lib64/python2.7/lib-dynload/_heapq.     1       15       15
/usr/lib64/libdl-2.17.so                     2        8       16
/usr/lib64/python2.7/lib-dynload/_collec     1       17       17
/usr/lib64/python2.7/lib-dynload/_struct     1       17       17
/usr/lib64/python2.7/lib-dynload/stropmo     1       17       17
/usr/lib64/python2.7/lib-dynload/timemod     1       17       17
/usr/lib64/python2.7/lib-dynload/operato     1       21       21
/usr/lib64/ld-2.17.so                        2       12       24
/usr/lib64/python2.7/lib-dynload/itertoo     1       31       31
[stack]                                      2       28       56
/usr/lib64/libtinfo.so.5.9                   1       82       82
/usr/lib64/libc-2.17.so                      2       59      119
/usr/bin/bash                                1      350      350
/usr/lib64/libpython2.7.so.1.0               1      611      611
[heap]                                       2      862     1724
<anonymous>                                  2     1264     2528

smem 还有更多其他功能,这里不一一赘述,详见使用帮助。查看 smem 使用帮助信息:

[ant01@centos ~]$ smem --help
Usage: smem [options]

Options:
  -h, --help            show this help message and exit
  -H, --no-header       disable header line
  -c COLUMNS, --columns=COLUMNS
                        columns to show
  -t, --totals          show totals
  -R REALMEM, --realmem=REALMEM
                        amount of physical RAM
  -K KERNEL, --kernel=KERNEL
                        path to kernel image
  -m, --mappings        show mappings
  -u, --users           show users
  -w, --system          show whole system
  -P PROCESSFILTER, --processfilter=PROCESSFILTER
                        process filter regex
  -M MAPFILTER, --mapfilter=MAPFILTER
                        map filter regex
  -U USERFILTER, --userfilter=USERFILTER
                        user filter regex
  -n, --numeric         numeric output
  -s SORT, --sort=SORT  field to sort on
  -r, --reverse         reverse sort
  -p, --percent         show percentage
  -k, --abbreviate      show unit suffixes
  --pie=PIE             show pie graph
  --bar=BAR             show bar graph
  -S SOURCE, --source=SOURCE
                        /proc data source

文章评论

0条评论