Что означает RES в htop или других мониторах процессов в Linux?

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

Ответ

RES (Resident Set Size) — это объем физической оперативной памяти (RAM), который в данный момент занимает процесс и его страницы, действительно находящиеся в памяти. Это ключевая метрика для понимания реального потребления RAM процессом.

Детализация для DevOps-инженера:

  • RES vs VIRT: VIRT — это вся виртуальная память, которую процесс запросил (включая загруженные библиотеки, отображенные файлы и своп). RES — только та часть VIRT, которая сейчас находится в физической RAM.
  • RES vs SHR: SHR — часть RES, которая является разделяемой (например, общие библиотеки libc). Память из SHR может использоваться несколькими процессами. RES включает как SHR, так и уникальную для процесса память.

Почему это важно:

  • Мониторинг и алертинг: Высокий RES у критичного сервиса (например, базы данных) может указывать на нехватку памяти и необходимость масштабирования.
  • Расследование инцидентов: Внезапный рост RES может быть симптомом утечки памяти.
  • Планирование ресурсов: Понимание реального RES помогает правильно настраивать requests и limits для контейнеров в Kubernetes.

Как проверить через командную строку:

# Показать RES и % использования памяти для процесса с PID 1234
ps -o pid,res,%mem,cmd -p 1234

# Отслеживать изменение RES процесса в реальном времени
watch -n 1 'ps -o pid,res,%mem,cmd -p 1234'

# Найти топ-5 процессов по потреблению RAM
ps aux --sort=-rss | head -6

Например, если RES для процесса Java составляет 2.5G, это значит, что JVM в данный момент удерживает в RAM 2.5 гигабайта данных.