系统监视器中的内存使用情况报告与免费的内存使用情况报告有什么区别?

我正在使用System Monitor 2.28.0。 当我查看“资源”选项卡时,我看到了一个用于内存和交换的漂亮图表。 记忆大约是60%,2.3吉比特3.8。 当我自由输入命令时,我得到了:

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 

情况仍然是几分钟的节省。 我用脚本开始了很多进程,脚本正在等待可用内存降低。 根据我在“进程”选项卡(或顶部)中看到的内容,系统监视器中的数字似乎与免费报告的进程内存总量相关。

谢谢

不同之处在于“缓冲”和“缓存”存储器是否包含在“已使用”计数中。

通常,内核使用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)正在使用中,它与报告的系统监视器正在报告的内存相匹配(它忽略缓冲区/缓存,因为它们将为更多进程腾出空间)。

您对/proc/meminfo grep实际匹配第一行的“free”列(32512足够接近34536 – 它可能在两个命令输出之间发生变化)。

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

问题是,免费的物理内存很快就会接近0:Linux会缓慢地缓存,因此你花在购买RAM上的资金得到了有效利用。 这意味着图表将不断显示> 98%的内存使用量,这是无用的。

所以我/我们决定做-/+ buffers/cache: /usr/bin/free 。 这样,图形就是有意义的,让用户观察〜应用程序/用户区内存使用情况,而不是内存的物理状态。

我知道,这有点误导,因为大多数(l)用户不明白免费物理内存是浪费金钱和性能。 我在工作中面临同样的问题:每个星期一,服务器都会重启,在接下来的24小时内,每台服务器都会触发“内存已满”警报。 所以我在监控软件中修复了自由内存计算,就像在系统监视器中一样。

当前的Solaris有同样的问题:ZFS缓存(ARC)不包含在vmstat类的工具报告的可用内存中,这使得愚蠢的DB管理员抱怨“ZFS很糟糕”:)