В пятой статье из цикла “Системные данные с помощью инструментов командной строки” мы рассмотрим free и vmstat - две небольшие утилиты, которые раскрывают удивительно много информации о состоянии вашей системы Linux. free дает вам мгновенный снимок того, как используются оперативная память и подкачка. vmstat ( статистический отчет о виртуальной памяти) предоставляет отчеты в реальном времени о памяти, процессоре и активности ввода-вывода (I/O).
К концу этой статьи буферы и кэш станут для вас “пространством для маневра”, вы сможете с уверенностью читать загадочную колонку доступно (available) и выявлять утечки памяти или перегрузку ввода-вывода.
Краткий обзор free
Основы использования
|
|
free анализирует /proc/meminfo и выводит итоги
о физической памяти, подкачке (swap), а также буферах ядра и кэше. Используйте -h для человекочитаемых единиц, -s 1
для обновления каждую секунду и -c N для остановки после N выборок. Это удобно для отслеживания потребления памяти при
параллельной работе. Например, free -s 60 -c 1440
дает 24-часовую запись в формате CSV без установки дополнительных
демонов мониторинга.
Свободная память относится к ОЗУ, которая полностью не занята. Она не используется никаким процессом или для кэширования. В серверных системах я склонен рассматривать это как бесполезную память, поскольку неиспользуемая память не влияет на производительность. В идеале, после того как система проработала некоторое время, это число должно стремиться к минимально возможному.
С другой стороны, доступная память представляет собой оценку того, сколько памяти могут использовать новые или уже запущенные процессы, не прибегая к подкачке. Она включает свободную память, а также части кэша и буферов, которые система может быстро вернуть при необходимости.
По сути, различие в Linux заключается в следующем: свободная память простаивает и не используется, в то время как доступная память включает в себя как действительно свободное пространство, так и память, которую можно легко освободить, чтобы система оставалась отзывчивой без подкачки. Не проблема иметь мало свободной памяти, обычно стоит беспокоиться о доступной памяти.
Выявление проблем с free
- Быстрое сокращение доступной памяти в сочетании с ростом используемого подкачки указывает на реальную нехватку памяти.
- Большие скачки загрузки/выгрузки указывают на перегруженность или неконтролируемый расход памяти.
vmstat – отчет о статистике виртуальной памяти
vmstat (статистика виртуальной памяти) отображает процессы, память, подкачку, блочный ввод-вывод, прерывания, переключения контекста и использование ЦП в одной строке. Что бы проследить тенденции, запустите vmstat с интервалом ( вывод, показанный ниже, был разделен на три части для лучшей читаемости):
|
|
Разберем вывод
Из справочника vmstat(8):
|
|
Практическая диагностика
Раздел Ключевые поля Что смотреть | Раздел Ключевые поля Что смотреть | Раздел Ключевые поля Что смотреть |
---|---|---|
Процессы | r (run-queue), b (blocked) | r > ядер процессора = конкуренция |
Память | swpd, free, buff, cache | Подъем swpd с падением free = давление памяти |
Подкачка | si, so | Ненулевое значение so означает, что ядро выгружается (swapping) |
Ввод/вывод | bi, bo | Высокий bo + высокий wa указывает на интенсивную запись на блочное устройство |
Система | in, cs | Внезапные всплески могут указывать на interrupt storm |
Процессор | us, sy, id, wa, st | Высокая wa (ожидание ввода-вывода) = узкое место в системе хранения |
Обнаружение утечки памяти
Запустите vmstat 500 в одном терминале, пока приложение вызывающее подозрения работает в другом. Если free продолжает падать и si/so последовательно растет, физическая оперативная память исчерпывается. Ядро начинает выгружаться в систему подкачки (swapping), что является классическим поведением утечки.
Нахождение насыщения ввода-вывода
Когда wa (ожидание ввода-вывода) и bo (запись на блочное устройство) растут, а r остается скромным, ЦП простаивает и застрял в ожидании диска. Рассмотрите возможность добавления более быстрого хранилища или настройки параметров планировщика ввода-вывода.
Обнаружение чрезмерной загрузки процессора
Устойчивый r, который вдвое больше числа логических ядер с низким wa и большим количеством свободного пространства, означает, что узким местом является ЦП, а не память или ввод-вывод. Используйте top или htop, чтобы найти самые загруженные процессы, или масштабируйте рабочие нагрузки соответствующим образом.
Заключение
Освоение free и vmstat дает вам возможность взглянуть на использование памяти, активность подкачки, задержку ввода-вывода и загрузку ЦП. Для повседневной отладки: начните с free, чтобы проверить, действительно ли вашей системе не хватает памяти, а затем используйте vmstat, чтобы выявить причину, будь то утечки памяти, узкие места на диске или перегрузка ЦП.
Оставайтесь с нами для следующей части нашей серии “Анализ системы с помощью инструментов командной строки” и удачного устранения неполадок Fedora!