Значение значений SIZE и RSS в выводе prstat - PullRequest
7 голосов
/ 06 декабря 2008

Может ли кто-нибудь дать четкое объяснение значения значений SIZE и RSS, которые мы получаем из prstat в Solaris?

Я написал тестовое приложение C ++, которое выделяет память с помощью new[], заполняет ее и освобождает с помощью delete[].

Как я понял, значение SIZE должно быть связано с тем, сколько виртуальной памяти было "зарезервировано" процессом, то есть памяти "неправильно" или "обновлено".

Эта память не суммируется в значении RSS, если я действительно не использую его (заполняя некоторыми значениями). Но тогда, даже если я освобождаю память, RSS не падает.

Я не понимаю, какую семантику я могу правильно назначить этим двум значениям.

Ответы [ 3 ]

5 голосов
/ 08 января 2010

RSS (AFAIK надежно) представляет, сколько физической памяти использует процесс. Используя распределитель памяти Solaris по умолчанию, освобождение памяти ничего не делает с RSS, поскольку оно просто меняет некоторые указатели и значения, сообщая, что память свободна для повторного использования. Если вы не будете снова использовать эту память, выделяя ее снова, она в конечном итоге будет разбита на страницы, и RSS упадет.

Если вы хотите, чтобы освобожденная память возвращалась сразу после освобождения, вы можете использовать распределитель mmap для Solaris следующим образом:

export LD_PRELOAD=libumem.so
export UMEM_OPTIONS=backend=mmap
1 голос
/ 06 декабря 2008

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

0 голосов
/ 08 декабря 2009

Как правило, после выделения памяти для процесса она никогда не будет возвращена операционной системе. В системах Unix вызов sbrk () используется для расширения адресного пространства процессов, и аналогичного вызова для перехода в другом направлении не существует.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...