Если хорошо разбираетесь в английском и нужно много подробностей - http://www.linuxatemyram.com/

Что вообще происходит

Многим кажется что Linux жёстко “течёт” памятью в течении времени своей работы. Это не так, дело в неправильной визуализации. Убедиться в этом можно на этом примере (картинка кликабельна):

linux

Как видно, used память не изменяется, а buffers и cached получают некоторый прирост. Тем не менее остаётся достаточно Free памяти и если она начнёт расходоваться реальными приложениями - Linux начнёт освобождать Cached-память.

Зачем вообще нужна Cached-память? Чтобы не обращаться лишний раз к медленному дисковому I/O, например.

Реально разбираться в проблеме стоит если растёт именно used-память.

Как читать вывод Free

Для того чтобы понимать что происходит необходимо уметь читать вывод команды free:

# free
             total       used       free     shared    buffers     cached
Mem:     165212416    3337076  161875340        480     159460    1720380
-/+ buffers/cache:    1457236  163755180
Swap:      4194300          0    4194300
  • Mem-total - общий объём имеющейся оперативной памяти без учёта swap
  • Mem cached - как правило закэшированное дисковое I/O. Очищать кэш - затратное дело (одно только принятие решения о каждой области памяти чего стоит) и просто так этим заниматься, когда свободной памяти достаточно - странное решение.
  • Mem used - память использованная приложениями, буферами, кэшами
  • Mem free - вообще никак не используемая в текущий момент память
  • -/+ buffers/cache used - память использованная приложениями
  • -/+ buffers/cache free - память, которая может быть использована приложениями при необходимости
  • Swap-total - общий объём swap

Когда нужно беспокоиться, а когда нет

  • -/+ (buffers/cache )/Mem-total < 4/5 - можно спать спокойно
  • Swap used / Swap total > 1/2 - вообще, ситуация так себе, система должна начать сильно тормозить
  • Swap used > 2Gb (при объёмах памяти до 16Gb) и эта цифра РАСТЁТ НА ГЛАЗАХ - тоже ситуация не очень.

Чистить swap дело тоже довольно затратное, так что если не растёт, -/+ buffers cache free довольно велика - то и фиг с ним.