performance tuning

65
Red Hat Enterprise Linux Performance Tuning Rodrigo Missiaggia Platform Technical Leader Red Hat Brasil [email protected] @rmissiaggia

Upload: rodrigo-missiaggia

Post on 18-Nov-2014

2.590 views

Category:

Technology


0 download

DESCRIPTION

Agenda● Introdução● O que é Performance Tuning?● Só se pode “Tunar” o que se pode medir● Teoria das Filas.● Interdependência de componentes.● Componentes “Tunáveis”● Colhendo informações e acionando o porte o suporte.

TRANSCRIPT

Page 1: Performance tuning

Red Hat Enterprise Linux

Performance Tuning

Rodrigo MissiaggiaPlatform Technical LeaderRed Hat [email protected]@rmissiaggia

Page 2: Performance tuning

Agenda

● Introdução

● O que é Performance Tuning?

● Só se pode “Tunar” o que se pode medir

● Teoria das Filas.

● Interdependência de componentes.

● Componentes “Tunáveis”

● Colhendo informações e acionando o suporte o suporte.

Page 3: Performance tuning

Objetivo do “Performance Tuning”

● Atingir o comportamento desejado;● Neste caso é necessário definir o que é desejado...

Page 4: Performance tuning

Objetivo do “Performance Tuning”

● Atingir o comportamento desejado;● Neste caso é necessário definir o que é desejado...

● Compensar características físicas do Hardware balanceando:

● Menor tempo de resposta vs Alto Thoughput;● Performance percebida vs Eficiência no uso de recursos;● Redistribuir o Workload durante diferentes períodos do dia;

Page 5: Performance tuning

Objetivo do “Performance Tuning”

● Atingir o comportamento desejado;● Neste caso é necessário definir o que é desejado...

● Compensar características físicas do Hardware balanceando:

● Menor tempo de resposta vs Alto Thoughput;● Performance percebida vs Eficiência no uso de recursos;● Redistribuir o Workload durante diferentes períodos do dia;

● Encontrar e minimizar Gargalos;● Eventualmente restringindo recursos de certas aplicações;

Page 6: Performance tuning

Objetivo do “Performance Tuning”

● Atingir o comportamento desejado;● Neste caso é necessário definir o que é desejado...

● Compensar características físicas do Hardware balanceando:

● Menor tempo de resposta vs Alto Thoughput;● Performance percebida vs Eficiência no uso de recursos;● Redistribuir o Workload durante diferentes períodos do dia;

● Encontrar e minimizar Gargalos;● Eventualmente restringindo recursos de certas aplicações;

●Ajustar o sistema ao fator humano;● O que é lento, o que é rápido?

Page 7: Performance tuning

Só se pode “tunar” o que se pode medir

●É necessário medir o desempenho e tempo de resposta;

● Bandwidth (fixa) vs Throughput (dados úteis)

●Ter informações confiáveis sobre o comportamento de cada componente;

●Preferencialmente os “Workloads” devem ser reproduzíveis para medir as melhorias realizadas;

Page 8: Performance tuning

Ferramentas para Medir a Performance

CPUCPU

CPU Tools1 – top2 – vmstat3 – ps aux4 – mpstat -P all5 – sar -u6 – iostat7 – oprofile8 – gnomesystem-monitor9 – KDE-monitor10 – /proc11 - perf

Page 9: Performance tuning

Ferramentas para Medir a Performance

Storage/Disco

Storage/Disco

Disk Tools1 – iostat -x2 – vmstat - D3 – sar -DEV #4 – nfsstat5 - dstat

Page 10: Performance tuning

Ferramentas para Medir a Performance

MemóriaMemóriaMemory Tools1 – top2 – vmstat -s3 – ps aur4 – ipcs5 – sar -r -B -W6 – free7 – oprofile8 – gnomesystem-monitor9 – KDE-monitor10 – /proc

Page 11: Performance tuning

Ferramentas para Medir a Performance

Processos Processos

Process Tools1 – top2 – ps -o pmem3 – gprof4 – strace,ltrace5 – sar

Page 12: Performance tuning

Ferramentas para Medir a Performance

RedeRede

Network Tools1 – tcpdump2 – wireshark3 – netstat4 – iptraf5 – dstat6 – ethtool...

Page 13: Performance tuning

Ferramentas para Medir a Performance

MemóriaMemória

RedeRede

Processos ProcessosStorage/Disco

Storage/Disco CPUCPU

Conjunto1 – dstat2 – sar3 – oprofile4 – ...

Page 14: Performance tuning

Teoria das Filas

Lei de Little

Desenvolvida por John Little no início dos anos 60. A Lei de Little relaciona o número de clientes no sistema com o tempo médio despendido no sistema por cada um deles.

Page 15: Performance tuning

Teoria das Filas

Utilização = Número de requisições * Tempo de Serviço

Exemplo: saída do iostat -x sda 5

Device: rrqm/s   wrqm/s     r/s     w/s   rsec/s   wsec/s avgrq­sz avgqu­sz   await  svctm  %util

Sda       0,00  5293,60    0,00   76,00     0,00 65598,40   863,14    54,58  905,83   7,12  54,10

Utilização = (0.00 + 76.00) * 7.12 ms / 1000 ms   = 54,10%

Page 16: Performance tuning

Teoria das Filas

Número Máximo de Novas transações = 1 / Tempo de Serviço

Exemplo:

Utiliza-se o Tempo de Serviço quando a Utilização esta a 100%.

Device:  rrqm/s   wrqm/s     r/s     w/s   rsec/s   wsec/s avgrq­sz avgqu­sz   await  svctm  %util

sda       0,00 21958,40    0,00  165,20     0,00 169164,80  1024,00   129,63  711,42   6,05 100,00

Número Máximo de Novas transações = 1 segundo / 6.05 ms = 165.28 IOs

Qualquer volume maior que este de novas requisições tende a gerar filas de espera crescentes!

Page 17: Performance tuning

Teoria das Filas

Número Máximo de Novas transações = 1 / Tempo de Serviço

Usuário diz: “O SISTEMA ESTA LENTO!!!!”

Leis de Little (e limites físicos também)

Utilização = Número de requisições * Tempo de Serviço

Número Máximo de Novas transações = 1 / Tempo de Serviço

Ou diminuímos (“tunamos”) o Tempo de Serviço ( = Execução + espera” )ou redistribuímos a carga.

Page 18: Performance tuning

Teoria das Filas

Teoria das filas e a Lei de Little afetam todas as aplicações e Subsistemas Participantes.

– Escrita em disco envolve RAM, CPU, spindle, BUS, controladoras e sistema de arquivos.

O mais eficiente é pensarmos em camadas;– Infra-estrutura, Hardware, SO, Aplicação, Negócios

E então se deve criar um modelo para cada camada:– Estabelecer um máximo “teórico” vs “medido”– Incongruências podem indicar problemas...

Page 19: Performance tuning

Exemplo de Modelo de Aplicação

Page 20: Performance tuning

Exemplo de Modelo de Hardware

Page 21: Performance tuning

Storage / Disco IO

O Disco é, normalmente, um equipamento com peças móveis e esta sujeito, a maiores latências e limitações de crescimentos.

Cálculo de IOPs de um disco rígido:

Model: XXX SAS

Rotational speed: 10,000 RPM

Average latency: 4 ms (0.004 seconds)

Average seek time: 4.2 (r)/4.7 (w) = 4.45 ms (0.0045 seconds)

Número de IOPs calculado para este disco: 1/(0.004 + 0.0045) = ~ 117 IOPS

Page 22: Performance tuning

Storage / Disco IO

Como melhorar a performance de um “Disco”?

Podemos redistribuir a carga ou trocá-los..

Método comum, criação de RAID:

Impacto do uso de RAID no I/o

Níveo de RAID

Read Write

0 1 1

1 ou 10 1 2

5 1 4

6 1 6

Page 23: Performance tuning

Storage / Disco IO

Caso: Necessito de 1000 IOPs por segundo para a aplicação X. Sendo 50% leitura e 50% escrita. Quantos discos preciso para cada nível de RAID?

Alguns dados: http://www.techrepublic.com/blog/datacenter/calculate-iops-in-a-storage-array/2182

(900 * 50%) + (900 * 50% / 2) = 450 + 225 = 675

Nível de RAID Write (TOTAL IOps × % READ)+ ((TOTAL IOps × % WRITE) ×RAID Penalty)

0 1 ((1000 * 0.5) + (1000 *0.5) * 1) = 1000 IOPS

1000 / 150 = 7 discos

1 ou 10 2 ((1000 * 0.5) + (1000 *0.5) * 2) = 1500 IOPS

1500 / 150 = 10discos

5 4 ((1000 * 0.5) + (1000 *0.5) * 4) = 2500 IOPS

2500 / 150 = 17 discos

6 6 ((1000 * 0.5) + (1000 *0.5) * 6) = 3500 IOPS

3500 / 150 = 24discos

Page 24: Performance tuning

Storage / Disco IO●Interface de Interconexão

● SATA até 300MiB/s● SCSI até 320MiB/s● Fibre Channel até 256MiB/s (4Gib/s)● Fibre Channel até 512MiB/s (8Gib/s)

Page 25: Performance tuning

Storage / Disco IO●Interface de Interconexão;

●Tamanho, distribuição e alinhamento de Disco;● Nível de RAID;● Formatação correta em relação ao blocos físicos do

disco:

4K 4K 4K 4K 4K 4K 4K 4K 4K 4K

4K 4K 4K 4K 4K 4KAlinhado

4K 4K 4K 4K 4K 4K 4K 4K 4K 4K

4K 4K 4K 4K 4K 4KDesalinhado

Para ler 4KB é necessário ler 8KB

Para ler 4KB é necessário ler 4KB

Page 26: Performance tuning

Storage / Disco IO●Interface de Interconexão;

●Tamanho, distribuição e alinhamento de Disco;

●Parametrização dos discos;

●Scheduler de Disco;● CFQ -. Divide o IO igualmente por processo

● Deadline – Otimiza os tempos de leitura e escrita das filas. Requisições devem ser atendidas quando o tempo de expiração é atingido

● NOOP – Filas do tipo FIFO

Page 27: Performance tuning

Storage / Disco IO

●Escolha correta de Filesystem;

●Tipos, tamanho e localização de Journal;

●Opções de montagem de Filesystem;● Ext3 = Mais maduro;● Ext4 = Melhor performance na maioria dos casos em

relação ao Ext3;● XFS = Melhor para grandes arquivos, tem problemas

com pequenos;● GFS/GFS2 = Sistema de arquivos para Cluster.

Melhor para grandes arquivos;● NFSv2,3,4 = Multi-plataforma, via rede, necessita um

filesystem para oferecer os arquivos;

Page 28: Performance tuning

Storage / Disco IO●Interface de Interconexão;

●Tamanho, distribuição e alinhamento de Disco;

●Parametrização dos discos;

●Scheduler de Disco;

●Escolha correta de Filesystem;

●Tipos, tamanho e localização de Journal;

●Opções de montagem de Filesystem;

●Fragmentação;

●Tuning de Buffer e Caches

Page 29: Performance tuning

Memória

O gerenciamento de memória é extremamente parametrizável. Permitindo ajustar o comportamento para condições muito particulares de uso.

 

Page 30: Performance tuning

Memória

Quanta memória temos disponível?

free             total       used       free     shared    buffers     cached

Mem:       8086612    5222256    2864356          0     185616    2388244

­/+ buffers/cache:    2648396    5438216

Swap:     10190840     100224   10090616

 

Page 31: Performance tuning

Memória e áreas de “Defesa”

● Quanto devo manter de memória livre? # cat /proc/sys/vm/min_free_kbytes 67584

Definido em Kbytes, procura definir uma marca d'água de quanta memória RAM deve ser mantida livre. A partir dai busca encontrar memória de maneira agressiva.

Page 32: Performance tuning

Memória vs Swap

● A memória RAM tende a ser 40000 vezes mais rápida que o SWAP (ms vs ns);

● Para melhor performance crie partições de SWAP distribuídos em vários discos, preferencialmente no início do disco, e com prioridades idênticas (quando os discos tiverem a mesma performance;

● O VM (Virtual Memory) pode ser parametrizada para utilizar SWAP com + ou – agressividade por default o sistema vem configurado para “uso geral”;

Page 33: Performance tuning

Memória vs Swap

● Quem controla o SWAP? # cat /proc/sys/vm/swappiness 60Quanto mais perto de 100 maior é a predisposição

a usar SWAP, quanto mais perto de 0 menor é a predisposição.

swap_tendency = mapped_ratio/2 + distress + vm_swappiness

Page 34: Performance tuning

Memória vs Swap

●Quanto mais perto de 100 maior é a predisposição a usar SWAP, quanto mais perto de 0 menor é a predisposição.

swap_tendency = mapped_ratio/2 + distress + vm_swappiness

Se “swap_tendency > 100” então “Tente reclamar página des memória inativas e utilize swap

se necessário...”

Senão “Libere páginas de cache/buffer...”

Page 35: Performance tuning

Memória vs Swap

swap_tendency = mapped_ratio/2 + distress + vm_swappiness

Mapped_ratio = quantos % da memória alocados?This is a measure of the percentage of total system memory that is taken up with mapped pages. It is computed

as (numbermappedpages)/(totalpages) * 100

distress = O quão difícil é recuperar memória em cache?

This is a measurement of how much difficulty the VM is having reclaiming pages. Each time the VM tries to reclaim memory, it scans 1/nth of the inactive lists in each zone in an effort to reclaim pages. Each time a pass over the list is made, if the number of inactive clean + free pages in that zone is not over the low water mark, n is decreased by one. Distress is measured as 100 >> n

Swappiness = “O fator humano”

Page 36: Performance tuning

Memória vs Swap

swap_tendency = mapped_ratio/2 + distress + vm_swappiness

Conta de padeiro:

Minha máquina tem 64GB de RAM e estou alocando 48GB. Está fácil recuperar memória de cache (distress = 0) e swappiness = 60

swap_tendency = 48/64*100/2 + 0 + 60

swap_tendency = 37.5 + 0 + 60 = 97.5

97.5 < 100 então prefiro não usar swap...

Page 37: Performance tuning

Memória vs Cache

●Como influenciar a alocação do cache:

# cat /proc/sys/vm/dirty_ratio

40 dirty_ratio = indica que quando o sistema tiver mais do que 40% da memória alocada para dados que devem

ser escritos em disco (páginas “sujas”), qualquer processo que faça uma nova escrita em disco vai esperar que o sistema termine de escrever as páginas pendentes.

# cat /proc/sys/vm/dirty_background_ratio

10 dirty_background_ratio = 10 faz com que o sistema comece a escrever em segundo plano as páginas “sujas”

assim que estas passem de 10% da memória. Desta forma se obtém mais rapidamente memória que pode ser realocada para outros processos ou liberada.

Page 38: Performance tuning

Memória vs Cache

●Como influenciar a alocação do cache:

# cat /proc/sys/vm/dirty_expire_centisecs

2999dirty_expire_centisecs = indica quantos centésimos de segundo uma informação poderá ficar em cache sem ser

persistida em disco. 2999 = 29,99 segundos.

# cat /proc/sys/vm/dirty_writeback_centisecs

499 dirty_writeback_centisecs = indica a cada quantos centésimos de segundo os daemons de pdflush “acordam”

para analisar páginas não escritas em disco com idade maior que “distry_expire_centisecs”.

Page 39: Performance tuning

Memória vs Cache

●Como influenciar a alocação do cache:

# cat /proc/sys/vm/vfs_cache_pressure

100 vfs_cache_pressure = faz com que o sistema também libere memória alocada para informações de inodes e

directory entries quando precisar liberar memória. Valores maiores que 100 liberam memória mais facilmente...

Page 40: Performance tuning

Memória

● Também podem ser ajustados, tamanhos de caches diversos do sistema para resoluções de tabela ARP, número de conexões de rede suportadas, slabcache (cache de inodes, entradas de diretório, …)

Pergunta: Quanta memória eu preciso ter no meu servidor para garantir que, com o Workload atual, eu terei 99,999% de chance de não exaurir a memória?

Page 41: Performance tuning

Memória

● Também podem ser ajustados, tamanhos de caches diversos do sistema para resoluções de tabela ARP, número de conexões de rede suportadas, slabcache (cache de inodes, entradas de diretório, …)

Pergunta: Quanta memória eu preciso ter no meu servidor para garantir que, com o Workload atual, eu terei 99,999% de chance de não exaurir a memória?

Resposta:

# cat /proc/meminfo | grep Comm

CommitLimit:    14234144 kB

Committed_AS:    3547652 kB

Page 42: Performance tuning

Memória

Melhore a performance da memória e o TLB utilizando Hugepages sempre que possível.

Page 43: Performance tuning

CPU

● Ajustar o Scheduler de CPU para perfomance ou on-demand;

● Utilizar o comando “taskset” para “pinar” um processo/tarefa a um conjunto de CPUs

● Isolar CPUs do sistema indicando quais podem ser usadas para tarefas do SO e quais serão reservadas para aplicações;

● Habilitar a IRQ affinity, fazendo com que as IRQs seja processadas num conjunto de CPUs e aproveita consistência de cache;

Page 44: Performance tuning

Rede

●Estratégias para melhorar a performance;

●Evitar autonegociação de rede;

●Utilizar técnicas de bonding – agregação de link;

●Ajustar tamanhos de buffer de envio e recebimento de rede baseados na latência da rede.

Page 45: Performance tuning

Rede

Page 46: Performance tuning

Ajuste fino de recursosGerenciamento de recursos

Possibilidade de priorizar recursos entre diferentes usuários e processos via Control Groups (Cgroups).

Benefício: Garantir Qualidade de Serviço

Cgroups Pode ser usado para controlar: cpu memória rede

Page 47: Performance tuning

Ajuste fino de recursos

Sem restriçãode recursos.

Ou 32 cores de CPU.

2 CPUS

4 CPUS

8 CPUS

14 CPUS

Permite a realocação de recursos entre processos

ou máquinas virtuais “a quente” sem paradas!

Page 48: Performance tuning

Colhendo informações

Sempre que abrir um chamado de suporte, adicione informações extras para oferecer subsídios para o pessoal de Suporte.

Rode o comando:

#sosreport

Anexe o resultado no chamado de suporte.

Page 49: Performance tuning

https://access.redhat.com/support/offerings/production/sla.html

Page 50: Performance tuning

Agilizando a resolução de problemas com o ABRT*

* Automatic bug detection and reporting tool

Page 51: Performance tuning

* Automatic bug detection and reporting tool

Agilizando a resolução de problemas com o ABRT*

Page 52: Performance tuning

Encurtando Caminhos com o ABRT

Seleciona-se o “travamento” da aplicação no qual

se deseja abrir um Ticket de suporte.

Page 53: Performance tuning

Encurtando Caminhos com o ABRT

Seleciona-se RHTSupportpara abrir um chamado na sua

conta do RHN.

Page 54: Performance tuning

Encurtando Caminhos com o ABRT

Após análise das informaçõesautorize o uso dos dados para

análise.

Page 55: Performance tuning

Encurtando Caminhos com o ABRT

Adicione informações, se possível,das maneiras de reproduzir

o problema.

Page 56: Performance tuning

Encurtando Caminhos com o ABRT

Verifique as informações e aprove, ou não, a abertura

do chamado..

Page 57: Performance tuning

Encurtando Caminhos com o ABRTO chamado será aberto automaticamente e os

dados do backtrace serão anexados ao chamado.

O link para o chamado será disponibilizado a seguir e você receberá dados a respeito dele

no seu email.

Page 58: Performance tuning

Encurtando Caminhos com o ABRTVocê pode editar os dados do

chamado, alterar prioridades etc.

Page 59: Performance tuning

Perguntas?

11/9/10

Page 60: Performance tuning

Ciclo de Suporte

https://access.redhat.com/support/policy/updates/errata/

O suporte por até 10 anos per o planejamento adequado da migração de sistemas legados e preserva investimentos.

Page 61: Performance tuning

http://www.redhat.com/rhel/compare/

Escalabilidade e limites suportados

Page 62: Performance tuning

http://www.redhat.com/rhel/compare/

Escalabilidade e limites suportados

Page 63: Performance tuning

http://www.redhat.com/rhel/compare/

Escalabilidade e limites suportados(sob virtualização)

Page 64: Performance tuning

Ecossistema de Software

http://www.redhat.com/rhel/compatibility/software/

Page 65: Performance tuning

Ecossistema de Hardware

Milhares de combinações de Hardware suportadas

https://hardware.redhat.com/