Solaris Monitoring
Solaris Performance and Tracing Tools
Media:M1-SolarisPOD-Lisa09-V2.pdf
Physical Memory:
# prtconf System Configuration: Sun Microsystems sun4u Memory size: 512 Megabytes
Kernel Memory
# sar -k 1 1 SunOS ian 5.8 Generic_108528-03 sun4u 08/28/01 13:04:58 sml_mem alloc fail lg_mem alloc fail ovsz_alloc fail 13:04:59 10059904 7392775 0 133349376 92888024 0 10346496 0
Free Memory
# vmstat 3 3 procs memory page disk faults cpu r b w swap free re mf pi po fr de sr f0 s0 s1 s6 in sy cs us sy id 0 0 0 478680 204528 0 2 0 0 0 0 0 0 0 1 0 209 1886 724 35 5 61 0 0 0 415184 123400 0 2 0 0 0 0 0 0 0 0 0 238 825 451 2 1 98 0 0 0 415200 123416 0 0 0 0 0 0 0 0 0 3 0 219 788 427 1 1 98
prtstat Process control System Stats Process Tracing/ debugging ● abitrace – trace ABI interfaces ● dtrace – trace the world ● mdb – debug/control processes ● truss – trace functions and system calls ●pgrep – grep for processes ●pkill – kill processes list ●pstop – stop processes ●prun – start processes ●prctl – view/set process resources ●pwait – wait for process ●preap* – reap a zombie process Process stats ● acctcom – process accounting ● busstat – Bus hardware counters ● cpustat – CPU hardware counters ● iostat – IO & NFS statistics ● kstat – display kernel statistics ● mpstat – processor statistics ● netstat – network statistics ● nfsstat – nfs server stats ● sar – kitchen sink utility ● vmstat – virtual memory stats ● cputrack / cpustat - processor hw counters ● plockstat – process locks ● pargs – process arguments ● pflags – process flags ● pcred – process credentials ● pldd – process's library dependencies ● psig – process signal disposition ● pstack – process stack dump ● pmap – process memory map ● pfiles – open files and names ● prstat – process statistics ● ptree – process tree ● ptime – process microstate times ● pwdx – process working directory Kernel Tracing/ debugging ● dtrace – trace and monitor kernel ● lockstat – monitor locking statistics ● lockstat -k – profile kernel ● mdb – debug live and kernel cores
pargs pflags pcred pldd psig pstack pmap
Открытые файлы
Для анализа файлов открытых процессом используется pfiles (что-то вроде lsof)
pfiles
Для интерпритации полученых результатов удобно следует знать:
Значения, которые использовались или используются в различных системах: hex имя ls oct описание f000 S_IFMT 170000 маска типа файла 0000 000000 SCO: недействующий inode BSD: неизвестный тип в SVID-v2 и XPG2 как 0, так и 0100000 означают обычный файл 1000 S_IFIFO p| 010000 поименованный канал FIFO 2000 S_IFCHR c 020000 символьной устройство (V7) 3000 S_IFMPC 030000 мультиплексированное символьное устройство (V7) 4000 S_IFDIR d/ 040000 каталог (V7) 5000 S_IFNAM 050000 XENIX: именованый специальный файл с двумя подтипами и разными значениями st_rdev (1 и 2) 0001 S_INSEM s 000001 семафор XENIX, подтип IFNAM 0002 S_INSHD m 000002 разделяемые данные XENIX, подтип IFNAM 6000 S_IFBLK b 060000 блочное устройство (V7) 7000 S_IFMPB 070000 мультиплексированное блочное устройство (V7) 8000 S_IFREG - 100000 обычный файл (V7) 9000 S_IFCMP 110000 VxFS: сжатый файл 9000 S_IFNWK n 110000 сетевое устройство (HP-UX) a000 S_IFLNK l@ 120000 символьная ссылка (BSD) b000 S_IFSHAD 130000 Solaris: теневой inode для ACL (не виден пользовательскими процессами) c000 S_IFSOCK s= 140000 сокет (BSD; также "S_IFSOC" on VxFS) d000 S_IFDOOR D> 150000 Solaris: door e000 S_IFWHT w% 160000 BSD whiteout (не используется для inode'ов) 0200 S_ISVTX 001000 Бит принадлежности: сохраняет код программы в файле подкачки даже после использования (V7) зарезервировано (SVID-v2) В некаталогах: не кэшировать этот файл (SunOS) В каталогах: флаг ограниченного удаления (SVID-v4.2) 0400 S_ISGID 002000 установить идентификатор группы при выполнении (V7) для каталогов: использовать семантику BSD для установки группы-владельца 0400 S_ENFMT 002000 жесткая блокировка файлов в стиле SysV (делит функции c S_ISGID) 0800 S_ISUID 004000 установить идентификатор пользователя при выполнении (V7) 0800 S_CDF 004000 каталог является файлом, зависящим от контекста (HP-UX) Бит принадлежности появился в Version 32V AT&T UNIX. <PRE> <PRE> pwdx pstop prun
pwait ptree ptime preap pkill
trapstat
mpstat vmstat netstat sar
cputrack cpustat
fsstat
PROC tools
pargs pflags pcred pldd psig pstack pmap pfiles pstop prun pwait ptree ptime preap
Microstates
- Fine-grained state tracking for processes/threads
- Off by default in Solaris 8 and Solaris 9
- On by default in Solaris 10
- Can be enabled per-process via /proc
- prstat -m reports microstates
- As a percentage of time for the sampling period
- USR – user mode
- SYS - kernel mode
- TRP – trap handling
- TFL – text page faults
- DFL – data page faults
- LCK – user lock wait
- SLP - sleep
- LAT – waiting for a processor (sitting on a run queue)
prstat -m
Use prstat -m LAT category, in conjunction with utilization measurements, delivered workload throughput and run queue depth (vmstat “r” column) to determine for CPU capacity planning
prstat – user summary
# prstat -t NPROC USERNAME SIZE RSS MEMORY TIME CPU 128 root 446M 333M 1.4% 47:14:23 11% 2 measter 6600K 5016K 0.0% 0:00:07 0.2% 1 clamb 9152K 8344K 0.0% 0:02:14 0.1% 2 rmc 7192K 6440K 0.0% 0:00:00 0.1% 1 bricker 5776K 4952K 0.0% 0:00:20 0.1% 2 asd 10M 8696K 0.0% 0:00:01 0.1% 1 fredz 7760K 6944K 0.0% 0:00:05 0.1% 2 jenks 8576K 6904K 0.0% 0:00:01 0.1% 1 muffin 15M 14M 0.1% 0:01:26 0.1% 1 dte 3800K 3016K 0.0% 0:00:04 0.0% 2 adjg 8672K 7040K 0.0% 0:00:03 0.0% 3 msw 14M 10M 0.0% 0:00:00 0.0% 1 welza 4032K 3248K 0.0% 0:00:29 0.0% 2 kimc 7848K 6344K 0.0% 0:00:25 0.0% 4 jcmartin 13M 9904K 0.0% 0:00:03 0.0% 1 rascal 17M 16M 0.1% 0:02:11 0.0% 1 rab 3288K 2632K 0.0% 0:02:11 0.0% 1 gjmurphy 3232K 2392K 0.0% 0:00:00 0.0% 1 ktheisen 15M 14M 0.1% 0:01:16 0.0% 1 nagendra 3232K 2400K 0.0% 0:00:00 0.0% 2 ayong 8320K 6832K 0.0% 0:00:02 0.0% Total: 711 processes, 902 lwps, load averages: 3.84, 4.30, 4.37
Solaris iostat
● Wait: number of threads queued for I/O ● Actv: number of threads performing I/O ● wsvc_t: Average time spend waiting on queue ● asvc_t: Average time performing I/O ● %w: Only useful if one thread is running on the entire machine – time spent waiting for I/O ● %b: Device utilization – only useful if device can do just 1 I/ O at a time (invalid for arrays etc...)
# iostat -xnz extended device statistics r/s w/s kr/s kw/s wait actv wsvc_t asvc_t %w %b device 687.8 0.0 38015.3 0.0 0.0 1.9 0.0 2.7 0 100 c0d0 Queue Performing I/O wait svc
New Formatting flags -C, -l, -m, -r, -s, -z, -T ● -C: report disk statistics by controller ● -l n: Limit the number of disks to n ● -m: Display mount points (most useful with -p) ● -r: Display data n comma separated format ● -s: Suppress state change messages ● -z: Suppress entries with all zero values ● -T d|u Display a timestamp in date (d) or unix time_t (u)