Что пожирает почти всю память и обмен на этой машине с Linux? (не связанные с буферами / кэшированные)

1

У меня есть машина с Linux, которая сообщает, что почти вся ее память и своп используются, но я не могу определить какие-либо процессы, использующие значительный объем памяти на машине. У нас работает ядро ​​Linux 2.6.32-431.40.2.el6.x86_64, созданное без изменений из RHEL srpm. Это физическая, а не виртуальная система; Dell C6100 с двумя 6-ядерными процессорами Intel X5650. Система работала в течение 12 дней, и здесь используется память и подкачка.

Mem:  49416180k total, 48890424k used,   525756k free,    18300k buffers
Swap: 12582908k total, 12582908k used,        0k free,   727252k cached

Я выполнил следующие команды и получил следующие выходные данные, ни один из которых, кажется, не указывает, что какой-либо процесс на машине потребляет значительный объем памяти:

ps -eo pid,args,pmem --sort pmem 

Вот полный вывод этой psкоманды на Pastebin.

Я побежал slabtop -oи cat /proc/meminfoи вот полный вывод этих команд на Pastebin , а также.

Я довольно озадачен на этом этапе. Если у кого-нибудь есть идеи относительно того, что может происходить, или он хотел бы увидеть результаты дальнейших команд, я был бы рад это услышать.

Juffo-WUP
источник
Должен ли столбец памяти содержать все нули ps?
Даниэль Б
Это тот же результат, который вы получите, если запустить 'top' и отсортировать по памяти, указывая на то, что ни один процесс не занимает более 0,05% (или какой бы ни был порог округления до одной цифры) системной памяти. Глядя на столбцы VIRT и RES подтверждают это наблюдение.
Juffo-Wup

Ответы:

1

Причиной этой проблемы оказалась ошибка (LU-5726) в одном из модулей ядра Luster, работающих в системе. Это приводило к утечке памяти ядром каждый раз, когда файл удалялся из файловой системы Luster, которую размещал компьютер. Обновление до Luster 2.5.4 (в котором исправление было объединено) решило проблему.

Цитата из сообщения об ошибке (которая была не моей, а моей):

Описание:

При удалении большого количества файлов использование памяти на сервере MDS значительно возрастает. Попытки восстановить память путем удаления кэшей приводят только к освобождению части памяти. Использование буфера продолжает расти до тех пор, пока сервер MDS не начнет OOMing.

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

В ответ на патч сообщалось, что:

Мы только что применили исправление сегодня к нашей производственной файловой системе (Luster 2.4.3) и сейчас выполняем некоторые тяжелые чистки. Я собрал некоторую информацию об использовании памяти. До патча казалось, что в росте памяти преобладает «Неактивно (файл)» в / proc / meminfo. Я удалил кеш на сервере MDS (echo 3> / proc / sys / vm / drop_caches) и собирал неактивное (файловое) использование каждую минуту:

неактивно (файл): 1146656 кБ ..... Число сначала быстро увеличивалось, но затем немного выравнивалось. Просто чтобы перепроверить, я снова сбросил кеш:

Неактивно (файл): 401152 КБ ....

У нас такое же поведение, и что более важно, мы, кажется, возвращаем память из Inactive (файл). Я также проверил MemFree и Buffers до / после удаления кэшей:

(До) MemTotal: 66053640 кБ MemFree: 51291028 кБ Буферы: 10685976 кБ

(После) MemTotal: 66053640 кБ MemFree: 63239432 кБ Буферы: 198148 кБ

Использование буфера упало ниже 200 МБ. Учитывая скорость, с которой мы очищаемся, этого никогда бы не произошло до применения патча.

Я уверен, что этот патч решил проблему на 90%. Если мы сможем продолжить чистку с такой скоростью в течение пары дней без увеличения использования памяти, то, я думаю, я буду уверен на 100%.

Дополнительно

Сегодня утром я снова проверил использование памяти MDS:

MemTotal: 66053640 кБ MemFree: 5568288 кБ Буферы:
55504980 кБ Активные: 22374284 кБ Неактивные: 33260116 кБ

После того как я уронил кеши:

MemTotal: 66053640 кБ MemFree: 63146420 кБ Буферы:
59788 кБ Активные: 57960 кБ Неактивные: 93452 кБ

Похоже, патч успешен.

https://jira.hpdd.intel.com/browse/LU-5726

Juffo-WUP
источник
0

Из того, что я могу видеть здесь, является то, что это кэширование диска в Linux. Ваша память просто в порядке, когда процесс нуждается в нем, он может просто использовать его.

Более подробная информация об этом здесь: http://www.linuxatemyram.com/

Единственное, в чем я не слишком уверен, это использование SWAP. Я не видел такого высокого использования ни на одной из моих машин.

erik@xenon ~] $ free -m total used free shared buffers cached Mem: 7883 7756 126 0 201 5702 -/+ buffers/cache: 1852 6030 Swap: 8068 11 8057

erikgaal
источник
Я знаком с этим сайтом и механизмом кэширования Linux, но здесь проблема не в этом. Строки Mem: и Swap: в сообщении указывают, что только приблизительно 700 МБ из 48 ГБ ОЗУ на машине используются в качестве кэша.
Джуффо-Вуп
После редактирования выходные данные с вашего компьютера показывают, что почти 6 ГБ из вашей общей 8 ГБ ОЗУ используются в качестве буферов / кэша, что означает, что эти 6 ГБ доступны для использования при необходимости. На машине, о которой я спрашиваю, только ~ 700 МБ из 48 ГБ используются в качестве буферов / кеша, и все пространство подкачки ~ 12 ГБ заполнено. Это ненормальная ситуация, если учесть, что ничто из работающего на машине не использует много ОЗУ.
Джуффо-Вуп