Как проверить и проанализировать использоваиние памяти в системе Solaris
Очень часто господа системные администраторы сталкиваются с проблемой просмотра загрузки операционной системы, и если большинству в общем то знакомы системы мониторинга на стандартных операционных системах, то в системе Solaris — это часто вызывает много вопросов и сомнений, особенно в выводах команд пугающих своими цифрами. Сегодня попробуем немного в этом разобраться.
Первоначально нас интересует три вопроса, рассмотрим их по порядку:
1. Что влияет на производительность системы?
Обязательно иметь два вида данных, первый собранный в момент когда система испытвает критические нагрузки, второй во время стабильного функционирования системы.
4. Ну и наконец какие же у нас есть средства в нашей системе, и за что они отвечают?
Анализируем использование памяти: первое, нам необходимо узнать сколько памяти занимается ядром, а сколько пользователем, от этого будет зависить наши последующие шаги:
root@T1000-spare # echo "::memstat" | mdb -k
Использование памяти пользователя: показывает процессы использующие память больше всего
root@T1000-spare # prstat -s rss
Следующая команда показывает вывод общей памяти и «семафоров»:
root@T1000-spare # ipcs -a (к сожалению данный сервер тестовый и только-только поднятый, нагрузку продемонстироровать не смогу)
Следующая команда продемонстрирует нам использование пользовательской памяти всеми процессами, исключая (PID 0,2,3):
root@T1000-spare # egrep "[0-9]:|^total" /var/tmp/pmap-x
Следующим шагом будет проверка использования файловой системы /tmp:
root@T1000-spare # df -kl /tmp/
Данная команда будет отображать информацию раз в три секунды.
Конечно же необходимо проверить использование SWAP системой:
root@T1000-spare # swap -s
В данном разделе финальной комнадой будет проверка статистики ядра: очень хорошая утилита kstat, имеет большое разнообразие дополнительных ключей, также можно использовать команду которую я указал ниже
root@T1000-spare # echo "::kmastat"| mdb -k > /var/tmp/kmastat
В данной таблице нужно смотреть на столбец «memory in use» и на любую строку в которой «alloc fail» больше нуля.
Ну я думаю для одной статьи пока достаточно, не хочется нагружать Вас большим полотном текста надеюсь вскоре смогу продолжить свой обзор по наблюдению за питомцами на солярисе.
Первоначально нас интересует три вопроса, рассмотрим их по порядку:
1. Что влияет на производительность системы?
- Память
- Процессор
- Диск
- Сеть
- Недостаточные нагрузочные тесты производительности приводит к нерасчитанным нагрузкам на существующую систему
- Появление недостатка системных ресурсов в результате увеличения нагрузки на существующее приложение
- Проблемы программно-аппаратного комплекса
Обязательно иметь два вида данных, первый собранный в момент когда система испытвает критические нагрузки, второй во время стабильного функционирования системы.
4. Ну и наконец какие же у нас есть средства в нашей системе, и за что они отвечают?
- vmstat — память, процессор, I/O
- mpstat — CPU
- iostat — I/O
- netstat — сеть
- lockstat — системные вызовы, блокировки
- sar — утилита многоплановая, все зависит от опций
- и другие.
Анализируем использование памяти: первое, нам необходимо узнать сколько памяти занимается ядром, а сколько пользователем, от этого будет зависить наши последующие шаги:
root@T1000-spare # echo "::memstat" | mdb -k
Page Summary Pages MB %Tot
— — — — Kernel 54267 423 5%
Anon 25457 198 3%
Exec and libs 4346 33 0%
Page cache 9650 75 1%
Free (cachelist) 10775 84 1%
Free (freelist) 908455 7097 90%
Total 1012950 7913
Physical 1007634 7872
Использование памяти пользователя: показывает процессы использующие память больше всего root@T1000-spare # prstat -s rss
PID USERNAME SIZE RSS STATE PRI NICE TIME CPU PROCESS/NLWP
1238 noaccess 155M 117M sleep 59 0 0:01:01 0.0% java/18
662 root 18M 15M sleep 59 0 0:00:05 0.0% fmd/26
7 root 16M 13M sleep 59 0 0:00:09 0.0% svc.startd/12
9 root 12M 11M sleep 59 0 0:00:34 0.0% svc.configd/17
697 root 10M 8304K sleep 59 0 0:00:00 0.0% snmpd/1
489 root 50M 8048K sleep 59 0 0:00:00 0.0% gdm-binary/1
446 root 9744K 6352K sleep 59 0 0:00:01 0.0% inetd/4
1773 root 7464K 6152K sleep 59 0 0:00:00 0.0% sshd/1
184 root 6704K 4728K sleep 59 0 0:00:00 0.0% nscd/31
187 root 5536K 4720K sleep 59 0 0:00:00 0.0% picld/9
1772 root 5680K 4312K sleep 59 0 0:00:00 0.0% sshd/1
667 root 9608K 4184K sleep 59 0 0:00:00 0.0% sendmail/1
142 root 6832K 3784K sleep 59 0 0:00:00 0.0% syseventd/15
664 smmsp 9672K 3744K sleep 59 0 0:00:00 0.0% sendmail/1
202 daemon 4984K 3728K sleep 59 0 0:00:00 0.0% kcfd/5
2019 oracle 3880K 3600K cpu17 59 0 0:00:00 0.0% prstat/1
==================================================
Следующая команда показывает вывод общей памяти и «семафоров»:root@T1000-spare # ipcs -a (к сожалению данный сервер тестовый и только-только поднятый, нагрузку продемонстироровать не смогу)
Следующая команда продемонстрирует нам использование пользовательской памяти всеми процессами, исключая (PID 0,2,3):
root@T1000-spare # egrep "[0-9]:|^total" /var/tmp/pmap-x
1: /sbin/init
total Kb 3024 2712 312 — 1112: /usr/dt/bin/dtlogin -daemon
total Kb 6576 4536 304 — 1238: /usr/java/bin/java -server -Xmx128m -XX:+UseParallelGC -XX:ParallelGCT
total Kb 158552 120040 103304 — 142: /usr/lib/sysevent/syseventd
total Kb 6832 5832 1096 — 146: /usr/lib/ldoms/drd
total Kb 2600 2320 408 — 1539: /home/OracleDB/11.2/ccr/bin/nmz -cron -silent
total Kb 3936 3152 264 — 1772: /usr/lib/ssh/sshd
total Kb 5680 5352 728 — 1773: /usr/lib/ssh/sshd
total Kb 7464 6928 408 — ======================================================
Следующим шагом будет проверка использования файловой системы /tmp:root@T1000-spare # df -kl /tmp/
Filesystem kbytes used avail capacity Mounted on
swap 14380920 104 14380816 1% /tmp
=========================================================
root@T1000-spare # du -akd /tmp | sort -n | tail -5 — а эта команда отобразит 5 файлов большого размера внутри данной файловой системы.
Общее использование памяти в системе:
root@T1000-spare # vmstat -p 3
memory page executable anonymous filesystem
swap free re mf fr de sr epi epo epf api apo apf fpi fpo fpf
14314224 7375848 26 67 1 0 13 23 0 0 0 0 0 40 1 1
14381608 7361752 3 6 0 0 0 0 0 0 0 0 0 0 0 0
14381288 7361616 0 0 0 0 0 0 0 0 0 0 0 0 0 0
=============================================
Данная команда будет отображать информацию раз в три секунды.Конечно же необходимо проверить использование SWAP системой:
root@T1000-spare # swap -s
total: 193424k bytes allocated + 47176k reserved = 240600k used, 14381936k available
root@T1000-spare # swap -l
swapfile dev swaplo blocks free
/dev/dsk/c0t0d0s1 32,9 16 16387600 16387600
======================================================
В данном разделе финальной комнадой будет проверка статистики ядра: очень хорошая утилита kstat, имеет большое разнообразие дополнительных ключей, также можно использовать команду которую я указал нижеroot@T1000-spare # echo "::kmastat"| mdb -k > /var/tmp/kmastat
root@T1000-spare # more /var/tmp/kmastat
cache buf buf buf memory alloc alloc
name size in use total in use succeed fail
— — — — — — —
kmem_magazine_1 16 1161 1524 24576 1161 0
kmem_magazine_3 32 2184 2540 81920 2805 0
kmem_magazine_7 64 1730 2413 155648 3043 0
kmem_magazine_15 128 2701 2772 360448 3401 0
kmem_magazine_31 256 337 341 90112 337 0
kmem_magazine_47 384 0 0 0 0 0
В данной таблице нужно смотреть на столбец «memory in use» и на любую строку в которой «alloc fail» больше нуля.Ну я думаю для одной статьи пока достаточно, не хочется нагружать Вас большим полотном текста надеюсь вскоре смогу продолжить свой обзор по наблюдению за питомцами на солярисе.
0 комментариев