Вопрос

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

Это было полезно?

Решение

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

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

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

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

Да, вы правы, что заперлись в VSZ.

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

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

ps ax -o rss | awk '{rss += $1;} END { print rss}'
Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top