← Назад к вопросам

Какие существуют метрики использования памяти в Linux

2.0 Middle🔥 201 комментариев
#Linux и администрирование

Комментарии (1)

🐱
deepseek-v3.2PrepBro AI6 апр. 2026 г.(ред.)

Ответ сгенерирован нейросетью и может содержать ошибки

Основные метрики использования памяти в Linux

В Linux мониторинг памяти — критически важная задача для DevOps/SRE инженеров, так как нехватка памяти может привести к деградации производительности, OOM Kill процессов и полной остановке системы. Я разделю метрики на несколько категорий для лучшего понимания.

1. Ключевые метрики из /proc/meminfo и утилит

Основной источник информации — файл /proc/meminfo. Его данные используют все утилиты мониторинга (free, top, vmstat).

# Пример просмотра информации о памяти
cat /proc/meminfo

# Использование утилиты free
free -h

Основные поля:

  • MemTotal: Общий объем физической RAM
  • MemFree: Память, не используемая вообще
  • MemAvailable: Реально доступная память для новых процессов (важнейшая метрика!)
  • Buffers: Временное хранилище для raw блоков диска
  • Cached: Кэш страниц, включая содержимое файлов
  • SwapTotal / SwapFree: Общий и свободный swap
  • Active / Inactive: Активная и неактивная память в кэше
  • Dirty: Данные, ожидающие записи на диск
  • AnonPages: Анонимные страницы (память процессов)
  • Mapped: Файлы, отображенные в память

2. Критические метрики для мониторинга

Использование памяти (Memory Utilization)

# Расчет использования
Использование = (MemTotal - MemAvailable) / MemTotal * 100%

Это самый важный показатель — сколько памяти реально занято.

Доступная память (Available Memory)

MemAvailable — современная замена MemFree. Учитывает, что часть кэша можно немедленно освободить.

Swap использование (Swap Usage)

# Проверка swap
swapon --show
vmstat -s | grep swap

Высокое использование swap указывает на нехватку физической памяти.

Своппинг (Swapping Activity)

# si (swap in) и so (swap out) в vmstat
vmstat 1
  • si (swap in): Страниц/сек, загружаемых с swap
  • so (swap in): Страниц/сек, выгружаемых в swap

Высокие значения указывают на "thrashing" — систему "перекладывания" памяти.

3. Продвинутые метрики

Pressure Stall Information (PSI)

Современный механизм ядра Linux для измерения нехватки ресурсов:

# Просмотр PSI для памяти
cat /proc/pressure/memory

# Пример вывода
some avg10=5.23 avg60=12.45 avg300=45.67 total=123456789
full avg10=1.23 avg60=3.45 avg300=12.34 total=23456789
  • some: Процент времени, когда ХОТЯ БЫ ОДНА задача ждет память
  • full: Процент времени, когда ВСЕ задачи ждут память

PSI лучше традиционных метрик показывает "стесненность" памяти.

Распределение памяти по типам

# Детальное распределение
cat /proc/meminfo | grep -E "(AnonPages|PageTables|Shmem|Slab|KernelStack)"
  • Slab: Память ядра для структур данных
  • PageTables: Память для таблиц страниц
  • KernelStack: Стек ядра для процессов

Использование памяти процессами

# Просмотр через top (сортировка по памяти)
top -o %MEM

# Или через ps
ps aux --sort=-%mem | head -20
  • RES (RSS): Физическая память процесса
  • VIRT: Вся виртуальная память (включая отображенные файлы, swap)
  • SHR: Разделяемая память

Важно: RSS процессов может суммироваться больше общей памяти из-за разделяемых библиотек.

4. Практические примеры мониторинга

Настройка алертов в Prometheus

# Пример alert rules для памяти
groups:
- name: memory.rules
  rules:
  - alert: HighMemoryUsage
    expr: (node_memory_MemTotal_bytes - node_memory_MemAvailable_bytes) / node_memory_MemTotal_bytes * 100 > 90
    for: 5m
    annotations:
      description: 'Memory usage is above 90% for 5 minutes'
      
  - alert: HighMemoryPressure
    expr: rate(node_memory_pressure_some_seconds_total[5m]) > 0.05
    annotations:
      description: 'Memory pressure some > 5%'

Анализ с помощью инструментов

# Комплексный анализ
# 1. Общая картина
free -h

# 2. Детализация кэша
cat /proc/meminfo | grep -E "(Cached|Dirty|Writeback)"

# 3. Использование slab
slabtop -o | head -20

# 4. Процессы
ps -eo pid,ppid,cmd,%mem,%cpu --sort=-%mem | head -20

# 5. Проверка OOM score
cat /proc/[PID]/oom_score

5. Рекомендации по интерпретации

Здоровые показатели:

  • MemAvailable > 10-20% от MemTotal
  • si и so близки к 0 в стабильной системе
  • PSI some < 1-2% большую часть времени

Тревожные сигналы:

  • MemAvailable приближается к 0
  • Высокие значения si/so (> 100 страниц/сек)
  • Растет Dirty память (проблемы с IO)
  • Частые OOM kills

Важно понимать: Linux агрессивно использует свободную память для кэша (Cached), поэтому MemFree часто низкий при здоровой системе. Всегда ориентируйтесь на MemAvailable и PSI метрики для реальной оценки нагрузки на память.