Подтвердить что ты не робот

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

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

4b9b3361

Ответ 1

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

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

Ответ 2

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

Ответ 3

Да, вы правы для блокировки на VSZ.

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

Ответ 4

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

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