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

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

  • 一、smem命令介绍
  • 二、smem命令的使用帮助
    • 2.1 smem命令的help帮助信息
    • 2.2 smem命令的语法解释
  • 三、smem工具安装
    • 3.1 安装epel
    • 3.2 搜索smem包
    • 3.3 安装smem
  • 四、smem命令的基本使用
    • 4.1 查看内存概览
    • 4.2 查看内存占用百分比
    • 4.3 查看系统内存使用情况
    • 4.4 显示单位后缀
    • 4.5 对结果排序
  • 五、显示图表
    • 5.1 安装python
    • 5.4 显示饼状图和柱状图
  • 六、使用注意事项

在这里插入图片描述

一、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 查看手册页,可以提供更详细的命令选项和使用案例。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/701190.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

JDKCGLIB实现动态代理

1.代理模式 代理模式是23中设计模式中的一种。简单来说就是我们使用代理对象来替代真实对象,这样就可以实现在不修改原目标对象的前提下,提供额外的功能操作,以达到扩展目标对象的功能。 代理模式的功能主要是扩展目标对象的功能,比如说在目…

35、matlab设置字体、查看工具包版本、窗口默认布局和程序发布

1、matlab设置字体 1)找到预设并点击预设 2)设置流程:字体——>自定义——>编辑器——>选择字体及格式——>确定 如图序号所示 2、matlab查看工具包版本:ver命令 1)命令行窗口输入命令 即可查看工具包…

Halcon 多相机统一坐标系

小杨说事-基于Halcon的多相机坐标系统一原理个人理解_多相机标定统一坐标系-CSDN博客 一、概述 最近在搞多相机标定等的相关问题,对于很大的场景,单个相机的视野是不够的,就必须要统一到一个坐标系下,因此我也用了4个相机&#…

指挥中心操作台在轨道交通中的作用

随着城市化进程的加速和交通需求的日益增长,轨道交通作为高效、便捷、环保的出行方式,在城市交通体系中扮演着越来越重要的角色。而在轨道交通系统的运行中,指挥中心操作台则发挥着至关重要的作用。本文将详细探讨指挥中心操作台在轨道交通中…

龙气万象-大麗和和「腾龙图」翡翠高级珠宝系列

泠泠龙吟,气象万千。大麗和和诚献「腾龙图」翡翠高级珠宝系列,以贯穿上下五千年的龙图腾纹样为主轴,融入现代高级珠宝设计,集雅列珍,见证龙纹嬗变,探讨美学的传承与创新。 这一系列从探讨构思到惊艳呈现历时20个月,龙纹原型跨越从战国早期至明清两代的漫长岁月,设计团队自青铜…

ttkbootstrap的icon图标自定义

前言 在使用ttkbootstrap库时,发现icon参数使用报错,错误代码 root ttk.Window(themename"superhero",size(1400, 700),resizable(True, True),iconphoto"1.png" )结果报错:iconphoto path is bad; using default ima…

STM32存储左右互搏 模拟U盘桥接SPI总线FATS读写FLASH W25QXX

STM32存储左右互搏 模拟U盘桥接SPI总线FATS读写FLASH W25QXX STM32的USB接口可以模拟成为U盘,通过FATS文件系统对连接的存储单元进行U盘方式的读写。 这里介绍STM32CUBEIDE开发平台HAL库模拟U盘桥接SPI总线FATS读写W25Q各型号FLASH的例程。 FLASH是常用的一种非易失…

【八股系列】react里组件通信有几种方式,分别怎样进行通信?

文章目录 1. props传递(父向子通信):2. 回调函数作为props(子向父通信):3. Context API:4. Redux或MobX等状态管理库:4.1 Redux使用示例 5. refs: 1. props传递(父向子通信&#xff…

netty内存马探究

0x01 前言 基于netty动态创建pipeline的特性,其内存马的构造思路与tomcat有一定的区别,目前网上有关netty内存马的文章都围绕CVE-2022-22947和XXL-JOB两种场景展开,并未对其做更为详细的分析。本文就以上述两种场景为始,尝试从源码…

打造智能饲料工厂:全自动生产线设备

全自动饲料生产线设备实现了从原料投放到成品包装的全程自动化操作。通过传感器和控制系统,设备能够精确控制原料的配比和混合均匀度,确保饲料的质量稳定可靠。同时,自动化生产线还具备智能调节功能,能够根据生产需求自动调节生产…

四季变换,制氮机使用注意事项

随着四季的轮回变换,大自然展现着不同的风貌。对于制氮机而言,季节的变换同样会带来不同的使用挑战和注意事项。本文将为您揭示四季变换对制氮机使用的影响,帮助您更好地掌握制氮机的季节使用须知。 春季 温湿度变化:春季温湿度逐…

Shell脚本从入门到实战

一、概述 shell 是一个命令行解释器,它接受应用程序、用户命令,然后调用操作系统内核。 shell 还是一个功能强大编程语言,易调试,易编写,灵活性强。 二、mac 怎么重启docker 1.如何重启 Docker on Mac 在 macOS 上…

Flutter笔记:关于WebView插件的用法(上)

Flutter笔记 关于WebView插件的用法(上) - 文章信息 - Author: 李俊才 (jcLee95) Visit me at CSDN: https://jclee95.blog.csdn.netMy WebSite:http://thispage.tech/Email: 291148484163.com. Shenzhen ChinaAddress of this article:htt…

SpringMVC:拦截器(Interceptor)

1. 简介 拦截器(Interceptor)类似于过滤器(Filter) Spring MVC的拦截器作用是在请求到达控制器之前或之后进行拦截,可以对请求和响应进行一些特定的处理。拦截器可以用于很多场景下: 1. 登录验证&#xf…

Qt Creator 输入中文

安装fcitx-libs-qt或fcitx-libs-qt5 查看系统自带libfcitxplatforminputcontextplugin.so位置 dpkg -L fcitx-frontend-qt5 | grep .so文件位于 /usr/lib/x86_64-linux-gnu/qt5/plugins/platforminputcontexts/libfcitxplatforminputcontextplugin.so将上述文件拷贝至Qt安装…

燕之屋被授予“国家食品企业质量安全检测技术示范中心(无锡)分中心”牌匾

5月27日,江苏教育界与产业界对话对接系列活动——新型食品与大健康产业协同创新发展大会在江南大学召开。会上,燕之屋荣获“国家食品企业质量安全检测技术示范中心(无锡)分中心”授牌,燕之屋副总经理、研发技术总监范群…

Linux内网数据代理与数据映射实验

背景介绍 有两台主机,其中一台可以联网,而另一台只能与联网主机,尝试通过配置,使该主机也能正常上网,这常应用于企业内部不联网的服务器,需要安全可靠或临时上网的场景,借助另一台可以上网的内…

Docker:认识Docker Bridge网络

文章目录 为什么需要网络管理Docker网络架构简介CNMLibNetwork驱动Docker网络管理命令网络命令基本操作网络详解docker Bridge网络 容器之间的网络通信DNS解析 为什么需要网络管理 容器的网络默认会与宿主机器以及其他的容器相互隔离,但是还需要考虑到下面的这些问…

微软将 AI 工具和软件的研发工作外包给 OpenAI

微软将 AI 工具和软件的研发工作外包给 OpenAI 科技媒体 CNBC 报道称,微软正计划将其人工智能(AI)工具和软件的开发工作外包给OpenAI,这对竞争对手谷歌来说无疑是一个利好消息。 Okta首席执行官Todd McKinnon表示,微…

GPT-4o多模态大模型的架构设计

GPT-4o:大模型风向,OpenAI大更新 OpenAI震撼发布两大更新!桌面版APP与全新UI的ChatGPT上线,简化用户操作,体验更自然。同时,全能模型GPT-4o惊艳亮相,跨模态即时响应,性能卓越且性价比…