Вопрос или проблема
Вот вывод моей htop:
Например, меня смущает этот скрипт на ruby:
Сколько физической памяти он использует? 3+1+8+51+51
? 51
? 51+51
?
Скрыть пользовательские потоки (shift + H) и закрыть обзор дерева процессов (F5), затем вы можете отсортировать процесс по интересующему вас PID и прочитать колонку RES (отсортировать по MEM% нажав shift + M или F3 для поиска по командной строке)
Память – это сложная вещь, вы не можете рассчитать используемую физическую память, просто запустив ps/htop/top. Память может быть разделена между процессами.
Рекомендую вам проверить использование с помощью этого скрипта:
Обратите внимание на колонки RES и SHR.
RES – SHR = Общее оценочное использование памяти процессом.
Из этого gist:
VIRT: Сколько виртуальной памяти использует процесс.
RES: Сколько физической ОП, процесс использует, измеряется в килобайтах.
SHR: Сколько общей памяти использует процесс.
Из этого блога (к сожалению, ссылка сейчас недействительна):
VIRT обозначает виртуальный размер процесса, который является суммой памяти, которую он фактически использует, памяти, которую он смонтировал сам в себя (например, ОП видеокарты для X сервера), файлов на диске, которые были смонтированы в нем (в частности, общих библиотек) и памяти, разделенной с другими процессами. VIRT представляет собой то, сколько памяти программа может получить в данный момент.
RES обозначает размер резидента, который точно показывает, сколько фактической физической памяти потребляет процесс. (Это также напрямую соответствует колонке %MEM.) Это будет почти всегда меньше, чем размер VIRT, поскольку большинство программ зависит от библиотеки C.
Ответ или решение
Чтобы правильно оценить использование памяти в htop
, необходимо понимать ключевые понятия и столбцы, которые отображаются в этом инструменте мониторинга процессов Linux.
Что такое htop
?
htop
— это интерактивный монитор системы, который позволяет отслеживать запущенные процессы в реальном времени. Он предоставляет более наглядный и удобный интерфейс, чем традиционные команды, такие как top
.
Основные столбцы, связанные с памятью
В выводе htop
вы увидите несколько столбцов, которые относятся к использованию памяти. Ключевыми из них являются:
- VIRT (виртуальная память): Общее количество виртуальной памяти, используемой процессом. Это включает физическую память (RAM), а также память на диске, которая была изменена в процесс (например, маппинг библиотек).
- RES (резидентная память): Количество физической памяти, используемой процессом в данный момент времени. Это фактический объем оперативной памяти, который использует процесс, измеряемый в килобайтах.
- SHR (разделяемая память): Количество памяти, используемой совместно с другими процессами. Это важно, поскольку может создавать впечатление, что процесс использует больше памяти, чем на самом деле, если большая ее часть является общей.
Анализ использования памяти
Чтобы определить, сколько физической памяти использует конкретный процесс, обратите внимание на значение из столбца RES. Например, если для вашего Ruby-скрипта вы видите такие значения:
- VIRT: 1,4 ГБ
- RES: 51 МБ
- SHR: 51 МБ
Используя значения из столбца RES, можно сказать, что процесс использует 51 МБ физической памяти. Однако, если вы видите, что RES и SHR идентичны, это может указывать на то, что процесс использует много общей памяти и фактическое использование может быть ниже, чем значение в RES.
Рассмотрение других методов
Также не забывайте, что физическая память может быть разделяемой между процессами, что затрудняет вычисление фактического использования памяти. Если вы хотите более точную оценку, рекомендуется использовать скрипт, например, ps_mem.py. Этот инструмент предоставляет более детализированную информацию о памяти, собирая данные по всем процессам и вычисляя общее использование памяти более корректно.
Заключение
Если вы не уверены в том, как интерпретировать данные в htop
, важно сфокусироваться на колонке RES для оценки использования физической памяти вашим процессом. Помните, что понимание различий между VIRT, RES и SHR поможет вам более точно анализировать использование системных ресурсов. Использование вспомогательных инструментов, таких как ps_mem.py, дополнительно улучшит вашу способность управлять памятью в системе.