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

Как измерить использование памяти процессом Solaris?

Как проверить, сколько памяти потребляет процесс Solaris? Я бы хотел, чтобы было выделено как общее адресное пространство, так и объем, который находится в ОЗУ.

Я попытался суммировать вывод pmap с помощью какого-то скрипта awk, но это был ужасный прием. Есть ли лучший способ написать сценарий?

  1. prstat -s rss

    '-s' сортирует вывод prstat по столбцу rss (другие столбцы см. на странице руководства). Также попробуйте опцию «-a» для накопления на пользователя.

  2. ps -eo pid,pmem,vsz,rss,comm | sort -rnk2 | head

    Топ-10 потребителей оперативной памяти. '-o pmem' отображает процент резидентной памяти, то есть ОЗУ, используемого процессом.

  3. 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