Назад | Перейти на главную страницу

Solaris prstat RSS не суммируется

Итак, в зоне Solaris 10 10/09 я вижу, что вся резидентная память израсходована. Пытаясь определить местонахождение процесса, который распределяет всю нашу физическую память, я заметил, что итоги RSS, которые дает "prstat", не суммируются со всем общим RSS, используемым в зоне.

Нет сегментов разделяемой памяти, и pmap -x сообщает о тех же количествах использования, которые указаны для отдельных процессов в prstat.

Вот некоторые выходные данные команды. Как видите, добавление RSS для верхних процессов далеко не соответствует общему сообщенному RSS (5063M).

# prstat -n 20 -s rss -Z
PID USERNAME  SIZE   RSS STATE  PRI NICE      TIME  CPU PROCESS/NLWP
18481 nobody     14G 1457M cpu18   30    0   0:20:51 4.3% java/272
18970 nobody    435M  399M sleep   59    0   0:02:44 1.2% java/30
19083 nobody    371M  363M sleep   59    0   0:02:08 0.4% java/47
18803 nobody    330M  257M sleep   59    0   0:09:51  13% java/366
22260 nobody    410M  132M sleep   59    0   3:52:07 0.3% java/23
12430 daemon     81M   35M sleep   59    0   0:00:23 0.0% httpd/28
12429 daemon     87M   33M sleep   59    0   0:00:22 0.0% httpd/28
...
very low usage processes
....
ZONEID    NPROC  SWAP   RSS     MEMORY  TIME      CPU  ZONE
17        93    3197M   5063M   99%     24:57:19  27%  cygna

Есть идеи, куда делась вся физическая память?

резидент и общий overlap, или: страницы с общей памятью не являются исключительными. например если несколько процессов имеют libc, отображаемую в их пространство памяти, они будут совместно использоваться (пока COW не сделает их не разделяемыми). Выход pmap может помочь.

Также см. Этот ответ для некоторого понимания, но имейте в виду, что управление памятью Solaris и Linux отличается в нескольких деталях (наиболее важным из них является подход к избыточной фиксации): https://stackoverflow.com/questions/1612939/why-does-the-sun-jvm-continue-to-consume-ever-more-rss-memory-even-when-the-heap