Просмотр сведеней о оперативной памяти.
cat /proc/meminfo
получим достаточно вместительную табличку, я опишу некоторые важные значение :
MemTotal: – эта практически вся доступная в системе память а исключением той которая зарезервирована самой системой.
MemFree: – нельзя напрямую сказать что это весь объем свободной памяти доступный новым процессам в системе, обычно тут сущие десятки мегабайт. Linux достаточно хитро использует свободную память – она может быть занята под кэш или буфер и освобождена по первой необходимости. Мы это еще рассмотрим.
Buffers: – тут хранятся данные которые ожидают записи на диск.
Cached: – системный кэш Linux – это статья расходов памяти может расти как на дрожжах но при первой же необходимости в свободной памяти она будет очищена по необходимости.
Далее достаточно важные данные на которых мы остановимся немного поподробнее :
Committed_AS : – это значение указывает на количество ОЗУ которые необходимы системе чтобы с вероятностью в 99,9% вы не поймали out of memory. Т.е это количество памяти которое могут занять процессы запущенные на текущий момент на вашем сервере в максимуме. Есть механизм при котором можно ограничить использование всего числа указанного здесь ( если к примеру оно выходит за границы MemTotal ) это можно сделать с помощью CommitLimit и некоторых изменений в sysctl.( рассмотрим ниже .) Также имейте ввиду что если эта цифра намного больше чем MemTotal – то это говорит о том что необходимо увеличивать память на компьютере и (или) искать причину такого высокого потребления в процессах запущенных на сервере.
CommitLimit: – Это значение определяет сколько система может выделить памяти. Строгость это значения можно посмотреть так : sysctl -a | grep vm.overcommit_memory vm.overcommit_memory = 0
Это значение говорит о том что выделение памяти практически не как не ограничено.
vm.overcommit_memory = 2
С этим значением этой переменной цифру указанную в значении CommitLimit перейти будет невозможно. Теперь рассмотрим как эту цифру можно сформировать : формула расчета этого значение выглядит следующим образом vm.overcommitratio * MemTotal + swap (формула получается такой – половина MemTotal + объем swap ) sysctl -a | grep vm.overcommitratio
m.overcommit_ratio = 50
Это значение в процентах – его можно менять. Для контроля над тем что именно у вас кушает память я бы советовал бы программу htop. Она есть в репозитариях практически любого Linux. После его запуска нажимайте F6 и сортируем по MEM% – наглядно видно какой процесс сколько кушает в процентном отношении. В top этого списка попадают самые прожорливые.