Память не используется больше, но все еще выделена

У меня что-то странное происходит с памятью.

У меня есть серверы Ubuntu 14.04 с Zimbra 8.6 с ядром (для этого) 3.13.0-37-generic. Но я уже видел проблему с другими ядрами.

Память и своп заполнены:

$ free total used free shared buffers cached Mem: 6112624 5991208 121416 88 4752 79224 -/+ buffers/cache: 5907232 205392 Swap: 3905532 3624768 280764 

Я думал, что Зимбра ел всю мою память, но, как ни странно, это не похоже на это:

 # ps -A --sort -rss -o comm,pmem | head -n 11 COMMAND %MEM java 10.6 clamd 4.7 mysqld 3.0 java 2.0 slapd 1.2 /opt/zimbra/ama 1.1 /opt/zimbra/ama 1.0 /opt/zimbra/ama 1.0 /opt/zimbra/ama 1.0 /opt/zimbra/ama 0.9 

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

Когда я останавливаю Zimbra, есть еще 3.5Gb:

 # ps -A --sort -rss -o comm,pmem | head -n 12 COMMAND %MEM bash 0.0 bash 0.0 bash 0.0 sudo 0.0 rsyslogd 0.0 http 0.0 http 0.0 htop 0.0 init 0.0 ps 0.0 

После перезагрузки использовалось менее 200 Мб.

Сервер работал в течение 139 дней, а использование памяти постепенно увеличивалось каждый день.

Тогда мой вопрос: что могло занять всю память?

EDIT1, добавьте некоторые сведения:

 $ ls -l /dev/shm lrwxrwxrwx 1 root root 8 mai 2 12:46 /dev/shm -> /run/shm $ ipcs ------ Shared Memory Segments -------- key shmid owner perms bytes nattch status ------ Semaphore Arrays -------- key semid owner perms nsems ------ Message Queues -------- key msqid owner perms used-bytes messages $ df Filesystem 1K-blocks Used Available Use% Mounted on udev 3051744 4 3051740 1% /dev tmpfs 611260 496 610764 1% /run /dev/sda2 14287344 2765996 10772548 21% / none 4 0 4 0% /sys/fs/cgroup none 5120 0 5120 0% /run/lock none 3056288 0 3056288 0% /run/shm none 102400 0 102400 0% /run/user 

После перезагрузки (Zimbra начал):

 $ free total used free shared buffers cached Mem: 6112576 5712908 399668 832 237892 1829424 -/+ buffers/cache: 3645592 2466984 Swap: 3905532 0 3905532 

Некоторые графики ОЗУ (я перезапустил сервер около 12:30):

Использование ОЗУ

Второй график показывает результаты:

 ps aux |awk '{s+=$4} END {print s}' 

И в-третьих, результаты:

 smem -tw |grep -v Area | sed 's/ //;s/ //' 

One Solution collect form web for “Память не используется больше, но все еще выделена”

Кэш.

Хорошее резюме на http://www.linuxatemyram.com/ .

Linux заимствует неиспользуемую память для кэширования дисков. Это делает его похожим на то, что у вас мало памяти, но вы этого не делаете! Все отлично!

Чтобы очистить кеши, используйте эту команду, как root, а затем обратите внимание на то, как происходит использование памяти.

 echo 3 > /proc/sys/vm/drop_caches 
  • Использование памяти бесконечно циклического сценария оболочки
  • Увеличение объема памяти ядра
  • Как убедиться, что определенная функциональность (например, Alt + Ctrl + F1, переключение в tty) доступна в системе обмена файлами?
  • что такое пул приложений?
  • Почему процесс убит, а большая часть памяти свободна?
  • не может найти то, что использовало всю память
  • В чем разница между ioremap и файловой операцией mmap?
  • в чем разница между кешем страницы и кешем буфера?
  • Использует ли моя система всю доступную оперативную память?
  • Почему ядро ​​загружается быстрее с меньшим объемом памяти?
  • Оптимизированная ZFS в условиях низкой работоспособности ОЗУ?
  • Interesting Posts

    Как напечатать несколько строк из середины файла с помощью команд оболочки unix?

    sed – печать и отделение

    Unix OSX невидимый процесс, как я могу определить дополнительную информацию?

    Использование ramfs на встроенной системе

    Как я могу поместить битовую маску на / dev / zero, чтобы я мог получить байты, отличные от нуля?

    При создании среды зависит от текущего каталога

    что осталось в кеше даже после очистки данных кэша страниц?

    Debian jessie для решения проблемы обновления – «systemd breaks udev»

    Что происходит с фоновыми заданиями после выхода из оболочки?

    Как я могу преобразовать эту функцию bash в оболочку рыбы

    / bypass на ArchBang – безопасно удалить?

    systemd-boot пропускает меню загрузки и игнорирует настройки в /loader/loader.conf

    What \ u001B] 0; kuba @ jcubic: ~ \ u0007 escape-код сделать?

    Можно ли обмениваться файлами между двумя разными os на одном компьютере?

    Как назначить права пользователя root?

    Linux и Unix - лучшая ОС в мире.