内存状态监测工具smem--用于统计并监控系统内存使用情况

全文导读:本文主要介绍了如何通过内存状态监测工具smem统计并监控系统内存使用情况的工具介绍。

应用场景

硬件/整机信息:全平台
OS版本信息:全架构
OS版本信息:桌面专业版
软件信息:smem  1.4-2版本

功能概述

smem 是一个用于监测及报告系统中各个进程的内存使用情况的命令行工具,它可以提供详细的信息,包括物理内存(RAM)和交换空间(swap)的使用情况。
相对而言smem工具在统计信息中提供了 PSS(Proportional Set Size - 比例集大小)统计方法。其他工具一般统计RSS(Resident Set Size)主要是以物理内存的分配占用情况来进行统计分析,这种统计方案可能会由于共享内存的重复计算而导致统计值过大。smem工具所提供的PSS统计方案相对来说在某些场景中会更准确一些。

功能介绍

全面的内存报告:smem 提供了详细的内存使用报告,包括每个进程的物理内存和交换空间的使用量,以及总体的内存消耗情况。
进程级别的分析:smem 可以按照进程级别对内存使用进行分析,帮助你了解哪些进程使用了大量的内存或交换空间。
支持过滤和排序:可以使用 smem 的选项来过滤和排序报告结果,例如按照内存使用量、进程名称或进程ID进行排序。
支持多种格式输出:smem 可以生成不同格式的输出报告,包括表格、图形和 JSON 格式,以便你根据需要进行数据分析和处理。  

统计参数简介:

Swap:交换分区使用情况
统计进程所分配的swap交换分区的使用容量。
RSS-(resident set size):进程占用物理内存大小
RSS是驻留集合大小的含义,即统计进程所使用的非交换区的物理内存使用量进行分析;
其他一些常规工具例如top指令也可以查询到此统计数值,属于最常用的内存指标参数;
将各个进程中的RSS值相加后,一般都会超出整个系统的实际内存使用量,这是因为RSS中统计包含了各个进程之间的共享内存;  
PSS-(proportion set size):比例集合大小进行统计分析
所有使用某共享库的程序均分该共享库所占用的内存容量,这样将共享内存的大小容量进行平均后,会分摊到各个进程上去,统计信息相对更准确一些;
所有进程的PSS之和就是系统内存的使用量;
USS-(unique set size):进程独自占用内存
只计算进程独自占用的内存大小,不包含任何共享的部分。

安装使用

下面将以桌面专业版1060版本作为举例,介绍一下smem工具的安装部署过程,感兴趣的读者可安装后测试使用:

一:安装工具

对于服务器a/e版,smem 工具已在仓库中提供安装源,因此可以直接使用 yum 来安装它: 
uos@uos-PC:~$ sudo yum install smem
对于桌面专业版而言,可以使用 apt-get 命令来安装 smem 工具:
uos@uos-PC:~$ sudo apt-get install smem

二:工具用法

smem <options> 
说明:
终端直接输入smem即可启动此工具,将统计该用户的进程占用情况,并按照 PSS 数值进行升序排列;
1、 执行smem指令即可启动工具,启动后会自动对当前用户(例如uos用户)进行实时的内存使用情况统计:
统计信息输出列参数简介如下:(详细说明请见上面功能介绍中相关内容)
参数描述
PID进程ID信息
User用户信息
Command进行指令信息
Swap交换分区使用量
USS进程独自占用内存量
PSS比例集合大小统计进程占用内存量
RSS驻留集合大小统计进程占用内存量
2、查看帮忙说明smem -h可直接通过-h参数查看工具帮助信息:
uos@uos-PC:~$ smem -h 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
常用参数简介:
-H, --no-header: 在输出结果中去掉标题行。
-t, --totals: 在结尾处显示总计行数,并汇总所有进程的内存使用总情况。
-r, --reverse: 反向排序输出统计结果,根据PSS列数值使用量从高到低排序。
-s, --sort=SORT: 根据后续指定参数对输出结果进行排序,例如-s pss/uss/rss。
-u, --user: 显示各个用户的内存使用情况(需具备相关统计权限,否则只会显示当前用户的内存使用量)。
-w,--system:显示整个系统的内存使用情况。
-p, --percent: 输出结果以百分比的形式报告内存使用情况。
-k, --abbreviate: 输出结果显示内存单位(自动换算)。
-P PROCESSFILTER, --processfilter=PROCESSFILTER:以进程名称进行筛选,显示筛选后的查询结果。
-M MAPFILTER, --mapfilter=MAPFILTER:以映射名称进行筛选,显示筛选后的查询结果。
-U USERFILTER, --userfilter=USERFILTER:以用户名称进行筛选,显示筛选后的查询结果。
3、应用举例
查看全部用户的内存使用情况,并显示内存单位(统计全部用户需sudo提权):
sudo smem -u -k
只查询当前用户的内存使用情况,并显示内存单位:
smem -k
只查询当前用户的内存使用情况,在显示内存单位的同时显示汇总信息:
smem -k -t
查询系统整体的内存使用情况,并显示内存单位:
smem -w -k
以百分比形式显示全体用户的内存使用情况,并倒序显示(统计全部用户需sudo提权):
sudo smem -p -r
以-P参数筛选只显示dde-dock进程占用的相关内存情况:
smem -P dde-dock
以-P参数筛选只显示应用商店客户端deepin-home-appstore-client进程占用的相关内存情况:
smem -c pss -k -t -P deepin-home-appstore-client | tail -n 1 
更多的功能欢迎自行查看帮助手册进行了解~

©统信软件技术有限公司。访问者可将本网站提供的内容或服务用于个人学习、研究或欣赏,以及其他非商业性或非盈利性用途,但同时应遵守著作权法及其他相关法律的规定,不得侵犯本网站及相关权利人的合法权利。除此以外,将本网站任何内容或服务进行转载,须备注:该文档出自【faq.uniontech.com】统信软件知识分享平台。否则统信软件将追究相关版权责任。

2023-07-25
2 23