Во время стресс-тестирования LVM на одном из наших серверов Debian я столкнулся с этой проблемой, когда память переполнялась настолько, что на сервере не хватало памяти, но ни один процесс не требовал памяти. Видеть http://i.imgur.com/cLn5ZHS.png, и увидеть https://serverfault.com/a/449102/125894 для объяснения цветов, используемых в htop.
Почему это происходит?
И есть ли способ узнать, какой процесс является используя память?
Htop настроен так, чтобы не скрывать никакие процессы, так что же это за htop?
В этом конкретном случае я могу с уверенностью сказать, что это прямо или косвенно вызвано lvmcreate, lvmremove или dmsetup, поскольку я проводил стресс-тестирование. Обратите внимание, что этот вопрос не о решении проблемы LVM, а о том, почему память не востребована ни одним процессом. Остановка всех команд LVM приводит к уменьшению объема памяти до <600 МБ.
Выход free -m
:
total used free shared buffers cached
Mem: 32153 31958 194 0 52 3830
-/+ buffers/cache: 28075 4077
Swap: 975 0 975
Вывод вершины на pastebin из-за ее длины: http://pastebin.com/WchrpF7W
Поскольку кажется, что вы запускаете тесты, связанные с вводом-выводом (вы не объяснили подробно, что вы сделали с томами LVM), есть ли вероятность, что наблюдаемое вами поведение связано с естественным кешем страниц ОС?
Я думаю о стандартном поведении Linux при использовании (иногда почти всей) доступной памяти (то есть памяти, не зарезервированной приложениями) для кэширования областей диска, к которым недавно осуществлялся доступ, с целью ускорения операций ввода-вывода.
Конечно, активные приложения имеют приоритет над этим кешем, поэтому, если процессу требуется больше оперативной памяти, кеш динамически сжимается.
В Интернете есть много документации о кешировании страниц Linux, Вот является одним.
У меня та же проблема, но я проверил параметры ядра, расположенные в / proc / sys / vm /: overcommit_memory = По умолчанию 0 overcommit_ratio = По умолчанию 50 max_map_count = По умолчанию 65530
И в моем случае параметр, корень моих проблем nr_hugepages, у меня есть пользовательское значение, но я изменил его на значение по умолчанию
nr_hugepages = 0
Для получения дополнительной информации см. https://access.redhat.com/documentation/en-us/red_hat_enterprise_linux/6/html/performance_tuning_guide/s-memory-captun
Извините за мой английский :(