FreeBSD 中不同的内存计数器是什么意思?

ana*_*cat 20 freebsd memory

顶部告诉我:

last pid: 64807;  load averages:  0.99,  0.97,  0.92                                          up 189+04:47:22 09:16:17
45 processes:  1 running, 44 sleeping
CPU:  0.4% user,  0.0% nice,  0.2% system,  6.4% interrupt, 93.0% idle
Mem: 222M Active, 2151M Inact, 2008M Wired, 823M Buf, 3499M Free
Swap: 8192M Total, 8192M Free
Run Code Online (Sandbox Code Playgroud)

穆宁更清楚地展示了这一点:

rtr1 每年的内存使用量

如您所见,服务器有大约 8GB 的​​内存。我想知道我是否可以把这个野兽塞进一个更普通的 2GB 服务器。现在我知道 active 和 buffers 是什么意思了,我想。但我真的很担心内存的“有线”和“非活动”斑点。据我所知,这些并没有映射到任何现有的流程。

请注意绿色“活动”线在 12 月是如何上升的:那是我们开始在此路由器上使用 BGP 守护程序的时候。我不完全明白四月和五月发生了什么,但我记得当时做了系统升级并切换到pkgng

这是第一个的备用路由器,内存较少(4GB):

rtr0 每年的内存使用量

看起来这个服务器用一半的 RAM 运行得很好,仍然有大约 2GB 的空闲空间,这让我相信我可以为这台服务器切换到 2GB 的盒子,降低成本和维护......

有什么建议?顶部显示的各种内存计数器是什么意思?更具体地说,有什么作用:

  • 积极的
  • 不活动
  • 缓存
  • 缓冲器
  • 有线
  • 自由

...真正的意义?我找到了一些解释 VM 子系统工作原理的帖子,我记得有一个“啊-啊!” 大约在 12 年前了解所有这一切,但我忘记了。:) 即使是忠实的 FreeBSD 手册也未能回答我的问题......

我可以降级到 2GB 吗?

小智 27

  • Active:进程当前正在使用的内存
  • Inactive: 已释放但仍缓存的内存,因为它可能会再次使用。如果Free需要更多内存,则可以清除此内存并使其空闲。这个内存在需要之前不会被清除,因为“空闲内存是浪费内存”,保留旧数据以备再次需要时不需要任何成本。
  • Wired: 内核正在使用的内存。此内存无法换出
  • Cache: 用于缓存数据的内存,如果需要可以立即释放
  • Buffers: 磁盘缓存
  • Free:完全免费且随时可用的内存。InactiveCache并且Buffers如果它们被清理干净就可以免费。

因此,您可以将其添加Inactive到您的Free计数中并将其视为未使用的。Wired是内核使用的内存,包括网络堆栈。运行netstat -m将为您提供网络堆栈的内存使用情况摘要。

根据您的图表,除了wired3 月初相关的内存跳跃之外,是的,您应该能够在 2GB 内存上运行该工作负载。如果这样做,请考虑运行 i386 而不是 amd64,因为每个内存分配将占用更少的空间,因为指针将是 32 位而不是 64 位。