< Все темы

Почему у ВПС показывает мало памяти (RAM)

Разберем подробно, почему free -m может показывать меньше памяти, чем вы ожидаете, и как разобраться в ситуации.
Как работает команда free
Команда free считывает данные из файла /proc/meminfo и форматирует их для удобного вывода. Она не «считает» память сама, а отображает информацию от ядра Linux.
Что означают колонки в выводе free -m
Пример вывода:
				
					              total        used        free      shared  buff/cache   available
Mem:           992         396         149          23         446         392
Swap:            0           0           0

				
			
Расшифровка:
  • total — общий объём физической памяти, видимой ОС;
  • used — память, занятая процессами, включая кеш и буферы;
  • free — память, которая сейчас совсем не используется;
  • shared — разделяемая память (например, tmpfs);
  • buff/cache — кеш дисковых операций и буферы;
  • available — объём памяти, который можно выделить новым процессам без использования swap.
Почему возникает расхождение
Основные причины:
Учёт кеша и буферов. В колонке used учитывается память, используемая для кеша (buff/cache). Linux активно использует свободную память для кеширования дисковых операций — это ускоряет работу. При необходимости ядро освободит кеш для приложений.
Зарезервированная память. Часть памяти может быть зарезервирована:
  • ядром ОС для своих нужд;
  • для видео‑памяти (на физических серверах с GPU);
  • под специальные аппаратные нужды (например, IOMMU).
Как проверить реальную ситуацию
Выполните команды:
  • free -h — основной обзор в человекочитаемом формате. Смотрите на колонку available — это реальная свободная память для приложений.
  • cat /proc/meminfo — сырые данные от ядра. Сравните MemTotal с вашим тарифом.
  • grep MemTotal /proc/meminfo — покажет точный объём доступной памяти в КБ.
  • htop или top — интерактивные мониторы. Проверьте, не использует ли система swap (Swpd в top).
  • dmidecode -t memory — информация об аппаратной памяти (может не работать в VPS).
  • lsmem — детализация использования памяти.
  • vmstat -s | grep memory — статистика по памяти.
Ключевые правила интерпретации
Не паникуйте, если free мало, а buff/cache большой. Это нормально: кеш освободится при запуске новых процессов.
Главный показатель — available. Если он высокий, памяти достаточно.
Если активно используется swap (в колонке Swap есть значения), значит, памяти действительно не хватает.
В VPS/контейнерах free показывает выделенный лимит, а не память физического сервера.
Пошаговый план действий
Проверьте реальный объём памяти:
				
					grep MemTotal /proc/meminfo
				
			
Если значение сильно меньше заказанного — проблема у провайдера.
Оцените доступность:
				
					free -h
				
			
Посмотрите на available. Если он близок к нулю, оптимизируйте приложения или увеличивайте память.
Убедитесь, что не используется swap:
				
					swapon --show
				
			
Или в выводе free -h в секции Swap.
Краткий итог
free -m показывает меньше памяти, потому что:
  • учитывает кеш как «занятую» память (used);
  • может отображать лимит контейнера, а не всю память сервера;
  • часть памяти зарезервирована ядром или гипервизором.
Главное — смотрите на колонку available. Она показывает, сколько памяти реально доступно для новых процессов. Если available близок к нулю и используется swap — пора принимать меры.
Прокрутить вверх