Размер процесса в UNIX

Как правильно получить размер процесса на Solaris, HP-UX и AIX? Стоит ли использовать top или ps -o vsz или что-то еще?

Стоит ли изучать PHP в 2026-2027 годах?
Стоит ли изучать PHP в 2026-2027 годах?
Привет всем, сегодня я хочу высказать свои соображения по поводу вопроса, который я уже много раз получал в своем сообществе: "Стоит ли изучать PHP в...
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
В JavaScript одним из самых запутанных понятий является поведение ключевого слова "this" в стрелочной и обычной функциях.
Приемы CSS-макетирования - floats и Flexbox
Приемы CSS-макетирования - floats и Flexbox
Здравствуйте, друзья-студенты! Готовы совершенствовать свои навыки веб-дизайна? Сегодня в нашем путешествии мы рассмотрим приемы CSS-верстки - в...
Тестирование функциональных ngrx-эффектов в Angular 16 с помощью Jest
В системе управления состояниями ngrx, совместимой с Angular 16, появились функциональные эффекты. Это здорово и делает код определенно легче для...
Концепция локализации и ее применение в приложениях React ⚡️
Концепция локализации и ее применение в приложениях React ⚡️
Локализация - это процесс адаптации приложения к различным языкам и культурным требованиям. Это позволяет пользователям получить опыт, соответствующий...
Пользовательский скаляр GraphQL
Пользовательский скаляр GraphQL
Листовые узлы системы типов GraphQL называются скалярами. Достигнув скалярного типа, невозможно спуститься дальше по иерархии типов. Скалярный тип...
28
0
21 533
4
Перейти к ответу Данный вопрос помечен как решенный

Ответы 4

Да, вы правы, заблокировав ВСЗ.

ps u предоставит вам VSZ и RSS, которые представляют собой размер виртуальной памяти и размер резидентного набора. RSS - это объем физической памяти, выделенной процессу, а VSZ - это размер виртуальной памяти процесса. Если у вас работает несколько копий программы, большая часть памяти в VSZ будет разделена между этими процессами.

Номер VSZ бесполезен, если вас интересует потребление памяти. VSZ измеряет, какая часть пространства памяти виртуальный процесса была помечена процессом как память, которая должна отображаться операционной системой, если процесс коснется ее. Но это не имеет никакого отношения к тому, действительно ли эта память была затронута и использована. VSZ - это внутренняя деталь о том, как процесс выделяет память - насколько большой кусок неиспользуемой памяти он захватывает за один раз. Посмотрите на RSS, чтобы узнать количество страниц памяти, которые он действительно начал использовать.

Brandon Rhodes 22.05.2010 01:27
Ответ принят как подходящий

Точные определения vsize, rss, rprvt, rshrd и других непонятных сокращений варьируются от ОС к ОС. На страницах руководства для команд top и ps будет какое-то описание, но все такие описания сильно упрощены (или основаны на давно исчезнувших реализациях ядра). «Размер процесса» как понятие в общем случае чертовски сложно определить. Ответы в конкретных случаях сильно зависят от фактической реализации управления памятью в ОС и редко бывают столь же удовлетворительными, как концепция аккуратного «размера процесса», которая существует в умах большинства пользователей (и большинства разработчиков).

Например, ни одно из этих чисел (или, вероятно, их комбинация) не может использоваться, чтобы точно сказать, сколько таких процессов может выполняться одновременно в данном объеме свободной памяти. Но на самом деле лучше всего исходить из этого: зачем вам этот номер и для чего вы его используете? Учитывая эту информацию, я думаю, вы получите более полезные ответы.

В Solaris вы можете получить подробную информацию об использовании памяти процессом с помощью команды pmap. В частности, pmap -x <pid> показывает, какая часть памяти процесса используется совместно и какая часть конкретно используется этим процессом. Это полезно для определения «предельного» использования памяти процессом - с помощью этого метода вы можете избежать двойного подсчета общих библиотек.

Я суммировал размер резидентного набора для всех таких процессов (как root):

ps ax -o rss | awk '{rss += ;} END { print rss}'

Другие вопросы по теме