Что такое RES в htop в Linux?
Комментарии (1)
Ответ сгенерирован нейросетью и может содержать ошибки
Что такое 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
-
Мониторинг и алертинг: RES — это первичный показатель для определения реального потребления RAM. Когда RES процессов на сервере в сумме приближается к доступной физической памяти, система начинает активно использовать своп, что резко снижает производительность. Мониторинг RES критически важен для выявления утечек памяти (memory leaks), когда RES процесса постоянно растёт, не возвращая память системе.
-
Диагностика проблем производительности: Если
%MEM(который рассчитывается как(RES / Total RAM) * 100%) в htop высок, аLOAD AVERAGEбольшой — вероятна нехватка памяти. В отличие от VIRT, высокий RES указывает на конкретную проблему с физической памятью. -
Принятие решений о масштабировании: Анализ трендов роста RES ключевых процессов (баз данных, кэшей, бизнес-логики) помогает планировать горизонтальное или вертикальное масштабирование инфраструктуры.
-
Настройка ограничений (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 — это не просто абстрактная цифра, а практический инструмент для мониторинга здоровья системы, планирования ресурсов и оперативного реагирования на инциденты, связанные с нехваткой памяти.