🐧
Linux позволяет узнать, какой процесс создаёт давление на память, ещё до OOM Killer👁 Когда сервер начинает тормозить, обычного
free -h недостаточно: свободная память может выглядеть нормально, а процессы уже тратить время на reclaim и ожидание освобождения страниц. В Linux для этого есть PSI — Pressure Stall Information.
📝
Смотрим давление на память всей системы:Файл memory показывает, сколько времени задачи теряют из-за нехватки памяти. Показатель
full особенно полезен: он отражает периоды, когда все работающие задачи одновременно остановлены из-за давления на память.
cat /proc/pressure/memory
📝
Находим процессы, которые активно обращаются к памяти:Снимите показатели до и после нагрузки:
pgmajfault растёт при крупных промахах по страницам, а
VmSwap показывает объём памяти процесса, выгруженный в swap.
for p in /proc/[0-9]*; do
[ -r "$p/status" ] || continue
awk '
/^Name:/ { name=$2 }
/^VmSwap:/ { swap=$2 }
/^VmRSS:/ { rss=$2 }
/^VmHWM:/ { peak=$2 }
END {
if (rss+0 > 0 || swap+0 > 0)
printf "%8s %8s %8s %s\n", rss+0, swap+0, peak+0, name
}
' "$p/status" 2>/dev/null
done | sort -nr
📝
Автоматически фиксируем периоды давления:PSI можно использовать для раннего обнаружения проблем и запуска сбора диагностических данных. Например,
some 100000 1000000 срабатывает, когда хотя бы одна задача суммарно простаивает из-за нехватки памяти 100 мс за интервал в 1 секунду.
# Требует ядро Linux с поддержкой PSI
echo "some 100000 1000000" > /sys/fs/cgroup/memory.pressure
❗️ PSI помогает обнаружить давление на память до аварии, но не определяет виновника самостоятельно. Сопоставляйте его показатели с метриками процессов, журналами и нагрузкой приложения. Запись в
memory.pressure cgroup требует соответствующих прав и работает для конкретной cgroup.
tags: #linux #мониторинг🧭 @recura_tech