Linux系统之smem命令的基本使用

简介: 【7月更文挑战第1天】Linux系统之smem命令的基本使用

@TOC

在这里插入图片描述

一、smem命令介绍

smem 是一个用于Linux系统的命令行工具,它提供了比传统内存报告工具(如 freetop)更为详细和高级的内存使用情况分析。smem 的关键特性是它能够报告 PSS(Proportional Set Size),这一指标在理解和分析现代多进程、特别是使用共享库和内存的系统中的内存消耗时更为准确。

二、smem命令的使用帮助

2.1 smem命令的help帮助信息

使用--help,查询 smem命令的help帮助信息。

[root@jeven ~]# 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

2.2 smem命令的语法解释

选项 描述
-h, --help 显示帮助信息并退出
-H, --no-header 不显示表头行
-c COLUMNS, --columns=COLUMNS 指定显示的列
-t, --totals 显示总计
-R REALMEM, --realmem=REALMEM 设置物理RAM的总量
-K KERNEL, --kernel=KERNEL 指定内核镜像路径
-m, --mappings 显示内存映射信息
-u, --users 按用户分组显示内存使用情况
-w, --system 显示整个系统的内存使用情况
-P PROCESSFILTER, --processfilter=PROCESSFILTER 使用正则表达式过滤进程
-M MAPFILTER, --mapfilter=MAPFILTER 使用正则表达式过滤内存映射
-U USERFILTER, --userfilter=USERFILTER 使用正则表达式过滤用户
-n, --numeric 输出数值形式,不带单位
-s SORT, --sort=SORT 指定排序依据的字段
-r, --reverse 反转排序顺序
-p, --percent 显示百分比
-k, --abbreviate 显示单位后缀,如KB, MB, GB等
--pie=PIE 显示饼状图
--bar=BAR 显示柱状图
-S SOURCE, --source=SOURCE 指定 /proc 数据源,用于获取内存使用信息

三、smem工具安装

3.1 安装epel

执行以下命令,安装epel源。

yum install -y epel-release

在这里插入图片描述

3.2 搜索smem包

执行以下命令,搜索smem包。

yum search smem

在这里插入图片描述

3.3 安装smem

直接使用yum安装smem包

 yum install smem -y

在这里插入图片描述

四、smem命令的基本使用

4.1 查看内存概览

直接使用smem命令,将显示一个简要的内存使用概览,无参数时显示所有进程的内存使用情况。

smem

在这里插入图片描述

其中几个主要参数意思:

  • VSS– Virtual Set Size 虚拟耗用内存(包含共享库占用的内存)

  • RSS – Resident Set Size 实际使用物理内存(包含共享库占用的内存)

  • PSS – Proportional Set Size 实际使用的物理内存(比例分配共享库占用的内存)

  • USS – Unique Set Size 进程独自占用的物理内存(不包含共享库占用的内存)

4.2 查看内存占用百分比

参数-p查看耗用内存情况的百分比, 这个命令会列出所有运行进程及其PSS值,按PSS大小降序排列,帮助识别内存消耗较高的进程。

   smem -p

在这里插入图片描述

4.3 查看系统内存使用情况

使用以下命令,查看系统内存占用的整体情况。

[root@jeven ~]# smem -w
Area                           Used      Cache   Noncache
firmware/hardware                 0          0          0
kernel image                      0          0          0
kernel dynamic memory       1330796    1018196     312600
userspace memory            1068992     228016     840976
free memory                 5590492    5590492          0

4.4 显示单位后缀

可以使用-k选项,显示单位后缀。

[root@jeven ~]# smem -wk
Area                           Used      Cache   Noncache
firmware/hardware                 0          0          0
kernel image                      0          0          0
kernel dynamic memory          1.3G     994.3M     305.5M
userspace memory               1.0G     222.7M     821.4M
free memory                    5.3G       5.3G          0

4.5 对结果排序

使用以下命令,排序并显示内存使用最多的进程。

[root@jeven ~]# smem -rk --sort pss |head
  PID User     Command                         Swap      USS      PSS      RSS
10396 polkitd  mysqld --default-authentica        0   200.3M   200.3M   200.3M
10775 gdm      /usr/bin/gnome-shell               0   106.2M   113.3M   130.8M
11900 root     /data/fastgithub_linux-x64/        0    99.3M    99.7M   101.7M
 9546 root     /usr/bin/dockerd -H fd:// -        0    68.0M    68.1M    69.3M
11218 102      /usr/sbin/mysqld --basedir=        0    48.9M    49.0M    49.9M
 9336 root     /usr/bin/containerd                0    47.6M    47.6M    48.1M
11920 root     dnscrypt-proxy/dnscrypt-pro        0    17.0M    17.0M    17.0M
10714 root     /usr/bin/X :0 -background n        0    10.9M    15.7M    23.1M
 9345 root     /usr/sbin/libvirtd                 0    13.1M    14.3M    20.0M

五、显示图表

5.1 安装python

执行以下命令,安装python。

yum install python-matplotlib python-tk -y

在这里插入图片描述

5.4 显示饼状图和柱状图

生成一张进程的 PSS 和 RSS 值的条状图,纵坐标为每一个进程的 PSS 和 RSS 值,横坐标为 root 用户的所有进程(的 ID)

smem --userfilter="root" --bar pid -c"pss rss"

在这里插入图片描述

  • 显示饼状图
smem --userfilter="root" --pie name

在这里插入图片描述

六、使用注意事项

在使用 smem 命令时,有几个注意事项可以帮助你更有效地利用这个工具并避免潜在的误解或错误。以下是几点重要的使用注意事项:

  1. 权限要求:通常,非根用户也可以运行 smem 来查看内存使用概况,但要获取更详细的进程信息(如特定用户的内存使用情况),可能需要提升至 root 权限。

  2. 理解内存术语smem 使用了几个关键的内存度量标准,如 RSS(Resident Set Size)、PSS(Proportional Set Size)和 USS(Unique Set Size)。了解它们的含义对于正确解读报告至关重要。PSS 特别有用,因为它考虑了共享库的分配,提供了进程实际消耗内存的更准确视图。

  3. 单位意识:使用 -k选项来控制报告中的内存单位,确保你清楚当前的显示单位,以免对数值产生误解。

  4. 实时性和准确性:虽然 smem 提供了详尽的内存使用信息,但它提供的快照反映了命令执行那一刻的系统状态。对于实时监控,可能需要定期运行 smem 并对比结果。

  5. 性能影响:在高负载系统上频繁运行 smem(尤其是带有详细报告选项如 --report top)可能会对系统性能造成轻微影响,因为这涉及到收集和处理大量进程信息。

  6. 内存类型区分smem 可以区分不同类型的内存使用(如物理内存、交换空间和内核缓冲/缓存),理解这些分类有助于深入分析系统内存状况。

  7. 与其它工具结合使用:尽管 smem 功能强大,但在某些情况下,结合使用 free, top, 或 ps 等其他命令可以获得更全面的系统性能视图。

  8. 更新与兼容性:确保你的 smem 版本是最新的,以便获得最佳功能和兼容性。旧版本可能缺少新特性和修复。

  9. 输出解析:当输出被重定向或管道传输给其他程序时,注意格式设置(如 CSV 输出),并验证输出是否符合后续处理工具的预期格式。

  10. 文档与帮助:遇到疑问时,查阅 smem 的官方文档或使用 man smem 查看手册页,可以提供更详细的命令选项和使用案例。

相关文章
|
5月前
|
Linux 应用服务中间件 Shell
二、Linux文本处理与文件操作核心命令
熟悉了Linux的基本“行走”后,就该拿起真正的“工具”干活了。用grep这个“放大镜”在文件里搜索内容,用find这个“探测器”在系统中寻找文件,再用tar把东西打包带走。最关键的是要学会使用管道符|,它像一条流水线,能把这些命令串联起来,让简单工具组合出强大的功能,比如 ps -ef | grep 'nginx' 就能快速找出nginx进程。
627 1
二、Linux文本处理与文件操作核心命令
|
5月前
|
Ubuntu Linux Anolis
Linux系统禁用swap
本文介绍了在新版本Linux系统(如Ubuntu 20.04+、CentOS Stream、openEuler等)中禁用swap的两种方法。传统通过注释/etc/fstab中swap行的方式已失效,现需使用systemd管理swap.target服务或在/etc/fstab中添加noauto参数实现禁用。方法1通过屏蔽swap.target适用于新版系统,方法2通过修改fstab挂载选项更通用,兼容所有系统。
483 3
Linux系统禁用swap
|
5月前
|
Linux
Linux系统修改网卡名为eth0、eth1
在Linux系统中,可通过修改GRUB配置和创建Udev规则或使用systemd链接文件,将网卡名改为`eth0`、`eth1`等传统命名方式,适用于多种发行版并支持多网卡配置。
989 3
|
5月前
|
Linux
linux命令—stat
`stat` 是 Linux 系统中用于查看文件或文件系统详细状态信息的命令。相比 `ls -l`,它提供更全面的信息,包括文件大小、权限、所有者、时间戳(最后访问、修改、状态变更时间)、inode 号、设备信息等。其常用选项包括 `-f` 查看文件系统状态、`-t` 以简洁格式输出、`-L` 跟踪符号链接,以及 `-c` 或 `--format` 自定义输出格式。通过这些选项,用户可以灵活获取所需信息,适用于系统调试、权限检查、磁盘管理等场景。
402 137
|
5月前
|
安全 Ubuntu Unix
一、初识 Linux 与基本命令
玩转Linux命令行,就像探索一座新城市。首先要熟悉它的“地图”,也就是/根目录下/etc(放配置)、/home(住家)这些核心区域。然后掌握几个“生存口令”:用ls看周围,cd去别处,mkdir建新房,cp/mv搬东西,再用cat或tail看文件内容。最后,别忘了随时按Tab键,它能帮你自动补全命令和路径,是提高效率的第一神器。
948 57
|
4月前
|
存储 安全 Linux
Linux卡在emergency mode怎么办?xfs_repair 命令轻松解决
Linux虚拟机遇紧急模式?别慌!多因磁盘挂载失败。本文教你通过日志定位问题,用`xfs_repair`等工具修复文件系统,三步快速恢复。掌握查日志、修磁盘、验重启,轻松应对紧急模式,保障系统稳定运行。
873 2
|
5月前
|
缓存 监控 Linux
Linux内存问题排查命令详解
Linux服务器卡顿?可能是内存问题。掌握free、vmstat、sar三大命令,快速排查内存使用情况。free查看实时内存,vmstat诊断系统整体性能瓶颈,sar实现长期监控,三者结合,高效定位并解决内存问题。
473 0
Linux内存问题排查命令详解
|
5月前
|
Unix Linux 程序员
Linux文本搜索工具grep命令使用指南
以上就是对Linux环境下强大工具 `grep` 的基础到进阶功能介绍。它不仅能够执行简单文字查询任务还能够处理复杂文字处理任务,并且支持强大而灵活地正则表达规范来增加查询精度与效率。无论您是程序员、数据分析师还是系统管理员,在日常工作中熟练运用该命令都将极大提升您处理和分析数据效率。
474 16
Linux部署04-ls命令的参数和选项,主体,参数,选项,ls / 查看根目录下的文件夹,-a的意思是列出全部选项 ls -a home全部文件,.代表着隐藏的文件夹,-l 选项,以列表竖向的形式展
Linux部署04-ls命令的参数和选项,主体,参数,选项,ls / 查看根目录下的文件夹,-a的意思是列出全部选项 ls -a home全部文件,.代表着隐藏的文件夹,-l 选项,以列表竖向的形式展
Linux部署 cd-pwd命令,cd 不写参数 就直接回到用户的HOME目录,pwd 查看当前的工作目录,pwd是常看当前目录的路径,无参数
Linux部署 cd-pwd命令,cd 不写参数 就直接回到用户的HOME目录,pwd 查看当前的工作目录,pwd是常看当前目录的路径,无参数