使用 top 命令了解 Fedora 的内存使用情况
创始人
2024-03-02 00:21:28
0

如果你使用过 top 命令来查看 Fedora 系统中的内存使用情况,你可能会惊讶,看起来消耗的数量比系统可用的内存更多。下面会详细介绍内存使用情况以及如何理解这些数据。

内存实际使用情况

操作系统对内存的使用方式并不是太通俗易懂。事实上,其背后有很多不为人知的巧妙技术在发挥着作用。通过这些方式,可以在无需用户干预的情况下,让操作系统更有效地使用内存。

大多数应用程序都不是系统自带的,但每个应用程序都依赖于安装在系统中的库中的一些函数集。在 Fedora 中,RPM 包管理系统能够确保在安装应用程序时也会安装所依赖的库。

当应用程序运行时,操作系统并不需要将它要用到的所有信息都加载到物理内存中。而是会为存放代码的存储空间构建一个映射,称为虚拟内存。操作系统只把需要的部分加载到内存中,当某一个部分不再需要后,这一部分内存就会被释放掉。

这意味着应用程序可以映射大量的虚拟内存,而使用较少的系统物理内存。特殊情况下,映射的虚拟内存甚至可以比系统实际可用的物理内存更多!而且在操作系统中这种情况也并不少见。

另外,不同的应用程序可能会对同一个库都有依赖。Fedora 中的 Linux 内核通常会在各个应用程序之间共享内存,而不需要为不同应用分别加载同一个库的多个副本。类似地,对于同一个应用程序的不同实例也是采用这种方式共享内存。

如果不首先了解这些细节,top 命令显示的数据可能会让人摸不着头脑。下面就举例说明如何正确查看内存使用量。

使用 top 命令查看内存使用量

如果你还没有使用过 top 命令,可以打开终端直接执行查看。使用 Shift + M 可以按照内存使用量来进行排序。下图是在 Fedora Workstation 中执行的结果,在你的机器上显示的结果可能会略有不同:

主要通过以下三列来查看内存使用情况:VIRTRESSHR。目前以 KB 为单位显示相关数值。

VIRT 列代表该进程映射的 虚拟 virtual 内存。如上所述,虚拟内存不是实际消耗的物理内存。例如, GNOME Shell 进程 gnome-shell 实际上没有消耗超过 3.1 GB 的物理内存,但它对很多更低或更高级的库都有依赖,系统必须对每个库都进行映射,以确保在有需要时可以加载这些库。

RES 列代表应用程序消耗了多少实际( 驻留 resident )内存。对于 GNOME Shell 大约是 180788 KB。例子中的系统拥有大约 7704 MB 的物理内存,因此内存使用率显示为 2.3%。

但根据 SHR 列显示,其中至少有 88212 KB 是 共享 shared 内存,这部分内存可能是其它应用程序也在使用的库函数。这意味着 GNOME Shell 本身大约有 92 MB 内存不与其他进程共享。需要注意的是,上述例子中的其它程序也共享了很多内存。在某些应用程序中,共享内存在内存使用量中会占很大的比例。

值得一提的是,有时进程之间通过内存通信,这些内存也是共享的,但 top 这样的工具却不一定能检测到,所以以上的说明也不一定准确。

关于交换分区

系统还可以通过交换分区来存储数据(例如硬盘),但读写的速度相对较慢。当物理内存渐渐用满,操作系统就会查找内存中暂时不会使用的部分,将其写出到交换区域等待需要的时候使用。

因此,如果交换内存的使用量一直偏高,表明系统的物理内存已经供不应求了。有时候一个不正常的应用也有可能导致出现这种情况,但如果这种现象经常出现,就需要考虑提升物理内存或者限制某些程序的运行了。

感谢 Stig NygaardFlickr 上提供的图片(CC BY 2.0)。


via: https://fedoramagazine.org/understand-fedora-memory-usage-top/

作者:Paul W. Frields 选题:lujun9972 译者:HankChow 校对:wxy

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

相关内容

剑指英伟达?高通杀入AI芯...
AI芯片战场硝烟再起,又有巨头搅局! 高通最新宣布进军人工智能芯片...
2025-10-28 12:18:31
高通连发两款AI芯片,76...
芯东西(公众号:aichip001) 作者 | ZeR0 编辑 |...
2025-10-28 08:16:23
和互联网一样,国产AI产品...
文 | 道总有理 一边奔赴上市,另一边却无情裁员,智谱AI近日的...
2025-10-22 18:16:45
英特尔与阿里云携手,为AI...
在AI浪潮之下,当整个行业都在为算法和模型的迭代狂欢时,英特尔与阿...
2025-10-22 12:18:15
AI引爆内存需求,三星利润...
得益于人工智能(AI)引发的全球芯片热潮,三星电子的盈利能力正迎来...
2025-10-14 10:47:56
部分苹果 macOS 26...
科技媒体 MacObserver 昨日(10 月 10 日)发布博...
2025-10-11 12:16:11

热门资讯

Helix:高级 Linux ... 说到 基于终端的文本编辑器,通常 Vim、Emacs 和 Nano 受到了关注。这并不意味着没有其他...
《Apex 英雄》正式可在 S... 《Apex 英雄》现已通过 Steam Deck 验证,这使其成为支持 Linux 的顶级多人游戏之...
使用 KRAWL 扫描 Kub... 用 KRAWL 脚本来识别 Kubernetes Pod 和容器中的错误。当你使用 Kubernet...
如何在 Github 上创建一... 学习如何复刻一个仓库,进行更改,并要求维护人员审查并合并它。你知道如何使用 git 了,你有一个 G...
JStock:Linux 上不... 如果你在股票市场做投资,那么你可能非常清楚投资组合管理计划有多重要。管理投资组合的目标是依据你能承受...
从 Yum 更新中排除特定/某... 作为系统更新的一部分,你也许需要在基于 Red Hat 系统中由于应用依赖排除一些软件包。如果是,如...
Epic 游戏商店现在可在 S... 现在可以在 Steam Deck 上运行 Epic 游戏商店了,几乎无懈可击! 但是,它是非官方的。...
通过 SaltStack 管理... 我在搜索Puppet的替代品时,偶然间碰到了Salt。我喜欢puppet,但是我又爱上Salt了:)...
如何检查你的 Linux 系统... 不知道在使用哪个初始化系统?以下是方法。每个主流 Linux 发行版(包括 Ubuntu、Fedor...
如何理解Apache 2.0许... 提要:Apache 2.0许可证中的专利许可条款使得开源代码可以安全使用,但它经常被误解。Apach...