vmstat
Классическая статистика виртуальной памяти: подкачка, свопинг, прерывания, переключения контекста.
# Обновление каждую секунду (первая строка — средние с загрузки, игнорировать)
vmstat 1
# С таймштампами
vmstat -t 1
# Статистика по slab/disk
vmstat -m # slab info
vmstat -d # disk stats
# Разовый снимок активной/неактивной памяти
vmstat -a -S M
Ключевые колонки: si/so (swap in/out — если > 0, памяти не хватает), r (runnable, аналог runqlen), b (blocked on I/O), free, cs (context switches).
slabtop
Статистика slab-аллокатора ядра. Показывает, куда уходит ядерная память.
# Интерактивный режим, сортировка по размеру
slabtop -s c
# Разовый вывод (для скриптов)
slabtop -o | head -20
# Альтернатива: /proc/slabinfo напрямую
cat /proc/slabinfo | sort -k3 -rn | head -10
Типичный use-case: dentry или inode_cache разрослись — значит, огромное количество файлов/каталогов сканируется.
free
Сводка использования памяти. Простейший инструмент, но важно правильно читать.
# В человекочитаемом формате
free -h
# С обновлением каждые 2 секунды
free -h -s 2
# Широкий формат (buffers и cache отдельно)
free -hw
Главное: available (не free) — реальный объём памяти, доступный приложениям. buff/cache — это не «занятая» память, ядро отдаст её при необходимости.
numastat
Статистика распределения памяти по NUMA-узлам. Критично для многосокетных серверов.
# Общая статистика по всем узлам
numastat
# По конкретному процессу (с разбивкой по категориям)
numastat -p $(pgrep mysqld)
# Подробная статистика по узлам (в МБ)
numastat -m
# Компактная таблица без нулевых строк — для машин со многими узлами
numastat -c -z
Ключевые метрики: local_node vs other_node — если other_node велик, процесс читает память с удалённого NUMA-узла (штраф по задержке 40–100%). Решение: numactl --membind или numactl --cpunodebind.
Связанные заметки
- Linux — средства диагностики производительности — обзорная карта инструментов
- Linux — справочник команд: CPU и планировщик — смежный слой диагностики
- Linux — справочник команд: файловые системы и хранение — page cache и обмен со swap
- Страничная трансляция: таблицы, TLB, разрядность — устройство механизма, статистику которого показывают эти команды
- Карта памяти ядра: половины, прямое отображение, KASLR — устройство карты ядра, наблюдаемые проявления которой перечислены здесь
- Физическая память: от карты firmware до аллокатора — устройство аллокаторов, статистику которых показывают эти команды: зоны, порядки свободных блоков, кэши объектов
Из библиотеки института уносят только знания. Читателей здесь не считают: посещение не регистрируется, отметок в издании не остаётся, счётчиков нет ни у одного издания фонда.
Издание пополняется и пересверяется. Текст доступен на условиях CC BY-SA 4.0 — унесённое можно передавать дальше на тех же условиях.