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

Это проблема утечки памяти?

Буферы + кэширование + бесплатно = 3,588,092 (3,4 ГБ). Но я все еще могу использовать память 10 ГБ (без использования свопа). Это проблема утечки памяти? И после этого можно вернуть утекшую память?

  1. Свободная память (определенная человеком) составляет 3588 092 (скажем, 3,4 ГБ), а общая память составляет 32 ГБ
  2. На этом этапе мы не обнаружили ни одного процесса, который потребляет много памяти с помощью команды 'top', поэтому мы подумали, что 3,4 ГБ бесплатно - это неправильно, мы на 100% уверены, что свободной памяти не менее 20 ГБ.
  3. Мы монтируем нашу память как ramdisk на локальный, и записываем в него данные, как видите, это 10G, и это успешно
  4. После размонтирования количество свободной памяти увеличилось до 11 959 064, как это могло быть?

Спасибо

[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

Прежде всего, рекомендация прочитать http://www.linuxatemyram.com/ поскольку это всегда помогает понять управление памятью Linux.

Вероятно, вы должны сохранить представление о том, что интересными понятиями являются «доступная» и «недоступная» память. Доступна свободная память. Память, используемая буферами / кешем, также может быть доступна, но ядро ​​не будет освобождать эту память, если для этого нет причин. Когда вы создали RAM-диск на 10 ГБ, он, вероятно, освободил некоторые из этих буферов или объектов кэша, поэтому, когда RAM-диск был уничтожен, вы получили больше свободной памяти (хотя она всегда была «доступной»). Надеюсь, это поможет понять управление памятью (а если серьезно, прочтите ссылку выше: D)

В качестве последнего примечания рядом с top вы также можете использовать slabtop чтобы получить информацию об использовании внутренней памяти.