У меня есть 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
Как вы можете видеть, память почти заполнена, но кэшированная / буферизированная, кажется, занимает большую часть памяти.
У меня такое ощущение, что это вызвано утечкой памяти где-то, но я не уверен.
Как определить, какие процессы заполняют буферизованную / кэшированную память?
источник
Ответы:
Это не проблема, Linux должен это делать. Если бы у вас действительно были проблемы с памятью, вы бы заметили, что все работает медленно и процессы убиваются OOM killer .
Ядро Linux использует неиспользуемую оперативную память для кэширования диска. Это хорошо, это заставляет все работать быстрее. Эта память все еще доступна для любой программы, которая нуждается в ней, она будет использоваться только для кэширования, если она не нужна где-либо еще. Вот почему
free
показываетbuffers/cache
отдельно, вы должны рассматривать их как свободную память.Фактический объем памяти, доступный вашей системе, равен
free
+buffers
+cache
, в приведенном вами примере170036 + 146228 + 1207360 = 1523624
это ~ 1,5 ГБ свободной памяти.Это довольно хорошо объясняется в документации RedHat :
Для получения дополнительной информации см. Здесь:
источник