Мониторинг использования памяти процессами в Solaris (solaris swap memory proccess size)
Ключевые слова: solaris, swap, memory, proccess, size, (найти похожие документы)
From: Vitaly Filatov <vitaly@royint.com>
Newsgroups: ftn.ru.unix.solaris
Date: Thu, 27 Feb 2003 13:19:07 +0500
Subject: Мониторинг использования памяти процессами в Solaris
> Как выяснить, кто конкретно из процессов и сколько занимает в объёме "362512K
> used"? А то это число периодически увеличивается почти на порядок (до ~2.8Gb).
> Хочется найти причину. solaris8/sparc
>
> total: 268816k bytes allocated + 93696k reserved = 362512k used, 3410480k
> available
Точно разобраться до странице - тяжело, да это и не требуется.
Можно использовать команду ps:
$ ps -e -o vsz,rss,comm
VSZ RSS COMMAND
0 0 sched
740 156 /etc/init
0 0 pageout
0 0 fsflush
1688 1036 /usr/lib/saf/ttymon
2136 1144 /usr/sbin/nis_cachemgr
1620 1016 /usr/lib/saf/sac
1168 616 /usr/lib/devfsadm/devfseventd
2116 516 /usr/lib/devfsadm/devfsadmd
2212 1064 /usr/sbin/rpcbind
2408 916 /usr/sbin/keyserv
2724 1732 /usr/lib/autofs/automountd
2392 1012 /usr/sbin/rpc.nispasswdd
3516 1584 /usr/sbin/rpc.nisd
2024 784 /usr/lib/inet/xntpd
2172 1076 /usr/sbin/inetd
2220 1452 /usr/sbin/nscd
2308 1104 /usr/lib/nfs/statd
3036 644 /usr/lib/lpsched
1772 880 /usr/lib/nfs/lockd
3476 1412 /usr/sbin/syslogd
.....
В первой колонке - занимаемая процессом виртуальная память в килобайтах.
во второй колонке - размер резидентной (в ОЗУ) части процесса в килобайтах.
в третьей колонке - имя процесса.
Чем больше разница VSZ - RSS тем больше занимаемое пространство swapfs.
Суммы по колонкам можно посчитать программой на awk:
$ ps -e -o vsz,rss,comm | awk 'NR>1{v+=$1;t+=$2}END{print "VSZT=",v,"RSST=",t}' VSZT= 253780 RSST= 155676
Имейте в виду, что разделяемые области памяти учитываются многократно.
Также можно использовать ключ -y:
$ ps -ely
S UID PID PPID C PRI NI RSS SZ WCHAN TTY TIME CMD
T 0 0 0 0 0 SY 0 0 ? 0:01 sched
S 0 1 0 0 41 20 156 740 f5cc4a70 ? 0:02 init
S 0 2 0 0 0 SY 0 0 f0284674 ? 0:00 pageout
S 0 3 0 0 0 SY 0 0 f02882c4 ? 1:44 fsflush
S 0 290 1 0 65 20 1036 1688 f628cc42 console 0:00 ttymon
S 0 107 1 0 41 20 1144 2136 f5c849fa ? 0:00 nis_cach
S 0 289 1 0 41 20 1016 1620 f5dfee18 ? 0:00 sac
S 0 48 1 0 57 20 616 1168 f5cc1230 ? 0:00 devfseve
S 0 50 1 0 64 20 516 2116 ? ? 0:00 devfsadm
S 0 103 1 0 41 20 1064 2212 f5c84e3a ? 0:01 rpcbind
S 0 105 1 0 66 20 916 2408 f5c84a7a ? 0:00 keyserv
S 0 156 1 0 41 20 1732 2724 f60d0f2c ? 0:07 automoun
S 0 114 1 0 66 20 1012 2392 f5c8497a ? 0:00 rpc.nisp
S 0 112 1 0 41 20 1584 3516 f5c8493a ? 0:00 rpc.nisd
S 0 187 1 0 40 8 784 2024 f60ce758 ? 0:00 xntpd
...............
Смотрите колонки SZ и RSS.
Можно использовать команду:
(/usr/proc/bin/pmap -x 1|head -2|tail -1|sed 's/Address/Process/;s/Permissions.*//');\
ps -e | awk 'NR>1{print "echo \"",$1,"\c\"; \
/usr/proc/bin/pmap -x",$1,"|tail -1|sed rocess/d;s/total Kb//\""}'| sh 2>&1 | sed '/process/d'
чтобы посмотреть детали распределения памяти по процессам:
# (/usr/proc/bin/pmap -x 1|head -2|tail -1|sed 's/Address/Process/;s/Permissions.*//');\
ps -e | awk 'NR>1{print "echo \"",$1,"\c\";\
/usr/proc/bin/pmap -x",$1,"|tail -1|sed \"/process/d;s/total Kb//\""}'| sh 2>&1 | sed '/process/d'
Process Kbytes Resident Shared Private
1 740 292 - 292
293 1692 1608 1364 244
107 2136 1896 1376 520
....
2896 1004 972 840 132
Чтобы найти причину запускайте ps -e -o vsz,rss,comm периодически.
Виталий Филатов
http://members.tripod.com/Vitaly_Filatov