Устройство Linux / Объяснение

/proc/meminfo: доступная память, кеш и swap

Прочитайте MemFree и MemAvailable без ложного вывода о нехватке RAM. Сопоставьте кеш и swap, сохранив единицы и область действия наблюдения.

Средний8 минОбщие принципы LinuxLinux · понятия и интерфейсыBash · pipeline semantics

Свободной памяти мало — обязательно ли это плохо

После работы с файлами свободной памяти стало меньше, хотя приложения продолжают отвечать. Прежде чем вмешиваться в кеш, посмотрите несколько взаимосвязанных показателей. Единственная маленькая цифра MemFree не описывает весь запас, доступный новым приложениям.

Задача этой страницы — составить короткий отчёт о памяти и сформулировать проверяемую гипотезу. Мы не очищаем кеш и не меняем swap: такие действия исказили бы исходное наблюдение ещё до того, как появилась причина для изменения.

Свободное и доступное — разные показатели

MemTotal описывает используемую системой RAM, MemFree — свободную память, а MemAvailable оценивает запас для новых приложений без подкачки. Cached связан с файловым кешем. Поля meminfo имеют имена и единицы, а доступный набор зависит от ядра.

SwapTotal и SwapFree относятся к подкачке. Разность этих значений не является скоростью обмена со swap. Наличие занятой подкачки само по себе не доказывает, что прямо сейчас приложение интенсивно ждёт диск.

Снимите небольшой набор полей

Фильтр выводит строки по именам. Не переносите значения в таблицу без единиц: отметка kB в procfs традиционно соответствует 1024 байтам.

Локальная Linux-система
printf "Память видимой Linux-системы\n"
grep -E "^(MemTotal|MemFree|MemAvailable|Cached|SwapTotal|SwapFree):" /proc/meminfo

Свяжите отчёт с симптомом

В учебной ситуации MemFree равен 180 MiB, а MemAvailable — 2600 MiB. Это разные величины, а не две конкурирующие оценки одного свободного списка. Прежде чем объявлять нехватку памяти, проверьте динамику доступного запаса и задержки нужной нагрузки.

Если читаете meminfo из контейнера, установите, что именно показывает это окружение. Общие цифры машины нельзя автоматически объявлять разрешённым бюджетом контейнера: проверьте ограничения его cgroup. Для инцидента полезны время, симптом, область наблюдения и несколько последовательных снимков.

Проверьте своё рассуждение

Задача: SwapFree ниже SwapTotal, но между снимками не меняется, приложение быстро отвечает. Достаточно ли этого для диагноза активного thrashing?

Нет. Занятый объём подкачки не показывает частоту обмена. Нужны показатели активности и ожиданий за интервал; для следующего шага можно исследовать давление памяти и задержки приложения.

Не складывайте все строки подряд

Поля meminfo не образуют простой набор независимых частей: некоторые показатели пересекаются по смыслу. Не пытайтесь сверить MemTotal суммой всех строк. Набор полей и виртуализация в контейнере требуют проверки; эта памятка не задаёт универсального порога аварии для каждой нагрузки.

Технические источники

Использованы для проверки поведения. Объяснения и учебные сценарии созданы для проекта.

  • Linux man-pages — proc_meminfo(5)

Проверка текста: 2026-09-11. Нативное исполнение на всей матрице дистрибутивов ещё не подтверждено.

Нужны собственная Linux-система, смонтированный procfs и Bash. Доступность полей зависит от ядра, его конфигурации, прав и пространств имён. Примеры только читают диагностические интерфейсы; браузерный симулятор их не реализует.

От материала к практике

Выберите следующую тему в каталоге Linux или проверьте знакомые команды в учебном терминале.

Поиск по Linux

Поиск локальный. ↑ ↓ — перейти к результату, Enter — открыть.

Навигация