1. Otimização holística de ambiente
computacional
Bruno Domingues
Principal Architect @ Intel
IEEE Chairman of Computer Society para o Centro-Norte do Brasil
bruno.domingues@intel.com
3. A “equação” do planejamento de capacidade
Usuários
Aplicação
Planejamento
de
Capacidade
Infraestrutura
A x I = n x R x U
A = Aplicação
I = Infraestrutura
n = expectativa de sucesso
R = variável aleatória
U = Usuários
6. Ferramentas
• EMON
– Linha de comando, baixo nível para obter contadores do processador e chipset
• SAR
– Ferramenta padrão do Linux
• PowerTop
– Ferramenta padrão do Linux
• Linuxpm
– Ferramenta Intel para obter métricas de potência no nível do Sistema Operacional
7. Analise do padrão de carga
• Uma semana de monitoramento de CPU
• Utilização media entre 15-35%
• O maior é entre 6hs e 18hs, sendo consumido > 25%
• Toda a noite, por aproximadamente 6hs o consumo cai abaixo de 20%
• A utilização segue um padrão durante os dias de semana e finais de semana
Segue a distribuição
normal (pela Teoria dos
grandes números)
9. Distribuição de requisição de acessos
Hits por hora Horário
5000 6:00
7000 7:00
11000 8:00
20000 9:00
29000 10:00
38000 11:00
42000 12:00
41000 13:00
38000 14:00
32000 15:00
26000 16:00
20000 17:00
15000 18:00
9000 19:00
5000 20:00
2000 21:00
Total de hits: 340000
x: 170000
média (µ): 21250.000
desvio padrão (α): 14092.551
Normal (y): 1.00000
hits/seg: 59.02778 Equação da curva de Gauss (σ = desvio padrão, µ =
média aritmética)
0
5000
10000
15000
20000
25000
30000
35000
40000
45000
Hits
por
hora
Horário
Carga no web site
10. Concorrência de acesso
Assumindo que a pior situação haja
42.000 usuários acessando o
sistema em um intervalo de 1h, não
significa que você tenha que lidar
com 11.16 requisições/seg (i.e.
42000/3600)
0.00000000
0.01000000
0.02000000
0.03000000
0.04000000
0.05000000
0.06000000
10
15
20
25
30
35
40
45
50
55
60
65
70
75
80
85
90
95
100
105
PROBABILIDADE
Distribuição de Poisson
A maior probabilidade é que se tenha
que lidar com 60 requisições
simultâneas em intervalos de 0,5 seg.
(i.e. precisão do segundo)
Distribuição de probabilidade de Poisson
11. QUIZ
• Temos um pico de 35% de utilização de
CPU com ~60 hits simultâneos (42000
usuários no intervalo de 1h)
• Podemos inferir que podemos atender
80.000 sem nenhum problema?
12. Teoria das Filas
Aplicação do LT (λ=taxa de requisição de Poisson, μ=capacidade de
processamento de requisições, p=λ/μ
14. Distribuição de Leitura/Escrita em memória
Segue a regra de Pareto (similar a maioria do serviços web):
20% escrita e 80% leitura
Leitura Escrita
15. Acesso a memória Local e Remota
Local Remoto
O que este padrão nos diz a respeito da aplicação que
está rodando em um servidor de dois sockets?
16. Revisão de NUMA em x86
CPU CPU
Alocação de blocos de
64 bytes em round-robin
NUMA é habilitado por padrão se estiver habilitado na BIOS
Porém pode ser desligado no kernel pela seguinte opção:
kernel /vmlinuz-2.6.18-128.el5 ro root=/dev/VolGroup00/LogVol00 numa=off
17. Sub-sistema de discos
Desempenho antes x depois da
controladora:
10.000 rpm – 100 / 130 IOPS
15.000 rpm – 160 / 180 IOPS
Configurações
Penalidade do RAID5
1 escrita (host-write) = 2 leituras + 2 escritas
RAID 5 – não é viável em ambientes de alto I/O
Reconstrução (depende do fabricante)
RAID 10 – Ex: 72GB em aprox. 2 horas
RAID 5 – mesmo tempo ou pequena perda (< 20%)
18. Configuração de Disco
Supondo:
• 1TB de dados
• Discos de 100 GB
• 100 I/O por segundo
RAID # discos Max escritas/seg Max leituas/seg Disponibilidade
RAID-0 10 1000 1000 Baixa
RAID-0+1 20 1000 2000 Muito Alta
RAID-5 11 275 1100 Alta
20. Estudo de Caso – Efeito Cache em Storage
Interaction
Total Elapsed write time for
cycle (sec)
Average writes per
second
Average MB per
second
1 469 341,151398 2,831823
2 460 347,82608 2,887228
3 466 343,347626 2,850054
4 467 342,612427 2,843951
5 467 342,612427 2,843951
6 462 346,320343 2,874279
7 462 346,320343 2,874279
8 456 350,877197 2,912555
9 458 349,344971 2,899836
10 457 350,109406 2,906182
Avg 462,4 346,0522218 2,8724138
Std. Dev 4,647580015 3,478041696 0,028863353
Interaction
Total Elapsed write time for
cycle (sec)
Average writes per
second
Average MB per
second
1 150 1066,666626 8,854166
2 151 1059,602661 7,9553
3 159 1006,289307 8,352987
4 157 1019,108276 8,459395
5 152 1052,631592 8,737665
6 148 1081,081055 8,973817
7 144 1111,111084 9,22309
8 154 1038,96106 8,624188
9 148 1081,081055 8,973817
10 151 1059,602661 7,9553
Avg 151,4 1057,613538 8,6109725
Std. Dev 4,427188724 30,80922367 0,429820883
Teste de
desempenho de
storage usando o
SQLIOSim.exe
30min
depois…
Saturação do
cache devido a
utilização de
RAID 5, derrubou
o desempenho de
I/O
21. Estudo de Caso – Fator HBA
Queuetarget e Queuedetph
Deve-se procurar valores ótimos para a sua apliação
22. QUIZ
• Se dobrarmos o número de núcleos de uma
máquina, dobramos a sua capacidade de
processamento?
• Porque?
23. Estudo de Caso – Web Site (paralelismo)
• Teste de desempenho em três configurações distintas de
servidores com aplicação configurada para medium pooled
usando o ACT para gerar a mesma carga, removendo o fator
latência – índices normalizados
Servidor (antigo)
8 cores
Desempenho: 1
Servidor atual 16
cores
Desempenho: 3.15
Servidor 16 cores
com virtualização
4 VMs (4vCPU por
VM)
Desempenho: 3.30