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


20

top告诉我:

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

Munin更清楚地显示了这一点:

rtr1年度内存使用量

如您所见,该服务器具有大约8GB的内存。我想知道我是否可以将此野兽塞入一个更适中的2GB服务器中。现在,我想知道活动和缓冲的含义。但是我真的很担心内存的“有线”和“非活动”斑点。据我所知,这些都没有映射到任何现有过程。

请注意,绿色的“活动”线是如何在12月上升的:那是我们开始在此路由器上使用BGP守护程序的时间。我不完全了解4月和5月的情况,但是我记得当时进行了系统升级并切换到pkgng

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

rtr0年度内存使用量

看来这台机器可以用一半的RAM完美地生活,并且仍然有大约2GB的可用空间,这使我相信我可以为此服务器切换到2GB的机顶盒,从而降低成本和维护...

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

  • 活性
  • 不活跃
  • 快取
  • 缓冲液
  • 有线
  • 自由

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

我可以降级到2GB吗?


这里是Linux版本的这个问题(解释free从命令procps的):Linux的-真正的内存使用情况
亚当·卡茨

Answers:


25
  • Active:进程当前正在使用的内存
  • Inactive:已释放但仍可缓存的内存,因为可能会再次使用它。如果Free需要更多的内存,则可以清除该内存并使其空闲。此内存在需要之前不会清除,因为“空闲内存浪费了内存”,因此在保留旧数据的情况下无需花费任何费用,以防万一再次需要它。
  • Wired:内核正在使用的内存。该内存无法换出
  • Cache:用于缓存数据的内存,如果需要,可以立即释放
  • Buffers:磁盘缓存
  • Free:完全免费且可以使用的内存。InactiveCache并且Buffers可以免费获得清理。

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

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


1
“无效”内存“无法重新分配给其他进程”,因此不应将其视为“未使用”。参见wiki.freebsd.org/Memory
humbads

1
在较新的FreeBSD中,“不活动”计数器已分为2个单独的项目。“不活动”和“洗衣”(仍需要刷新以交换或磁盘才能释放的内存)。附加说明在这里:lists.freebsd.org/pipermail/freebsd-arch/2016-November/...
艾伦裘德
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.