15 July 2011

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

System administration
Sandbox
Очень часто господа системные администраторы сталкиваются с проблемой просмотра загрузки операционной системы, и если большинству в общем то знакомы системы мониторинга на стандартных операционных системах, то в системе Solaris — это часто вызывает много вопросов и сомнений, особенно в выводах команд пугающих своими цифрами. Сегодня попробуем немного в этом разобраться.

Первоначально нас интересует три вопроса, рассмотрим их по порядку:
1. Что влияет на производительность системы?
  • Память
  • Процессор
  • Диск
  • Сеть

2. Общие случаи возникновения проблем с производительностью
  • Недостаточные нагрузочные тесты производительности приводит к нерасчитанным нагрузкам на существующую систему
  • Появление недостатка системных ресурсов в результате увеличения нагрузки на существующее приложение
  • Проблемы программно-аппаратного комплекса

3. Какие концепции используются во время сбора данных?
Обязательно иметь два вида данных, первый собранный в момент когда система испытвает критические нагрузки, второй во время стабильного функционирования системы.
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» больше нуля.
Ну я думаю для одной статьи пока достаточно, не хочется нагружать Вас большим полотном текста надеюсь вскоре смогу продолжить свой обзор по наблюдению за питомцами на солярисе.
Tags:solarismemory usageunix
Hubs: System administration
+16
10.7k 31
Comments 4