使用 smem 可视化显示Linux内存使用情况
创始人
2024-03-01 14:33:32
0

物理内存不足对Linux桌面系统和服务器系统的性能影响都很大。当你的计算机变慢时,要做的第一件事就是释放内存。尤其是在多用户环境以及执行关键任务的服务器环境下,内存消耗会变得更加关键,因为多个用户和应用线程会同时竞争更多的内存空间。

如果要监测系统内各种资源的使用情况(比如说CPU或内存),图形化显示是一种高效的方法,通过图形界面可以快速分析各用户和进程的资源消耗情况。本教程将给大家介绍在linux下图形化分析内存使用情况的方法,使用到命令行工具是smem.

物理内存使用情况: RSS 、 PSS 和 USS

由于Linux使用到了虚拟内存(virtual memory),因此要准确的计算一个进程实际使用的物理内存就不是那么简单。 只知道进程的虚拟内存大小也并没有太大的用处,因为还是无法获取到实际分配的物理内存大小。

  • RSS(Resident set size),使用top命令可以查询到,是最常用的内存指标,表示进程占用的物理内存大小。但是,将各进程的RSS值相加,通常会超出整个系统的内存消耗,这是因为RSS中包含了各进程间共享的内存。
  • **PSS(Proportional set size)**会更准确一些,它将共享内存的大小进行平均后,再分摊到各进程上去。
  • **USS(Unique set size )**是PSS中自己的部分,它只计算了进程独自占用的内存大小,不包含任何共享的部分。

安装Smem

smem是一个能够生成多种内存耗用报告的命令行工具,它从/proc文件系统中提取各进程的PSS/USS信息,并进行汇总输出。它还内建了图表的生成能力,所以能够方便地分析整个系统的内存使用情况。

在Debian, Ubuntu 或 Linux Mint 上安装smem

$ sudo apt-get install smem 

在Fedora 或 CentOS/RHEL上安装Smem

在CentOS/RHEL上,你首先得启用EPEL仓库。

$ sudo yum install smem python-matplotlib 

使用smem检查内存使用情况

你可以在非特权模式下使用smem,它能够显示当前用户运行的所有进程的内存使用情况,并按照PSS的大小进行排序。

$ smem 

如有你想得到整个系统中所有用户的内存使用情况,就需要使用root权限来运行smem。

$ sudo smem 

也可以按用户维度来输出报告:

$ sudo smem -u 

smem提供了以下选项来对输出结果进行筛选,支持按映射方式(mapping)、进程和用户三个维度的筛选:

  • -M <正则表达式>
  • -P <正则表达式>
  • -U <正则表达式>

想了解smem更多的使用方式,可以查询用户手册(man page)。

使用smem图形化显示内存使用情况

图形化的报告使用起来会更加方便快捷。smem支持两种格式的图形显示方式:直方图和饼图。

下面是一些图形化显示的实例。

下面的命令行会基于PSS/RSS值,生成直方图,以用户alice为例。

$ sudo smem --bar name -c "pss uss" -U alice 

这个例子会生成一张饼图,图中显示了系统中各进程的PSS内存使用量:

$ sudo smem --pie name -c "pss" 

概括来说,smem是一个方便易用的内存分析工具。利用smem的格式化输出,你可以对内存使用报告进行自动化分析,并执行一些自动化的处理措施。如果你还知道其他的一些优秀的内存检测工具,请在留言区告诉我。


via: http://xmodulo.com/visualize-memory-usage-linux.html

作者:Dan Nanni 译者:coloka 校对:wxy

本文由 LCTT 原创翻译,Linux中国 荣誉推出

相关内容

EUROCOM 推出 2k...
IT之家 6 月 22 日消息,厂商 EUROCOM 本月 19 ...
2025-06-22 15:43:08
安装CentOS至联想36...
核心配置确认与环境准备 对于联想ThinkSystem SR365...
2025-06-10 11:40:26
如何查看CentOS系统中...
掌控你的系统核心:CentOS查看CPU与内存信息指南 作为服务器...
2025-06-03 07:40:48
内存DDR4和DDR5的区...
1)内存频率,DDR5相比DDR4频率...
2025-06-01 20:06:35
【性能分析】分析JVM出现...
分析JVM出现的内存持续增加的性能故障手册 前言 本文通过常见的性...
2025-05-31 01:04:14
docker 容器相互访问...
我们都知道docker是一个个容器,他们相互独立互不...
2025-05-30 11:55:49

热门资讯

Helix:高级 Linux ... 说到 基于终端的文本编辑器,通常 Vim、Emacs 和 Nano 受到了关注。这并不意味着没有其他...
使用 KRAWL 扫描 Kub... 用 KRAWL 脚本来识别 Kubernetes Pod 和容器中的错误。当你使用 Kubernet...
JStock:Linux 上不... 如果你在股票市场做投资,那么你可能非常清楚投资组合管理计划有多重要。管理投资组合的目标是依据你能承受...
通过 SaltStack 管理... 我在搜索Puppet的替代品时,偶然间碰到了Salt。我喜欢puppet,但是我又爱上Salt了:)...
Epic 游戏商店现在可在 S... 现在可以在 Steam Deck 上运行 Epic 游戏商店了,几乎无懈可击! 但是,它是非官方的。...
《Apex 英雄》正式可在 S... 《Apex 英雄》现已通过 Steam Deck 验证,这使其成为支持 Linux 的顶级多人游戏之...
如何在 Github 上创建一... 学习如何复刻一个仓库,进行更改,并要求维护人员审查并合并它。你知道如何使用 git 了,你有一个 G...
2024 开年,LLUG 和你... Hi,Linuxer,2024 新年伊始,不知道你是否已经准备好迎接新的一年~ 2024 年,Lin...
什么是 KDE Connect... 什么是 KDE Connect?它的主要特性是什么?它应该如何安装?本文提供了基本的使用指南。科技日...
Opera 浏览器内置的 VP... 昨天我们报道过 Opera 浏览器内置了 VPN 服务,用户打开它可以防止他们的在线活动被窥视。不过...