何时需要关注 Linux 的内存用量?
创始人
2024-03-02 03:07:30
0

Linux 上的内存管理很复杂。尽管使用率高但未必存在问题。你也应当关注一些其他的事情。

在 Linux 上用光内存通常并不意味着存在严重的问题。为什么?因为健康的 Linux 系统会在内存中缓存磁盘活动,基本上占用掉了未被使用的内存,这显然是一件好事情。

换句话说,它不让内存浪费掉。使用空闲的内存增加磁盘访问速度,并且不占用运行中应用程序的内存。你也能够想到,使用这种内存缓存比起直接访问硬盘驱动器(HDD)快上数百倍,也比明显快于直接访问固态硬盘驱动。内存占满或几乎占满通常意味着系统正在尽可能高效地运行当中 —— 并不是运行中遇到了问题。

缓存如何工作

磁盘缓存简单地意味着系统充分利用未使用的资源(空闲内存)来加速磁盘读取与写入。应用程序不会失去任何东西,并且大多数时间里能够按需求获得更多的内存。此外,磁盘缓存不会导致应用程序转而使用交换分区。反而,用作磁盘缓存的内存空间当被需要时会立即归还,并且磁盘内容会被更新。

主要和次要的页故障

Linux 系统通过分割物理内存来为进程分配空间,将分割成的块称为“页”,并且映射这些页到每个进程的虚拟内存上。不再会用到的页也许会从内存中移除,尽管相关的进程还在运行。当进程需要一个没有被映射或没在内存中页时,故障便会产生。所以,这个“ 故障 fault ”并不意味着“ 错误 error ”而是“ 不可用 unavailables ”,并且故障在内存管理中扮演者一个重要的角色。

次要故障意味着在内存中的页未分配给请求的进程,或未在内存管理单元中标记为出现。主要故障意味着页没有保留在内存中。

如果你想切身感受一下次要页故障和主要页故障出现的频率,像这样试一下 ps 命令。注意我们要的是与页故障和产生它的命令相关的项。输出中省略了很多行。MINFL 显示出次要故障的数目,而 MAJFL 表示了主要故障的数目。

$ ps -eo min_flt,maj_flt,cmd
 MINFL  MAJFL CMD
230760    150 /usr/lib/systemd/systemd --switched-root --system --deserialize 18
     0      0 [kthreadd]
     0      0 [rcu_gp]
     0      0 [rcu_par_gp]
     0      0 [kworker/0:0H-kblockd]
   ...
   166     20 gpg-agent --homedir /var/lib/fwupd/gnupg --use-standard-socket --daemon
   525      1 /usr/libexec/gvfsd-trash --spawner :1.16 /org/gtk/gvfs/exec_spaw/0
  4966      4 /usr/libexec/gnome-terminal-server
  3617      0 bash
     0      0 [kworker/1:0H-kblockd]
   927      0 gdm-session-worker [pam/gdm-password]

汇报单一进程,你可以尝试这样的命令(LCTT 译注:参数里面的 1 是要查看的进程的 PID):

$ ps -o min_flt,maj_flt 1
 MINFL  MAJFL
230064    150

你也可以添加其他的显示字段,例如进程所有者的 UID 和 GID。

$ ps -o min_flt,maj_flt,cmd,args,uid,gid 1
 MINFL  MAJFL CMD                         COMMAND                       UID   GID
230064    150 /usr/lib/systemd/systemd -- /usr/lib/systemd/systemd --     0     0

多少才算满?

一种较好的方法来掌握内存究竟使用了多少是用 free -m 命令。-m 选项指定了数字的单位是 MiB mebibyte 而不是字节。

$ free -m
              total        used        free      shared  buff/cache   available
Mem:           3244        3069          35          49         140         667
Swap:          3535           0        3535

注意 free(未使用)的内存可能会不足,而 available(可用于启动新的应用)会显示更大的数量。这两者的区别值得我们去关注。 可用 available 意味着它可以在需要时恢复使用,而 空闲 free 意味着现在就能够使用。

什么时候要担心

如果 Linux 系统上的性能表现良好 —— 应用程序响应度高,命令行没有显示出问题 —— 很可能系统状况良好。记住,一些应用也许会出于某种原因而变慢,但它不影响整个系统。

过多的硬故障也许表明确实存在问题,但要将其与观察到的性能相比较。

一个好的方法是当可用内存接近 0 或者“ 用作交换 swap used ”项显著增长或波动时开始担心。如果“可用”项占总内存可用量的百分比合理,那么就无需担心,就像下面的例子那样:

$ free -m
              total        used        free      shared  buff/cache   available
Mem:           3244        3069          35          49         140         667
Swap:          3535           0        3535

Linux 性能很复杂

抛开这些不说,Linux 系统上的内存可能会变满,并且性能可能会降低。当系统出现问题时不要仅将单一的内存使用报告作为指标。

Linux 系统的内存管理很复杂,因为它采取的措施需要确保系统资源得到最好的利用。不要受到一开始内存占满的欺骗,使你认为系统存在问题,但实际上并没有。


via: https://www.networkworld.com/article/3394603/when-to-be-concerned-about-memory-levels-on-linux.html

作者:Sandra Henry-Stocker 选题:lujun9972 译者:LuuMing 校对:wxy

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

相关内容

安凯微获得发明专利授权:“...
证券之星消息,根据天眼查APP数据显示安凯微(688620)新获得...
2026-07-15 23:47:21
本地 AI 真正卷的是 l...
作者 |路飞 来源 | 至顶AI实验室 最近追开源模型,我养成了一...
2026-07-14 22:59:16
“AI内存芯片繁荣正在埋下...
AI内存芯片的繁荣能持续多久? 华尔街日报专栏作家James Ma...
2026-05-17 16:19:06
面壁智能正式发布并开源新一...
5月13日,澎湃新闻记者获悉,面壁智能联合清华大学、OpenBMB...
2026-05-13 23:58:43
历经三年终于出货!高端Li...
快科技5月7日消息,英国Linux硬件初创公司Star Labs ...
2026-05-08 15:07:20
价格翻番,AI带火二手手机
漫画:王建明 深圳商报首席记者 袁静娴 2025年9月以来,市场的...
2026-04-03 08:50:57

热门资讯

“Linux 中国” 开源社区... 这是一个艰难的决定 —— 这不是调侃,而是当你真正做出改变了你十几年生活轨迹的决定时,你就会明白这个...
硬核观察 #1263 德国铁路... #1 德国铁路公司招聘 Windows for Workgroups 3.11 管理员该职位要求了解...
人工智能教程(七):Sciki... 在本系列的 上一篇文章 中,我们用 TensorFlow 构建了第一个神经网络,然后还通过 Kera...
关闭 WSL 中正在运行的 L... 以下是使用 WSL 关闭在 Windows 内运行的 Linux 系统的不同方法。你使用 WSL 在...
MX Linux 23.2 “... 最新的 MX Linux 23.2 小版本更新带来了基本的改进和新增功能。MX Linux 推出了 ...
硬核观察 #1262 网络上最... #1 网络上最古老的软件存档库之一即将关闭美国新墨西哥州立大学(NMSU)最近宣布,即将于 2024...
如何在 RHEL 上通过绑定配... 在 Linux 中,你可以根据自己的需要创建高级网络设置,如 网络绑定 Network Bondin...
Linux Matrix 消息... Matrix 用户可以升级 Fractal 6 了!Fractal 是目前 最好的 Matrix 客...
如何通过 VLC 使用字幕 使用 VLC 媒体播放器播放和管理字幕的新手指南。我是一个超级动漫迷,如果你想观看最新的剧集,那么你...
硬核观察 #1261 X 计划... #1 X 计划在奥斯汀建立内容审核总部据报道,该部门将招聘 100 名全职员工,将主要关注 CSE ...