Как проверить, сколько памяти потребляет процесс Solaris? Я бы хотел, чтобы было выделено как общее адресное пространство, так и объем, который находится в ОЗУ.
Я попытался суммировать вывод pmap с помощью какого-то скрипта awk, но это был ужасный прием. Есть ли лучший способ написать сценарий?
prstat -s rss
'-s' сортирует вывод prstat по столбцу rss (другие столбцы см. на странице руководства). Также попробуйте опцию «-a» для накопления на пользователя.
ps -eo pid,pmem,vsz,rss,comm | sort
-rnk2 | head
Топ-10 потребителей оперативной памяти. '-o pmem' отображает процент резидентной памяти, то есть ОЗУ, используемого процессом.
ls -lh /proc/{pid}/as
Простой способ показать общее адресное пространство (vsz) процесса. Полезно в сочетании с pgrep для накопления по пользователю, шаблону, ... например:
for pid in `pgrep -U webserver`; do ls -lh /proc/$pid/as; done
Что ж, после того, как я прочитал несколько страниц руководства, я получил следующее
ps -o vsz -p $PID | tail -1
Это довольно просто. Формат резидентного размера - rss.
Я использую вариант этого вывода в скриптах:
# prstat -Z 1 1 | tail -3
ZONEID NPROC SWAP RSS MEMORY TIME CPU ZONE
220 56 1057M 413M 0.3% 1:26:49 0.1% 820f6ce5-7e37-4455-80ab-b28c5de19b43
Total: 56 processes, 169 lwps, load averages: 0.07, 0.06, 0.06
prstat
А может dtrace-скрипт?
Мои 0,02 доллара в качестве менеджера сообщества Zenoss ...
Zenoss может отслеживать состояние всех ваших сетевых устройств и серверов, а также процессы, запущенные на ваших серверах. Один из членов нашего сообщества недавно отправил мониторинг процессов для Solaris через SNMP: http://community.zenoss.org/docs/DOC-5882