3

У меня есть NAS с веб-ОС Cutom и запущенными тоннами демонов, которые вместе образуют систему, дополняющую IP-камеры Mobotix.

В последние недели у меня возникла небольшая проблема - встроенный монитор ресурсов показывает увеличение использования памяти примерно на 10% в день. Как только он достигает 90%, он просто сидит там в пределах +/- 1%.

Я также рассчитываю то, что я называю оптимизированной памятью. То есть, удалены буферы и добавлен кеш, они остаются на ~ 20% каждый день.

Выход free состоянию на сейчас:

             total       used       free     shared    buffers     cached  
Mem:       1901072    1731036     170036          0     146228    1207360  
-/+ buffers/cache:     377448    1523624  
Swap:      1048572       1648    1046924  

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

У меня такое ощущение, что это вызвано какой-то утечкой памяти, но я не уверен.

Как определить, какие процессы заполняют буферизованную / кэшированную память?

1 ответ1

5

Это не проблема, Linux должен это делать. Если бы у вас действительно были проблемы с памятью, вы бы заметили, что все работает медленно и процессы убиваются убийцей OOM.

Ядро Linux использует неиспользуемую оперативную память для кэширования диска. Это хорошо, это заставляет все работать быстрее. Эта память по-прежнему доступна для любой программы, которая нуждается в ней, она будет использоваться для кэширования, только если она не нужна в другом месте. Вот почему free показывает buffers/cache отдельно, вы должны рассматривать их как свободную память.

Фактический объем памяти, доступный вашей системе, равен free + buffers + cache , в приведенном вами примере 170036 + 146228 + 1207360 = 1523624 , то есть ~ 1,5 ГБ свободной памяти.

Это довольно хорошо объясняется в документации RedHat:

В этом примере общий объем доступной памяти составляет 4040360 КБ. 264224 КБ используются процессами, а 3776136 КБ бесплатны для других приложений. Не смущайтесь первой строкой, которая показывает, что 28160KB свободны! Если вы посмотрите на цифры использования, вы увидите, что большая часть памяти используется для буферов и кеша. Linux всегда пытается использовать оперативную память для ускорения дисковых операций, используя доступную память для буферов (метаданные файловой системы) и кеша (страницы с фактическим содержимым файлов или блочных устройств). Это помогает системе работать быстрее, потому что информация о диске уже находится в памяти, что сохраняет операции ввода-вывода. Если место требуется программам или приложениям, таким как Oracle, Linux освободит буферы и кэш, чтобы освободить память для приложений. Если ваша система работает какое-то время, вы обычно увидите небольшое число под полем "free" в первой строке.

Для получения дополнительной информации см. Здесь:

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .