为什么 Linux 的空闲内存不仅仅是‘-/+ buffers/cache’的‘空闲’

为什么 Linux 的空闲内存不仅仅是‘-/+ buffers/cache’的‘空闲’

我学会了并且一直认为 Linux 的空闲内存是“-/+ buffers/cache”的“空闲”,您可以从许多网站获得这方面的知识。 free 输出中的 buffers/cache 行的含义 http://www.linuxatemyram.com/

[root@dev001 ~]# free
             total       used       free     shared    buffers     cached
Mem:      32877844   31422864    1454980          0    1358500     774612
-/+ buffers/cache:   29289752    3588092
Swap:      1048568      67984     980584
[root@dev001 ~]# mkdir /mnt/ramdisk
[root@dev001 ~]# mount -t tmpfs -o size=10g tmpfs /mnt/ramdisk
[root@dev001 ~]# cd /mnt/ramdisk/
[root@dev001 ramdisk]# dd if=/dev/zero of=1g bs=1024 count=$((1024*1024*10))
10485760+0 records in
10485760+0 records out
10737418240 bytes (11 GB) copied, 20.0645 s, 535 MB/s
[root@dev001 ramdisk]# ls -lh
total 10G
-rw-r--r-- 1 root root 10G Jul 26 21:09 1g
[root@dev001 ramdisk]# free 
             total       used       free     shared    buffers     cached
Mem:      32877844   32630940     246904          0     792364   10901876
-/+ buffers/cache:   20936700   11941144
Swap:      1048568      67984     980584
[root@dev001 ~]# umount /mnt/ramdisk
[root@dev001 ~]# free 
             total       used       free     shared    buffers     cached
Mem:      32877844   22128348   10749496          0     792416     416160
-/+ buffers/cache:   20919772   11958072
Swap:      1048568      67984     980584
[root@dev001 ~]# free
             total       used       free     shared    buffers     cached
Mem:      32877844   22127372   10750472          0     792432     416160
-/+ buffers/cache:   20918780   11959064
Swap:      1048568      67984     980584

然而,最近我发现我的服务器内存不足,但是当我们执行这些操作时,内存又恢复了。有谁能回答为什么吗?

  1. 可用内存为 3,588,092(假设为 3.4G),总内存为 32G,对吗?
  2. 在此步骤中,我们没有通过命令“top”发现任何占用大量内存的进程,因此我们认为 3.4G 的可用内存是不正确的,我们 100% 确定可用内存至少为 20G
  3. 我们把内存挂载到本地,然后往里面写入数据,可以看到有10G了,成功了
  4. 卸载后,可用内存增加到 11,959,064,这是怎么回事?

看来可用内存不仅仅是“-/+缓冲区/缓存”的“可用”

谢谢

答案1

使用量是缓冲区+缓存和实际系统内存使用量的总和。在您的情况下,当您尝试将内存作为 ramdisk 安装到本地时,它会从缓存中获取内存。如果您发现卸载该分区后缓存大小会减少,因为该缓存内存再次变为可用内存。

相关内容