adtopr
ad1
您所在的位置: 首页 > 科技

有关的如何从Linux终端检查内存使用情况

来源:网易    发布时间:2022-02-17 00:48   作者:网易   阅读量:5794   

Linux 内存使用情况可能难以解释和理解很容易找出一个进程正在使用什么内存,以及哪些进程使用得最多

有关的如何从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:驻留集大小

    要查看以百分比标示的大小,请使用 选项。对于合作的背景,赛微电子表示,截至目前,公司已完成重大战略转型,聚焦资源发展半导体业务,该类业务的比重已超过95%。

    —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

    郑重声明:此文内容为本网站转载企业宣传资讯,目的在于传播更多信息,与本站立场无关。仅供读者参考,并请自行核实相关内容。