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

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

4.08.2008 07:34:44
4 ОТВЕТА
РЕШЕНИЕ

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

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

17
9.02.2018 15:19:06

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

5
15.06.2016 07:58:50

Да, вы правы, чтобы заблокировать на VSZ.

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

4
15.06.2016 07:59:03
Номер VSZ бесполезен, если вас интересует потребление памяти. VSZ измеряет, какая часть пространства виртуальной памяти процесса была помечена процессом как память, которая должна отображаться операционной системой, если процесс коснется ее. Но это не имеет никакого отношения к тому, была ли эта память действительно затронута и использована. VSZ - это внутренняя деталь того, как процесс распределяет память - насколько большой кусок неиспользуемой памяти он захватывает сразу. Посмотрите на RSS для подсчета страниц памяти, которые он фактически начал использовать.
Brandon Rhodes 21.05.2010 21:27:06

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

ps ax -o rss | awk '{rss += $1;} END { print rss}'
2
20.03.2014 14:59:09