Linux

Как проверить использование swap в Linux: подробное руководство

Этот гайд научит вас проверять текущее использование swap-пространства в Linux, используя стандартные утилиты командной строки, чтобы оценить, достаточно ли оперативной памяти и как работает механизм подкачки.

Обновлено 14 февраля 2026 г.
5-10 мин
Низкая
FixPedia Team
Применимо к:Ubuntu 20.04+Debian 10+CentOS 7+Fedora 30+Все дистрибутивы на базе systemd

Введение

Swap-память (подкачка) — критически важный механизм виртуальной памяти в Linux. Когда оперативная память (RAM) заполняется, ядро автоматически перемещает неактивные страницы памяти в swap-область на диске, что позволяет избежать падения процессов из-за нехватки памяти. Однако чрезмерное использование swap может привести к значительному замедлению системы, так как диски медленнее RAM.

Мониторинг swap-пространства помогает:

  • Диагностировать проблемы с нехваткой памяти.
  • Оценить, достаточно ли установленной оперативной памяти.
  • Принять решение о настройке или увеличении swap.
  • Оптимизировать производительность системы, регулируя параметры ядра, такие как vm.swappiness.

В этом гайде вы освоите несколько стандартных способов проверки использования swap в Linux, от простого просмотра общей информации до детального мониторинга в реальном времени.

Требования

Перед началом убедитесь, что:

  • У вас есть доступ к терминалу Linux (локально или через SSH).
  • Вы знакомы с основами работы командной строки.
  • Для выполнения всех команд не требуются права администратора (sudo), за исключением случаев проверки swap на защищённых устройствах (но основные утилиты, такие как free и cat /proc/swaps, доступны всем пользователям).
  • Система имеет настроенный swap (раздел или файл). Если swap отсутствует, команды покажут нулевые значения.

Шаг 1: Используйте команду free

Команда free — самый быстрый способ получить общую сводку по оперативной и swap-памяти.

Выполните в терминале:

free -h

Ключ -h (human-readable) преобразует размеры в килобайты, мегабайты или гигабайты для удобочитаемости.

Пример вывода на системе с 8 ГБ RAM и 2 ГБ swap:

              total        used        free      shared  buff/cache   available
Mem:           7.7G        1.2G        5.1G        156M        1.4G        6.1G
Swap:          2.0G          0B        2.0G

Ключевые столбцы для swap:

  • total: общий размер swap-пространства.
  • used: текущее использованное пространство (в данном примере 0B — swap не используется).
  • free: свободное swap-пространство.

Если в used ненулевое значение, система активно использует swap. Столбец available в строке Mem показывает примерный объём памяти, доступной для новых процессов без использования swap.

Шаг 2: Проверьте детали в /proc/swaps

Файл /proc/swaps предоставляет подробную информацию о каждом активном swap-устройстве (разделе или файле).

Выполните:

cat /proc/swaps

Пример вывода:

Filename                Type        Size    Used    Priority
/dev/sda2                               partition   2097148 0   -2
/swapfile                              file     1048572 0   -1

Расшифровка:

  • Filename: путь к swap-разделу (например, /dev/sda2) или swap-файлу (например, /swapfile).
  • Type: тип устройства — partition (раздел диска) или file (файл).
  • Size: общий размер в килобайтах (здесь ~2 ГБ и ~1 ГБ соответственно).
  • Used: использованный размер в килобайтах.
  • Priority: приоритет swap (отрицательные значения; чем выше число, тем выше приоритет). Система использует swap с более высоким приоритетом в первую очередь.

Этот файл обновляется ядром в реальном времени и не требует дополнительных прав для чтения.

Шаг 3: Мониторинг в реальном времени с top

Утилита top отображает динамическую информацию о процессах и системных ресурсах. По умолчанию она не показывает swap в основном интерфейсе, но это можно настроить.

  1. Запустите top:
    top
    
  2. Нажмите клавишу f (или F в некоторых версиях), чтобы открыть меню управления полями.
  3. В списке полей найдите строку SWAP (обычно внизу). Нажмите соответствующую букву (часто d или s), чтобы добавить столбец swap в основное окно. Для сортировки по swap можно нажать s при выделении столбца.
  4. Нажмите Enter, чтобы вернуться к основному экрану.

Теперь в выводе top появится столбец SWAP, показывающий использование swap каждым процессом (если процесс его использует). В верхней части экрана также отображается общая строка памяти, включая swap (столбцы KiB Swap или аналогичные, в зависимости от версии top).

top обновляется каждые 3 секунды по умолчанию. Для изменения интервала нажмите d и введите нужное значение.

Шаг 4: Используйте vmstat для статистики swap-активности

Команда vmstat (virtual memory statistics) выводит статистику по виртуальной памяти, включая активность swap, что полезно для анализа трендов.

Выполните:

vmstat 1

Параметр 1 указывает обновлять вывод каждую секунду. Для остановки нажмите Ctrl+C.

Пример вывода:

procs -----------memory---------- ---swap-- -----io------ -system-- -----cpu------
 r  b   swpd   free   buff  cache   si   so    bi    bo   in   cs us sy id wa st
 0  0      0 5242880  12345 678901    0    0     0     0  123  456  2  1 97  0  0

Ключевые столбцы, связанные с swap:

  • swpd: использованный swap в килобайтах (здесь 0 — swap не используется).
  • si (swap in): количество памяти, перемещённой из swap в RAM за секунду (килобайты). Ненулевые значения указывают, что система читает данные из swap, что замедляет работу.
  • so (swap out): количество памяти, перемещённой из RAM в swap за секунду (килобайты). Высокие значения означают активную запись в swap.

Постоянные ненулевые значения в si и so сигнализируют о том, что система активно использует swap, что может быть признаком нехватки RAM.

Проверка результата

После выполнения шагов вы должны получить чёткую картину использования swap:

  • Команда free -h показала общие значения: если used в строке Swap ненулевой, swap активен.
  • /proc/swaps выявила все swap-устройства и их состояние. Если файл пуст, swap не настроен.
  • top позволила наблюдать за swap в реальном времени и определить процессы, которые его используют (если есть).
  • vmstat дала статистику по операциям swap in/out, помогая оценить нагрузку.

Если swap не используется (все показатели нулевые), а вы ожидаете его наличие, проверьте, активирован ли swap через swapon --show или в /etc/fstab. Если swap отсутствует, создайте его, следуя гайду по настройке swap-файла.

Возможные проблемы

Swap не отображается или показывает нулевые значения

Если free и /proc/swaps показывают нулевой swap, скорее всего, swap не настроен. Решение:

  1. Проверьте наличие swap-раздела с помощью lsblk или fdisk -l.
  2. Если раздела нет, создайте swap-файл: sudo fallocate -l 2G /swapfile, затем chmod 600 /swapfile, mkswap /swapfile, swapon /swapfile.
  3. Добавьте запись в /etc/fstab для постоянного монтирования: /swapfile none swap sw 0 0.

Ошибка "Permission denied" при чтении /proc/swaps

Обычно /proc/swaps доступен для чтения всем. Если возникает ошибка, возможно, система имеет укреплённые настройки безопасности (например, SELinux в режиме enforcing). Попробуйте выполнить с sudo, но для диагностики это редко требуется. Проверьте права: ls -l /proc/swaps (должен быть -r--r--r--).

Команда top не показывает столбец swap

Убедитесь, что вы правильно добавили поле SWAP в настройках top. В некоторых версиях (например, htop) swap отображается по умолчанию. Также помните, что столбец swap может быть пустым, если ни один процесс не использует swap напрямую (swap управляется ядром глобально, а не на уровне процессов).

Высокий swap usage и низкая производительность

Если vmstat показывает постоянные ненулевые si и so, а система тормозит:

  1. Увеличьте оперативную память, если возможно.
  2. Оптимизируйте приложения: найдите процессы, потребляющие много памяти, через top (сортировка по %MEM).
  3. Настройте параметр vm.swappiness (от 0 до 100), контролирующий агрессивность использования swap. Проверьте текущее значение: cat /proc/sys/vm/swappiness. Рекомендуемые значения: 10-20 для серверов, 60 для десктопов. Измените временно: sudo sysctl vm.swappiness=10, или постоянное — добавьте vm.swappiness=10 в /etc/sysctl.conf.
  4. Рассмотрите добавление дополнительного swap-файла на быстром SSD, если swap необходим.

Часто задаваемые вопросы

Что такое swap-память и зачем она нужна в Linux?
Какой уровень использования swap считается нормальным?
Можно ли отключить swap, если у меня много RAM?
Как увеличить swap-пространство, если его не хватает?

Полезное

Используйте команду free
Проверьте детали в /proc/swaps
Мониторьте использование в реальном времени с top
Используйте vmstat для статистики swap-активности