Что такое резидентная память (RSS) в Linux?

«Что такое резидентная память (RSS) в Linux?» — вопрос из категории Linux, который задают на 23% собеседований Devops Инженер. Ниже — развёрнутый ответ с разбором ключевых моментов.

Ответ

Резидентный набор памяти (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, который ближе к реальному давлению на память.