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

Что такое RES в htop в Linux?

1.3 Junior🔥 251 комментариев
#Linux и администрирование

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

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

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

Что такое RES в htop и Linux?

В утилите htop, а также в стандартном top, аббревиатура RES расшифровывается как Resident Set Size (размер резидентного набора). Это один из ключевых показателей потребления памяти процессом в Linux.

Детальное объяснение RES

RES представляет собой объём физической памяти (RAM), который в данный момент реально занят процессом и находится в оперативной памяти. Это не просто выделенная, а активно используемая память, которая не была вытеснена в своп (swap) и не включает в себя разделяемую память, если она не отображена в адресное пространство данного конкретного процесса.

Важно понимать разницу между RES и другими похожими метриками:

  • VIRT (Virtual Memory Size): Полный объём виртуальной памяти, запрошенный процессом. Включает в себя RES, своп, библиотеки, отображённые файлы и отложенно выделенную память (например, через malloc()).
  • SHR (Shared Memory): Часть RES, которая потенциально может быть разделена с другими процессами (например, общие библиотеки libc).
  • DATA: Память, выделенная под данные (куча). Часть DATA может находиться в свопе и не входить в RES.

Пример вывода в htop:

  PID USER      PRI  NI  VIRT    RES    SHR  S  CPU%  MEM%   TIME+  Command
 1234 user       20   0  1.2G   450M    25M  S  12.5   5.6   10:25  /usr/bin/some_app

Здесь процесс с PID 1234 использует 450 мегабайт физической памяти (RES).

Что входит в RES?

В размер резидентного набора обычно включаются:

  • Стек (stack) процесса.
  • Куча (heap) — динамически выделенная память.
  • Сегменты данных (data segments).
  • Резидентная часть исполняемого кода (текстовые сегменты *.text) программы и библиотек.

Практическое значение для DevOps/SRE

  1. Мониторинг и алертинг: RES — это первичный показатель для определения реального потребления RAM. Когда RES процессов на сервере в сумме приближается к доступной физической памяти, система начинает активно использовать своп, что резко снижает производительность. Мониторинг RES критически важен для выявления утечек памяти (memory leaks), когда RES процесса постоянно растёт, не возвращая память системе.

  2. Диагностика проблем производительности: Если %MEM (который рассчитывается как (RES / Total RAM) * 100%) в htop высок, а LOAD AVERAGE большой — вероятна нехватка памяти. В отличие от VIRT, высокий RES указывает на конкретную проблему с физической памятью.

  3. Принятие решений о масштабировании: Анализ трендов роста RES ключевых процессов (баз данных, кэшей, бизнес-логики) помогает планировать горизонтальное или вертикальное масштабирование инфраструктуры.

  4. Настройка ограничений (cgroups): В контейнерах Docker или при использовании systemd можно ограничивать именно резидентную память (аналог RES), чтобы процессы внутри контейнера не могли исчерпать всю память хоста. Например, параметр memory.max_usage_in_bytes в cgroups.

Пример анализа в Linux

Чтобы получить информацию, аналогичную колонке RES в htop, можно использовать ps:

ps -o pid,user,rss,cmd -p 1234

Или более читаемый вариант:

ps -p 1234 -o pid,rss,size,vsz,cmd --no-headers

Где:

  • RSS — это и есть Resident Set Size в кибибайтах (KiB).
  • SIZE/VSZ — аналог VIRT.

Важный нюанс: Сумма RES (RES в htop или RSS в ps) всех процессов будет значительно превышать общую доступную физическую память, потому что общие библиотеки (например, libc) засчитываются в RES каждого процесса, который их использует. Для оценки реального использования памяти системой следует ориентироваться на вывод free -h или cat /proc/meminfo.

Таким образом, RES — это не просто абстрактная цифра, а практический инструмент для мониторинга здоровья системы, планирования ресурсов и оперативного реагирования на инциденты, связанные с нехваткой памяти.

Что такое RES в htop в Linux? | PrepBro