Назад | Перейти на главную страницу

Почему свободная память Linux - это не просто «свободная» от «- / + buffers / cache»

Я узнал и всегда думаю, что свободная память Linux - это «свободная» от «- / + буферов / кеша». Вы можете получить эти знания на многих сайтах. Значение строки буферов / кеша в выводе free 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,4 ГБ), а общая память - 32 ГБ, я прав?
  2. На этом этапе мы не обнаружили ни одного процесса, который потребляет много памяти с помощью команды 'top', поэтому мы подумали, что 3,4 ГБ бесплатно - это неправильно, мы на 100% уверены, что свободной памяти не менее 20 ГБ.
  3. Мы монтируем нашу память как ramdisk на локальный, и записываем в него данные, как видите, это 10G, и это успешно
  4. После размонтирования количество свободной памяти увеличилось до 11 959 064, как это могло быть?

Кажется, что свободная память - это не просто "свободная" от "- / + буферов / кеша"

Спасибо

Используется - это сумма буфера + кеша и фактического использования системной памяти. В вашем случае, когда вы пытаетесь смонтировать свою память как ramdisk на локальный, он взял память из кеша. Если вы заметили, что размер кеша уменьшается после размонтирования этого раздела, потому что эта кеш-память снова становится свободной памятью.