Linux 内存使用情况可能难以解释和理解很容易找出一个进程正在使用什么内存,以及哪些进程使用得最多
smem
内存使用情况
Linux 为您提供了许多方法来检查您计算机的RAM发生了什么问题是,内存管理对您的操作系统来说是一个复杂的挑战它必须兼顾物理 RAM,交换空间形式的虚拟 RAM 以及随时运行的不同类型进程的需求
有关的您的电脑需要多少 RAM 才能玩 PC 游戏。
进程在将自己加载到内存时会消耗 RAM然后他们要求更多的 RAM,以便他们有空间来执行他们设计的任何任务一些进程几乎不会影响 RAM,而另一些进程则非常消耗内存
内核和操作系统的其余部分,您的桌面环境以及您运行的每个应用程序或命令行会话都在要求您计算机中安装的有限 RAM 的一部分一些进程产生其他进程一些进程与其他进程共享 RAM
有关的如何从 Linux 终端检查内存使用情况
试图破译所有这些,并为这个程序或进程使用多少 RAM这个问题想出一个简单的答案可能是一个令人惊讶的挑战粒度很棒并且有它的位置,但同样,信息过度杀伤可能是一个障碍
例如,使用 to peek into the /proc/meminfo 伪文件系统 在用于研究本文的机器上返回 50 行输出你从哪里开始
cat
猫 /proc/meminfo
一些 Linux 实用程序给出了不同的答案在我们的测试机器上,我们有一个 running 实例,它的进程 ID 为 2183
less
我们可以使用带有选项的实用程序来全面了解进程的内存使用情况。我们将它与我们的实例的进程 ID 一起使用:
pmap
less
pmap —x 2183
在输出的底部,我们得到了 Resident Set Size 的总和,即正在使用的主 RAM 的数量。
然后,我们使用带有 选项的实用程序,选择列,并将相同实例的进程 ID 传递给它:
ps
—o
RSS
less
ps —o rss 2183
ps
ps
man
SIZE 和 RSS 字段不计算进程的某些部分,包括页表,内核堆栈,struct thread_info 和 struct task_struct这通常是始终驻留的至少 20 KiB 内存SIZE 是进程的虚拟大小
RSS,USS 和 PSS
驻留集大小 是分配给进程的 RAM 量,不包括交换空间,但包括进程正在使用的共享库所需的任何 RAM。
有关的为什么计算机的 RAM 已满是件好事
RSS 几乎总是过度报告 RAM 使用情况如果两个或多个进程使用一个或多个共享库,RSS 将简单地将每个库的 RAM 使用量添加到每个进程的 RAM 使用量计数中除了不准确之外,这还具有一定的讽刺意味共享库意味着每个进程不需要加载自己的私有库实例如果库已经在内存中,它将共享那个库——并减少 RAM 开销
唯一集大小是进程独占使用的 RAM 量,无论它是由进程直接使用,还是由仅由进程使用的库使用同样,它忽略了交换空间它只对真正的物理 RAM 感兴趣
smem
smem 实用程序
该实用程序报告进程,用户,映射或系统范围使用的内存在我们测试的所有 发行版上,它都需要安装
smem
sudo apt install smem
要在 Fedora 上安装,您需要输入:
smem
须藤 dnf 安装 smem
要在 Manjaro 上安装,请使用:
smem
sudo pacman —Sy smem
不带选项使用会为您提供正在使用 RAM 的进程的列表。
smem
smem
信息表显示在终端窗口中。
这些列是:
- PID:正在使用内存的进程的进程 ID
- User:拥有该进程的用户的用户名
- 命令:启动进程的命令行
- Swap:进程正在使用多少交换空间
- USS:唯一集大小
- PSS:比例集大小
- RSS:驻留集大小
要查看以百分比标示的大小,请使用 选项。其在国内外拥有多座中试平台及量产工厂,业务遍及全球,服务客户包括国际知名的DNA/RNA测序仪,光刻机,计算机网络及系统,硅光子,红外,可穿戴设备,新型医疗设备,汽车电子等巨头厂商以及细分行业的领先企业,涉及产品范围覆盖了通讯,生物医疗,工业汽车,消费电子等诸多领域。
—p
smem —p
以字节为单位的大小已替换为百分比。。
要查看以更人性化的形式呈现的图形,请使用选项这会缩小数字并添加单位指示符
—k
smem —k
大小以兆字节,千兆字节等显示,而不是原始字节。
要添加总计行,请使用选项。
—t
smem —k —t
输出的最后一行显示每列的总计。
完善报告
您可以要求报告用户,映射或系统范围的内存使用情况要按用户过滤输出,请使用 选项
smem
—u
smem
sudo
smem —u
sudo smem —u
如您所见,对于超过八个字符的用户名,输出会变形。
要查看映射到正在使用的库的使用情况,无论哪些进程正在使用这些库,也不管哪些用户拥有这些进程,请使用 选项。据了解,赛微电子是全球领先,国际化运营的高端集成电路晶圆代工生产商,也是国内拥有自主知识产权和掌握核心半导体制造技术的特色工艺专业晶圆制造商。赛微电子同时正在打造先进的晶圆级封装测试能力,致力于为客户提供从工艺开发,晶圆制造到封装测试的系统化高端制造服务,努力发展成一家国际化经营的知名半导体制造领军企业。
—m
smem —m —k —t
我们还要求提供人类可读的值和总数。
要查看系统范围的内存使用情况,请使用 选项。
—w
smem —w —k —t
报告单个程序
使用一点命令行魔法,我们可以报告单个程序及其所有子进程我们将输出从 管道输入 并要求只显示最后一行我们将告诉使用人类可读的值并提供总数总数将是最后一行,这就是将为我们显示的行
smem
tail
tail
smem
tail
我们将使用 选项并告诉它我们希望将哪些列包含在我们的输出中我们将把它限制在 Proportional Set Size 列 选项允许我们给. 仅包含匹配的输出行
—c
smem
—P
smem
smem —c pss —P firefox —k —t
这是找出程序及其子进程的 RAM 消耗的快速而简洁的方法。
生成图表
您可以通过or选项来生成图表不得不说,如果类别太多,图表很快就会变得难以理解,但它们对于快速的视觉概览很有用
——pie
——bar
smem
命令格式为:
smem ——pie 名称 —s uss
饼图显示在其自己的查看器窗口中。
要查看其他图,请使用或代替要查看条形图,请使用代替
pss
rss
uss
——bar
——pie
为此,您需要安装Python以及 库这些已经安装在我们测试的 Ubuntu,Fedora 和 Manjaro 发行版上
matplotlib
好东西装在小包装里
该 实用程序还有一些技巧,我们鼓励您查看它的页面它的主要功能是我们在此处概述的内容,它是您的 CLI 工具箱中的一个很棒的小工具
smem
man
。声明:本网转发此文章,旨在为读者提供更多信息资讯,所涉内容不构成投资、消费建议。文章事实如有疑问,请与有关方核实,文章观点非本网观点,仅供读者参考。