我学会了并且一直认为 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
然而,最近我发现我的服务器内存不足,但是当我们执行这些操作时,内存又恢复了。有谁能回答为什么吗?
- 可用内存为 3,588,092(假设为 3.4G),总内存为 32G,对吗?
- 在此步骤中,我们没有通过命令“top”发现任何占用大量内存的进程,因此我们认为 3.4G 的可用内存是不正确的,我们 100% 确定可用内存至少为 20G
- 我们把内存挂载到本地,然后往里面写入数据,可以看到有10G了,成功了
- 卸载后,可用内存增加到 11,959,064,这是怎么回事?
看来可用内存不仅仅是“-/+缓冲区/缓存”的“可用”
谢谢
答案1
使用量是缓冲区+缓存和实际系统内存使用量的总和。在您的情况下,当您尝试将内存作为 ramdisk 安装到本地时,它会从缓存中获取内存。如果您发现卸载该分区后缓存大小会减少,因为该缓存内存再次变为可用内存。