Введение / Зачем это нужно
Понимание того, как ваша система Linux использует оперативную память (RAM), — критически важный навык для диагностики тормозков, планирования апгрейда железа или оптимизации сервера. В отличие от Windows, Linux активно использует свободную RAM для кэширования диска, что может вводить в заблуждение. Этот гайд покажет, как правильно интерпретировать данные о памяти с помощью стандартных утилит, чтобы отличать нормальную работу от реальной нехватки RAM.
После выполнения вы будете уверенно читать вывод free, top и htop, понимать, что значит «свободная» память и какое место занимает кэш, а также сможете быстро найти «прожорливые» процессы.
Требования / Подготовка
- Доступ к терминалу (Ctrl+Alt+T или SSH-подключение).
- Базовая familiarность с командной строкой.
- Права на выполнение утилит (все команды доступны обычному пользователю, кроме установки пакетов, которая требует
sudo). - Для использования
htopможет потребоваться установка (инструкция есть в шаге 3).
Пошаговая инструкция
Шаг 1: Используйте команду free для общей сводки
Команда free — самый быстрый способ получить общую картину использования RAM и свопа (swap).
free -h
Пример вывода:
total used free shared buff/cache available
Mem: 7.7G 1.2G 4.1G 156M 2.4G 6.0G
Swap: 2.0G 0B 2.0G
Как читать:
- total — весь объём установленной RAM.
- used — память, занятая процессами (но не вся, так как в Linux
used=total-free-buff/cache). - free — полностью неиспользуемая RAM (это число в Linux обычно мало, и это нормально).
- buff/cache — память, занятая ядром под кэш диска и буферы. Она может быть автоматически освобождена для программ.
- available — самый важный показатель. Оценка памяти, доступной для запуска новых приложений без использования swap. Ориентируйтесь на него.
💡 Совет: Если
availableстремится к нулю, а система активно использует swap — это признак нехватки физической RAM.
Шаг 2: Мониторьте процессы в реальном времени с top
top показывает динамический список процессов, сортированный по потреблению CPU. Но её можно настроить для анализа памяти.
top
Внутри top:
- Нажмите
F6(или>для сортировки по следующему полю). - Выберите поле
%MEM(процент от общей RAM) илиRES(физическая память в KiB) и нажмите Enter. - Теперь процессы отсортированы по потреблению памяти. Самый «прожорливый» будет сверху.
- Для выхода нажмите
q.
Ключевые колонки в top:
- VIRT — виртуальная память (включает код, данные, разделяемые библиотеки, отображённые файлы и своп).
- RES — резидентная память (физическая RAM, занятая процессом, без свопа).
- %MEM — процент
RESот общей RAM.
Шаг 3: Установите и используйте htop для удобного интерфейса
htop — это улучшенный, интерактивный и цветной аналог top. Он более наглядный.
# Установка (если нет)
# Для Debian/Ubuntu:
sudo apt update && sudo apt install htop
# Для CentOS/RHEL/Fedora:
sudo dnf install htop # или sudo yum install htop
# Запуск
htop
В htop:
- В верхней части экрана — цветные полосы с метками: Mem (RAM) и Swp (Swap). Зелёная часть — used, синяя — buffers/cache.
- Сортировка по умолчанию — по CPU. Нажмите
F6, выберите%MEMилиRESдля сортировки по памяти. F5— переключение между дерево-видом (показывает дочерние процессы) и списком.F10— выход.
htop также показывает удобные графики использования CPU и RAM в реальном времени.
Шаг 4: Используйте vmstat для статистики
vmstat (virtual memory statistics) даёт сводку по памяти, процессам, свопу и вводу-выводу.
vmstat -s
Пример вывода:
8192000 total memory
4194304 used memory
1064960 active memory
2109440 inactive memory
3997696 free memory
524288 buffer memory
2109440 swap cache
0 total swap
0 used swap
0 free swap
123456 non-nice user cpu ticks
...
Этот формат компактно показывает абсолютные значения (в килобайтах). Полезно для быстрой оценки в скриптах.
Шаг 5: Проверьте детальную информацию в /proc/meminfo
Для максимально детальной информации (которая используется самими утилитами) смотрите виртуальный файл ядра:
cat /proc/meminfo
Ключевые поля:
MemTotal— всего RAM.MemFree— полностью свободная RAM.MemAvailable— оценка доступной RAM (аналогичноfree).Buffers— память под блоковые буферы ядра.Cached— память под кэш страниц (файловый кэш).SwapTotal/SwapFree— своп.
Этот файл — источник истины для всех вышеперечисленных команд.
Проверка результата
Вы успешно проверили использование RAM, если:
- Команда
free -hвывела таблицу с понятными значениями, и вы можете объяснить разницу междуfreeиavailable. - В
htopилиtopвы отсортировали процессы по%MEMилиRESи видите список с потреблением памяти. - Вы понимаете, что высокое значение
buff/cache— это хорошо, а низкийavailable— плохо.
Критерий успеха: Вы можете ответить на вопрос «Сколько памяти реально доступно для новых приложений?» — посмотрев на поле available в free или на индикатор в htop.
Возможные проблемы
htop: command not found— утилита не установлена. Установите её через менеджер пакетов вашего дистрибутива (см. Шаг 3).freeпоказывает очень маленькое значениеavailable, но система работает fast — возможно, вы только что запустили тяжёлое приложение, и кэш ещё не успел освободиться. Подождите несколько секунд и проверьте снова. Еслиavailableстабильно низкий, а своп активен — думайте об апгрейде RAM.- Нет прав на установку пакетов — для установки
htopнужны праваsudo. Обратитесь к администратору или используйте толькоfree,top,vmstat, которые есть почти всегда. /proc/meminfoнедоступен — это может произойти только в очень урезанных контейнерных или embedded-средах. В обычной системе этот файл всегда есть. В контейнере используйтеfreeилиcat /sys/fs/cgroup/memory.current(зависит от cgroup версии).