Ответ
Резидентный набор памяти (Resident Set Size, RSS) — это метрика, показывающая, сколько физической памяти (RAM) в данный момент занимает процесс и которая не выгружена в swap. Это ключевой показатель для мониторинга потребления памяти.
Что входит в RSS:
- Код исполняемого файла.
- Стек и куча (heap) процесса.
- Данные (глобальные и статические переменные).
- Часть разделяемых библиотек, загруженных в память для этого процесса.
Как посмотреть RSS:
# Показать RSS для конкретного процесса (в килобайтах)
ps -o pid,rss,comm -p <PID>
# Показать топ процессов по потреблению памяти
ps aux --sort=-rss | head -10
# Более точная информация с помощью smem (показывает USS, PSS, RSS)
smem -p -k -c "pid rss uss pss command" | grep <process_name>
Важные нюансы для DevOps:
- RSS может вводить в заблуждение: Поскольку разделяемые библиотеки (например,
libc.so) учитываются в RSS каждого использующего их процесса, общая сумма RSS по системе будет завышена. Для более точной оценки используется PSS (Proportional Set Size), которая делит память общих библиотек между процессами. - Мониторинг: При настройке алертинга (например, в Prometheus через node_exporter) часто смотрят на RSS, но для контейнеризованных сред лучше использовать
container_memory_working_set_bytesиз cAdvisor, который ближе к реальному давлению на память.