Este documento fornece uma introdução à análise de desempenho usando ferramentas de sistema operacional. Ele discute métodos e ferramentas para monitorar CPUs, memória, E/S de disco e rede em sistemas Linux e Windows. O documento enfatiza a importância de planejar os contadores a serem observados, saber onde procurar problemas e manter registros históricos.
5. Objetivos
• Reflexão sobre performance a análise de performance
• Ferramentas
• Contadores
• Visão de um DBA, não de um sysadmin ;-)
• Pouca permissão
17. Observação Avançado
Linux
• slabtop
• strace
• ss
• iostat
• iotop
Windows - Sysinternals
• procexp
• handle
• procmon
• perfmon
• Faça download em
https://download.sysinternals.com/files/SysinternalsS
uite.zip
• Extraia para um diretório: “C:Program
Files(x86)Sysint
• Adicione esse caminho à variável de sistema
%PATH%
• Instale Debugging Tools
• Adcione a variável de sistema
%_NT_SYMBOL_PATH% o valor:
“srv*c:symbols*http://msdl.microsoft.com/download/sym
bols”
18. Contadores
Recurso Tipo Métrica
CPU Utilização CPU Utilization
CPU Utilização Kernel Mode
CPU Saturação Run-queue
Memoria Utilização Memória Disponível
Memória Saturação Swap***
Storage Utilização Dispositivo Ocupado
Storage Saturação Wait Queue*****
Falando de CPU observe dois fatores:
• Frequência de operação
• Steal
19. Analisando Processador
Linux
• mpstat
• sar
• -P (sar 1)
• -P ALL (proc por linha)
• -u (sar 1)
• -u ALL (mpstat)
• -q (qeue)
• -m CPU (depende de parâmetro)
• -w (task creation)
• pidstat
• -R (Priority and schedulers)
• -s (Stack utilization)
• -u (CPU Utilization)
• -v** (Some Kernel Tables)
• -w (task switching activities)
Windows
• resmon
• procexp
20. Analisando Memória
Linux
• free –m
• vmstat
• sar
• –B (paging statistics)
• –H (Huge pages,3)
• -R (report mem statistics,3)
• -r (mem utilization statistics)
• -s (Swap Space utilization)
• -W (Swap Statistics)
• pidstat
• -r (Page Faults and Mem Utiliz.)
• -s (Stack utilization)
Windows
• resmon
• perfmon
• procexp
21. Analisando IO - Disco
Linux
• sar
• -b (IO e Transf rate)
• -B (de novo )
• -d (ativ. block device)
• -F** (statitics mount FSs)
• iostat
• -d (disk)
• -h (human)
• -m (megabytes | -k)
• -x (extended)
• -N (Device Mapper-LVM)
• pidstat
• -d (IO Statistics)
• -r (de novo tbm )
• iotop
Windows
• resmon
• perfmon
22. Analisando IO - Rede
Linux
• sar
• -n
• netstat
• -putona
• ss
Windows
• resmon
• perfmon
23. Análise histórica
Linux
• sar –s hh:mm:ss –e
hh:mm:ss
• -f (input de arquivo)
• -o (output para arquivo)
Windows
• Permon com coleta
Independente da plataforma,
use histórico e se possível,
gráficos!
30. Resumo
• Planejar os contadores para olhar é importante
• Saiba onde olhar
• Deixar as anotações básicas prontas
• Guarde histórico de casos já ocorridos
• Já deixe os softwares de monitoramento já instalados e ativos e
saiba como usá-los
-VM Linux ligada
-VM Windows ligada
-Dois terminais no Linux
-Procexp
-Procmon
-Resmon
O que mais me ajudou a encontrar coisas na produção
Aqui contar a história do cara que foi ao banheiro.
Processo: abstração e ambiente para rodar um programa. “guarda chuva”. Rodam em user mode solicitando acesso ao kernel mode.
Thread (segmento):contexto executável que pode ser agendado para CPU.
Task: Entidade executável (processo [thread], thread de multithread, kernel thread)
Trap (armadilha): sinal enviado ao kernel solicitgando uma rotina de sistema (syscal, proc exception, interrupt)
Stack: Ascendencia de execução de uma thread
Top:
z – colorir
y – tasks ativas
f – Selecionar campos para mostrar (e então pressionar b)
<>, F ou O para ordenar os campos.
c – mostrar o comando Full
H – Ver thread individualmente
W – para salvar as configurações.
Top:
z – colorir
y – tasks ativas
f – Selecionar campos para mostrar (e então pressionar b)
<>, F ou O para ordenar os campos.
c – mostrar o comando Full
H – Ver thread individualmente
W – para salvar as configurações.
ps -eo pid,tid,user,pcpu,pmem,comm
free -tm
echo 3 > /proc/sys/vm/drop_caches
Vmstat :
R = Run Queue, B = Blocked waiting IO
await = average wait time em ms
Objetivo é mostrar que ainda algumas análises podem mostrar qual pedaço da thread está com maiores esperas/consumos, pois observação é apenas um apanhado geral.
Objetivo é mostrar que ainda algumas análises podem mostrar qual pedaço da thread está com maiores esperas/consumos, pois observação é apenas um apanhado geral.
Profiling – Amostragens (perfil)
Tracing – Todos os eventos (rastreamento)
probe-(sonda, teste)
while :; do date >> foo; done
perf stat -e 'ext4:*' -a
stat = statistica
-e = event
'ext4:*' = probe (sonda)
Pode ser obtido com: perf list ext4*
perf stat -e 'ext4:*' -a sleep 5
perf record -F 99 -a -g -- sleep 5
while :; do date > /dev/null; done &
dd if=/dev/urandom of=/dev/null bs=16k &
perf report -n --stdio
perf script > out.perf02
cat out.perf02 | ./stackcollapse-perf.pl | ./flamegraph.pl > out.svg
perf record -F 99 -ag -p 4665 -- sleep 5
perf trace ls |& less
perf help trace
/proc/sys/kernel/perf_event_paranoid:
2 = user space
1 = kernel and user (default)
0 = CPU specifica mas não permite tracepoint de dado cru
-1 = no restriction
perf top -e cycles
perf top -e cycles:p1 (cpu 1)
perf mem record stress -m 10
perf mem report
perf lock record ping -f 127.0.0.1
perf lock report | & less -S