Что такое RSS-память в Linux
Обновлено: 21.11.2024
Я обнаружил, что pidstat может быть хорошим инструментом для мониторинга процессов. Я хочу рассчитать среднее использование памяти конкретным процессом. Вот пример вывода:
(Это часть вывода команды pidstat -r -p 7276 .)
Должен ли я использовать информацию о размере резидентного набора (RSS) или виртуальном размере (VSZ) для расчета среднего потребления памяти? Я кое-что читал в Википедии и на форумах, но не уверен, что полностью понимаю различия. Кроме того, кажется, что ни один из них не является надежным. Итак, как я могу контролировать процесс, чтобы узнать об использовании им памяти?
Любая помощь по этому вопросу будет полезна.
2 ответа 2
RSS – это объем оперативной памяти (ОЗУ), который в настоящее время занимает этот процесс. VSZ — это общий объем виртуальной памяти, который имеет процесс. Сюда входят все типы памяти, как в ОЗУ, так и в выгруженном состоянии. Эти цифры могут быть искажены, поскольку они также включают разделяемые библиотеки и другие типы памяти. У вас может быть пятьсот запущенных экземпляров bash, и общий размер их памяти не будет суммой их значений RSS или VSZ.
Если вам нужно получить более подробное представление об объемах памяти, занимаемых процессом, у вас есть несколько вариантов. Вы можете просмотреть /proc/$PID/map и отсеять то, что вам не нравится. Если это разделяемые библиотеки, вычисления могут быть сложными в зависимости от ваших потребностей (которые, кажется, я помню).
Если вас интересует только размер кучи процесса, вы всегда можете просто проанализировать запись [куча] в файле карты. Размер, выделенный ядром для кучи процесса, может отражать или не отражать точное количество байтов, которое процесс запросил выделить. Есть мельчайшие детали, внутреннее устройство ядра и оптимизации, которые могут сбить это с толку. В идеале это будет столько, сколько нужно вашему процессу, округленное до ближайшего кратного размера системной страницы ( getconf PAGESIZE сообщит вам, что это такое — на ПК это, вероятно, 4096 байт).
Если вы хотите узнать, сколько памяти выделено процессу, один из лучших способов — отказаться от показателей на стороне ядра. Вместо этого вы снабжаете функции (де)распределения кучи библиотеки C механизмом LD_PRELOAD. Лично я немного злоупотребляю valgrind, чтобы получить информацию о подобных вещах. (Обратите внимание, что для применения инструментария потребуется перезапустить процесс.)
Обратите внимание, поскольку вы также можете проводить бенчмаркинг сред выполнения, valgrind немного замедлит работу ваших программ (но, вероятно, в пределах ваших допусков).
Команда ps в системах Linux — это утилита командной строки по умолчанию, которая может дать нам представление о запущенных в данный момент процессах. Это может дать нам много полезной информации об этих процессах, включая их PID (идентификатор процесса), TTY, пользователя, запускающего команду или приложение, и многое другое.
В выводе команды ps есть два столбца, о которых мало говорят. Это столбцы VSZ (размер виртуальной памяти) и RSS (размер резидентного набора). Оба столбца дают нам информацию о том, сколько памяти использует процесс. В этом руководстве мы рассмотрим их значения и то, как интерпретировать данные, которые они показывают нам в команде ps в Linux.
В этом уроке вы узнаете:
- Как интерпретировать номера VSZ и RSS в выходных данных команды ps
VSZ и RSS
В выводе команды ps отображаются столбцы VSZ и RSS, как показано на снимке экрана ниже. Значения отображаются в килобайтах для каждого процесса, работающего в системе.
VSZ — это размер виртуальной памяти. Это размер памяти, которую Linux выделил процессу, но это не обязательно означает, что процесс использует всю эту память. Например, многие приложения имеют функции для выполнения определенных задач, но могут не загружать их в память до тех пор, пока они не потребуются. В Linux используется пейджинг по запросу, который загружает страницы в память только после того, как приложение попытается их использовать.
Размер VSZ, который вы видите, учитывает все эти страницы, но это не означает, что они были загружены в физическую память. Таким образом, размер VSZ обычно не является точным показателем того, сколько памяти использует процесс, а скорее указывает на максимальный объем памяти, который может использовать процесс, если он загрузит все свои функции и библиотеки в физическую память.
RSS — это резидентный размер набора. Это размер памяти, который процесс в настоящее время использует для загрузки всех своих страниц.На первый взгляд может показаться, что номер RSS — это реальный объем физической памяти, который использует системный процесс. Однако общие библиотеки учитываются для каждого процесса, что делает отчет об использовании физической памяти менее точным.
Вот пример. Если у вас есть две программы редактирования изображений в вашей системе Linux, они, вероятно, используют одни и те же библиотеки обработки изображений. Если открыть одно из приложений, необходимая библиотека будет загружена в оперативную память. Когда вы открываете второе приложение, оно избегает перезагрузки дублирующейся копии библиотеки в ОЗУ и просто предоставляет доступ к той же копии, которую использует первое приложение. Для обоих приложений в столбце RSS будет подсчитываться размер общей библиотеки, даже если она была загружена только один раз. Это означает, что размер RSS часто является завышенной оценкой объема физической памяти, фактически используемой процессом.
Если вы пытаетесь отслеживать использование памяти в вашей системе Linux, существуют более точные методы, чем цифры RSS и VSZ. Эти столбцы удобны для определенных целей, но не тогда, когда вам просто нужна простая разбивка использования памяти в вашей системе. Ознакомьтесь с нашим руководством о том, как отслеживать использование ОЗУ в Linux, чтобы узнать, как это сделать лучше.
Заключительные мысли
В этом руководстве мы узнали о столбцах VSZ и RSS из выходных данных команды ps. Обе эти колонки вызывают недоумение у новичков, и их нелегко объяснить без помощи примеров. Они предлагают нам важные измерения того, сколько памяти использует процесс, но не всегда точны в отношении того, сколько физической памяти используется в настоящее время. Для этого мы предлагаем лучшие предложения в нашем другом руководстве.
RSS — это размер резидентного набора, который используется для отображения того, сколько памяти выделено для этого процесса и находится в ОЗУ. … Он включает всю память, к которой может получить доступ процесс, включая память, которая выгружена, память, которая выделена, но не используется, и память из общих библиотек.
В вычислительной технике размер резидентного набора (RSS) – это часть памяти, занимаемая процессом, которая хранится в основной памяти (ОЗУ). Остальная часть занятой памяти находится в пространстве подкачки или в файловой системе либо потому, что некоторые части занятой памяти были выгружены, либо потому, что некоторые части исполняемого файла никогда не загружались.
Что такое VSS и RSS в верхней команде?
VSS (обозначается как VSZ от ps) — это общее доступное адресное пространство процесса. Этот размер также включает в себя память, которая может не находиться в ОЗУ, например, malloc, которые были выделены, но не записаны. … RSS — это общий объем памяти, фактически занимаемый процессом в оперативной памяти.
Что такое Vsize в Linux?
VSIZE (РАЗМЕР виртуальной памяти) — объем памяти, который процесс использует в данный момент. Это включает в себя объем в оперативной памяти и объем в подкачке. RSS (Resident Set Size) — часть процесса, которая находится в физической памяти (ОЗУ). Остальная часть программы существует в подкачке.
Что означает VSZ для Linux?
VSZ — это сокращение от "Размер виртуальной памяти". Это общий объем памяти, к которому гипотетически может получить доступ процесс. Он учитывает размер самого двоичного файла, любых связанных библиотек и любых выделений стека или кучи. Когда процесс запускается, память VSZ становится памятью RSS, которую мы сейчас рассмотрим.
Что такое Total_vm и RSS?
Насколько я понимаю, размер виртуальной памяти, которую использует процесс, указан как «total-vm». Часть его действительно отображается в самой оперативной памяти (выделенной и используемой). Это «РСС». … Это анонимная память («anon-rss»), а также блоки памяти RSS, которые сопоставляются с устройствами и файлами («file-rss»).
Что такое память PSS?
В вычислениях пропорциональный размер набора (PSS) — это часть основной памяти (ОЗУ), занятая процессом, состоящая из частной памяти этого процесса и доли общей памяти с одним или несколькими другими процессами. Неразделяемая память, включая долю общей памяти, указывается как PSS.
Что такое RSS в верхней команде?
RSS — это размер резидентного набора, который используется для отображения того, сколько памяти выделено для этого процесса и находится в ОЗУ. … VSZ — это размер виртуальной памяти. Он включает всю память, к которой может получить доступ процесс, включая память, которая выгружена, память, которая выделена, но не используется, и память из общих библиотек.
Какой процесс занимает больше памяти в Linux?
Проверка использования памяти с помощью команды ps:
- Вы можете использовать команду ps для проверки использования памяти всеми процессами в Linux. …
- Вы можете проверить память процесса или набора процессов в удобочитаемом формате (в КБ или килобайтах) с помощью команды pmap. …
- Допустим, вы хотите проверить, сколько памяти использует процесс с PID 917.
Что такое Procrank?
прокрутка. prorank покажет вам краткую сводку об использовании памяти процесса. По умолчанию он показывает Vss, Rss, Pss и Uss и сортирует по Vss.Однако вы можете контролировать порядок сортировки. Исходный код procrank включен в system/extras/procrank, а двоичный файл находится в /system/xbin на устройстве Android.
Что такое PS в терминале?
Команда ps (т. е. статус процесса) используется для предоставления информации о запущенных в данный момент процессах, включая их идентификационные номера процессов (PID). Процесс, также называемый задачей, представляет собой исполняемый (т. е. работающий) экземпляр программы.
Как использовать статистику в Linux?
Использование команды stat
- Файл – имя файла.
- Размер – размер файла в байтах.
- Блоки — количество выделенных блоков, которые занимает файл.
- Блок ввода-вывода — размер каждого блока в байтах.
- Тип файла – (например, …
- Устройство — номер устройства в шестнадцатеричном и десятичном формате.
- Инод – номер индекса.
- Ссылки — количество жестких ссылок.
Что такое TTY в команде PS?
TTY — это компьютерный терминал. В контексте ps это терминал, который выполнил конкретную команду. Аббревиатура означает «TeleTYpewriter» — устройства, которые позволяли пользователям подключаться к ранним компьютерам.
Что такое статистика в команде ps?
В столбце STAT выходных данных команды ps отображается текущее состояние процесса. Две наиболее распространенные записи в столбце STAT: S для сна и R для бега. Спящий процесс — это процесс, который в данный момент не активен. Выполняемый процесс — это процесс, который в данный момент выполняется на ЦП.
Linux проверяет использование памяти для каждого процесса. как проверить, какой процесс использует больше памяти в Linux. Linux сколько памяти использует процесс. Linux отслеживает использование памяти процессом с течением времени. linux проверить использование памяти на процесс в мб. Linux проверка памяти. Linux показывает использование памяти. Linux смотрите использование памяти. информация об использовании памяти Linux. использование памяти процессом Linux. как проверить использование памяти в Linux.
Существует несколько показателей для проверки использования памяти каждым процессом в Linux. Я начну с двух, которые проще всего получить
- размер виртуального набора (vss)
- размер резидентной памяти (rss)
оба доступны в большинстве реализаций команд ps и top.
-
Vss: называется VSZ в команде ps и VIRT в top и представляет собой общий объем памяти, отображаемый процессом. Это сумма всех регионов, показанных в /proc/
Использование top и ps для проверки использования памяти процессом (VSS и RSS)
Команда ps показывает Vss (VSZ) и Rss (RSS) с параметрами -Aly и пользовательским форматом, включающим vsz и rss, как показано здесь
Аналогичным образом free и top также показывают сводку свободной памяти и использования памяти для каждого процесса:
Эти простые команды дают представление об использовании памяти и дают первое указание на утечку памяти, когда вы видите, что Rss процесса продолжает увеличиваться. Однако они не очень точны в абсолютных измерениях использования памяти.
Использование smem для проверки использования памяти процессом
В 2009 году Мэтт Макколл начал изучать проблему учета общих страниц при измерении памяти процесса и добавил две новые метрики: размер уникального набора, или Uss , и размер пропорционального набора, или Pss.
- Uss: объем памяти, выделенный для физической памяти и уникальный для процесса; он не делится ни с кем другим. Это объем памяти, который будет освобожден, если процесс завершится.
- Pss: разделяет учет общих страниц, зафиксированных в физической памяти, между всеми процессами, для которых они сопоставлены. Например, если область библиотечного кода имеет длину 12 страниц и совместно используется шестью процессами, каждый из них будет накапливать две страницы в Pss. Таким образом, если вы добавите числа Pss для всех процессов, вы получите фактический объем памяти, используемый этими процессами. Другими словами, Pss — это число, которое мы искали.
Информация доступна в /proc/
/smaps , который содержит дополнительную информацию для каждого из сопоставлений, показанных в /proc/
/карты . Вот один раздел из такого файла, в котором содержится информация о сопоставлении сегмента кода libc:
Обратите внимание, что Rss составляет 58,7 МБ, но, поскольку он совместно используется многими другими процессами, Pss составляет всего 56,4 МБ.
Существуют различные фильтры, которые можно применять с помощью smem, как показано ниже, в последней доступной версии (1.4) на момент написания этой статьи
Чтобы проверить общее использование памяти для каждого процесса, мы можем выполнить следующую команду
Это даст вам подробную информацию об использовании памяти каждым процессом, активным в вашей системе.
Чтобы получить данные об использовании памяти одним процессом, мы можем выбрать процесс из списка
Здесь, как вы видите, мы получаем те же результаты, что и выше, с /proc/31768/smaps и инструментом smem. Таким образом, фактическое использование памяти amsHelper составляет 56,4 МБ
Наконец, я надеюсь, что шаги из статьи по проверке использования памяти для каждого процесса в Linux были полезны. Итак, дайте мне знать ваши предложения и отзывы, используя раздел комментариев.
Похожие записи
Не нашли то, что искали? Выполните быстрый поиск в GoLinuxCloud
Если мои статьи о GoLinuxCloud помогли вам, пожалуйста, купите мне кофе в знак признательности.
Для любых других отзывов или вопросов вы можете использовать раздел комментариев или форму обратной связи.
Спасибо за поддержку!!
5 мыслей на тему «Как проверить использование памяти для каждого процесса в Linux»
Определенно многое нужно знать об этой
проблеме. Мне очень нравятся все ваши замечания.
Я счастлив, что заметил этот сайт, именно ту информацию, которую я искал! .
Спасибо! Отличный отзыв!
Но я бы добавил это со страницы руководства smem: USS и PSS включают только использование физической памяти. Они не включают в себя память, которая была выгружена на диск».
Я бы также отметил, что было бы быстрее и проще выбрать процесс с опцией -P:
smem -k -P amsHelper< /p>
Спасибо, что поделились этой дополнительной информацией.
Круто! Спасибо за полные флаги ps для перечисления многих видов параметров памяти, а также за совет о просмотре файла /proc/PID/smaps для получения дополнительной информации. Я пытался выяснить, сколько памяти потребляет один из моих процессов, но, увы, в моем дистрибутиве Linux (работающем на встроенной системе) нет возможности установить smem или другой популярный инструмент pmap. Я просто использовал старый добрый топ для этого, но ваша статья дала мне множество других предложений! Большое спасибо за это 🙂
Читайте также: