Linux内存管理神器:smem工具

简介: Linux内存管理神器:smem工具

大家好,我是良许。今天给大家分享一款 Linux 系统里的内存管理神器:smemsmem 是Linux系统上的一款可以生成多种内存耗用报告的命令行工具。与现有工具不一样的是 smem 可以报告 PSS【Proportional Set Size(按比例占用大小)】,这是一种更有意义的指标。可以衡量虚拟内存系统的库和应用程序所占用的内存数量。由于大部分的物理内存通常在多个应用程序之间共享,名为驻留集大小(RSS)的这个标准的内存耗用衡量指标会大大高估内存耗用情况。PSS这个参数而是衡量了每个应用程序在每个共享内存区中的「公平分配」,给出了一个切合实际的衡量指标。

1. 安装 smem 工具

如果你使用的是 Fedora 19 以上系统, smem  默认在存储库中,因此你可以使用 yum 来安装它:

$ sudo yum install smem

对于 Ubuntu 用户,可以使用 apt-get 命令来安装  smem

$ sudo apt-get install smem

如果无法正常安装的话,可以下载它的源码直接安装,地址为:https://www.selenic.com/smem/download/

2. smem 工具常见用法

默认情况下, smem  将显示每个正在运行的进程及所使用的内存。在这里,你可以留意 RSS 相对于 USS 和 PSS 的大小,可以看到它明显高于另外二者。

$ smem

微信图片_20220419180951.jpg此外, smem  还可显示每个库所使用的内存。这个结果比较长,可能需要耗费一些时间,取决于你的系统。

$ smem -m

这个命令产生的结果太多了,如果我们想要查看特定应用程序使用内存情况,例如 Firefox,那么我们可以配合 grep 命令使用,同时使用 -p 选项以百分比形式查看内存使用情况。

$ smem -m -p | grep firefox

微信图片_20220419180954.jpgsmem  命令还可以显示每个用户的内存使用情况,需要使用 -u 选项:

$ smem -u -p

微信图片_20220419180957.jpg你还可以使用 -w 选项查看系统内存使用情况:

$ smem -w -p

微信图片_20220419181000.jpg

3. 结果可视化输出

显示数字毕竟不直观,我们还可以使用 smem 生成图形图表来显示内存使用情况,一目了然。要达到这个目的,我们需要使用到除了不能生孩子啥都可以干的 Python 。但光有 Python 还不行,还需要安装用于生成图表的 matplotlib 库。Fedora 用户可以通过运行以下命令来安装它:

$ sudo yum install python-matplotlib

Ubuntu 用户可以通过运行下面命令获得它:

$ sudo apt-get install python-matplotlib

库安装之后,现在就可以以条形图或饼图的形式将获得的内存使用情况以可视化表示。

3.1 饼形图

使用 smem 以饼图的形式查看内存使用情况,需要加上 --pie 选项,如下所示:

$ smem --pie name -s pss

命令运行之后将生成一个饼图。请注意,这条命令里我们还加了 -s pss ,意思是显示 PSS 的内存使用情况。要获取 USS 和 RSS 的饼图,只需将命令中的 pss 替换为 uss 或 rss 即可。微信图片_20220419181003.jpg微信图片_20220419181006.jpg从两个饼图中,可以看到 RSS 报告还有 41.74% 的未使用内存,而 PSS 报告有 53.02% 的未使用内存。可以看出来,RSS 显示的可用内存偏小,但实际还有很充足的内存空间。

3.2 柱状图

smem  的另一个很酷的特性是以柱状图的形式生成输出。有了这个功能,你可以一次性查看 USS、PSS 和 RSS 报告的内存使用情况。要实现这个功能,需要加上 --bar 选项:

$ smem --bar pid -c "pss uss rss"

上面的命令将给出带有进程 ID 号的内存使用情况的输出结果。如果想要查看进程的名称,可以将 pid 替换为 name 即可。命令运行之后,可以生成如下图所示的条柱状图。微信图片_20220419181008.jpg

目录
相关文章
|
4月前
|
Linux 开发工具
7种比较Linux中文本文件的最佳工具
7种比较Linux中文本文件的最佳工具
7种比较Linux中文本文件的最佳工具
|
2月前
|
Linux 数据安全/隐私保护 iOS开发
推荐Linux环境下效能优良的双向文件同步工具
综合上述条件,对于Linux环境下的双向文件同步需求,Unison 和 Syncthing 是两个非常出色的选择。它们都有良好的社区支持和文档资源,适用于不同规模的环境,从个人使用到商业部署。Unison 特别适合那些需要手动干预同步过程、需要处理文件冲突解决的场景。而 Syncthing 更加现代化,适合需要自动、实时的数据同步与备份的环境。对于选择哪一个,这将取决于个人的使用场景和具体需求。
253 16
|
4月前
|
Ubuntu 搜索推荐 Linux
详解Ubuntu的strings与grep命令:Linux开发的实用工具。
这就是Ubuntu中的strings和grep命令,透明且强大。我希望你喜欢这个神奇的世界,并能在你的Linux开发旅程上,通过它们找到你的方向。记住,你的电脑是你的舞台,在上面你可以做任何你想做的事,只要你敢于尝试。
256 32
|
4月前
|
缓存 Linux 数据安全/隐私保护
Linux环境下如何通过手动调用drop_caches命令释放内存
总的来说,记录住“drop_caches” 命令并理解其含义,可以让你在日常使用Linux的过程中更加娴熟和自如。
934 23
|
3月前
|
存储 Ubuntu Linux
内存卡格式化必看!4个格式化工具与注意事项
今天就给大家推荐几款经过实测的内存卡格式化工具,它们不仅使用简单、支持多种格式,而且在修复损坏卡方面也表现稳定,是实用性与安全性兼具的好帮手。
|
6月前
|
自然语言处理 数据库 iOS开发
DBeaver Ultimate Edtion 25.0 Multilingual (macOS, Linux, Windows) - 通用数据库工具
DBeaver Ultimate Edtion 25.0 Multilingual (macOS, Linux, Windows) - 通用数据库工具
416 12
DBeaver Ultimate Edtion 25.0 Multilingual (macOS, Linux, Windows) - 通用数据库工具
|
6月前
|
监控 Linux Python
Linux系统资源管理:多角度查看内存使用情况。
要知道,透过内存管理的窗口,我们可以洞察到Linux系统运行的真实身姿,如同解剖学家透过微观镜,洞察生命的奥秘。记住,不要惧怕那些高深的命令和参数,他们只是你掌握系统"魔法棒"的钥匙,熟练掌握后,你就可以骄傲地说:Linux,我来了!
218 27
|
5月前
|
运维 安全 Linux
试试Linux设备命令行运维工具——Wowkey
WowKey 是一款专为 Linux 设备设计的命令行运维工具,提供自动化、批量化、标准化、简单化的运维解决方案。它简单易用、高效集成且无依赖,仅需 WIS 指令剧本文件、APT 账号密码文件和 wowkey 命令即可操作。通过分离鉴权内容与执行内容,WowKey 让运维人员专注于决策,摆脱繁琐的交互与执行细节工作,大幅提升运维效率与质量。无论是健康检查、数据采集还是配置更新,WowKey 都能助您轻松应对大规模设备运维挑战。立即从官方资源了解更多信息:https://atsight.top/training。
|
5月前
|
数据采集 运维 安全
Linux设备命令行运维工具WowKey问答
WowKey 是一款用于 Linux 设备运维的工具,可通过命令行手动或自动执行指令剧本,实现批量、标准化操作,如健康检查、数据采集、配置更新等。它简单易用,只需编写 WIS 指令剧本和 APT 帐号密码表文件,学习成本极低。支持不同流派的 Linux 系统,如 RHEL、Debian、SUSE 等,只要使用通用 Shell 命令即可通吃Linux设备。