System Monitor中的内存使用情况报告与free的内存使用情况报告有什么区别?


14

我正在使用系统监视器2.28.0。当我在“资源”选项卡中查看时,会看到一个漂亮的图形,用于存储和交换。内存约为3.8的2.3%GiB的60%。当我自由键入命令时,我得到:

             total       used       free     shared    buffers     cached
Mem:       3994908    3962396      32512          0     100852    1477032
-/+ buffers/cache:    2384512    1610396
Swap:      8000328      28468    7971860

cat / proc / meminfo | grep MemFree给

MemFree:           34536 kB

情况保持了几分钟。我从一个脚本开始了很多过程,该脚本正在等待可用内存减少。根据我在“进程”选项卡中(或顶部)看到的内容,“系统监视器”中的数字似乎与该进程免费报告的进程的内存总量非常接近。

谢谢

Answers:


15

区别在于“已用”计数中是否包括“缓冲区”和“缓存”内存。

通常,内核将Linux系统内存用于两个目的:进程和文件/网络缓存/缓冲区。如果您仔细查看的输出free,它已经显示:


             total       used       free     shared    buffers     cached
Mem:       3994908    3962396      32512          0     100852    1477032
-/+ buffers/cache:    2384512    1610396
Swap:      8000328      28468    7971860

如果添加“ buffers”和“ cache”,然后从“ used”列中减去,您将在“ used”下获得第二行(以开头的行-/+ buffers/cache),该行显示为2.3G(2384512)使用,它与系统监视器正在报告的使用中的报告内存匹配(它忽略了缓冲区/缓存,因为它们将消失以为更多的进程腾出空间)。

您针对的grep /proc/meminfo实际上与第一行的“免费”列相匹配(32512足够接近34536,可能在两个命令输出之间发生了变化)。


谢谢,我想知道为什么系统需要1.5 Gig的高速缓存,但这很清楚。
GuillaumeCoté10年

1
与其说是“二手”,不如说是“需求”。到那时,它已经从硬盘驱动器读取了至少那么多内容,并将其保存在备用内存中,以防万一需要再次使用它。
Kees Cook

0

当我接触系统监视器时,“资源”选项卡中报告的内存使用情况与中的free列相同/usr/bin/free

问题在于,可用的物理内存很快就会接近0:Linux会激进地缓存,因此您花在购买RAM上的钱会得到有效利用。这意味着该图将不断显示> 98%的内存使用率,这是无用的。

因此,我/我们决定像-/+ buffers/cache:行那样做/usr/bin/free。这样,图形就有意义了,并让用户观看应用程序/用户域的内存使用情况,而不是内存的物理状态。

我知道,这有点令人误解,因为大多数(l)用户都不了解免费的物理内存浪费了金钱和性能。我在工作中遇到了同样的问题:每个星期一服务器都会重新启动,而在接下来的24小时内,每个服务器都会触发“内存已满”警报。因此,就像在系统监视器中一样,我在监视软件中固定了空闲内存计算。

当前的Solaris存在相同的问题:ZFS高速缓存(ARC)不包含在工具报告的可用内存中,该工具vmstat使愚蠢的DB管理员抱怨“ ZFS不好” :)

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.