Performance tuning

  • 2,137 views
Uploaded on

Agenda …

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.

More in: Technology
  • Full Name Full Name Comment goes here.
    Are you sure you want to
    Your message goes here
    Be the first to comment
No Downloads

Views

Total Views
2,137
On Slideshare
0
From Embeds
0
Number of Embeds
1

Actions

Shares
Downloads
88
Comments
0
Likes
6

Embeds 0

No embeds

Report content

Flagged as inappropriate Flag as inappropriate
Flag as inappropriate

Select your reason for flagging this presentation as inappropriate.

Cancel
    No notes for slide

Transcript

  • 1. Red Hat Enterprise Linux Performance TuningRodrigo MissiaggiaPlatform Technical LeaderRed Hat Brasilrmissiaggia@redhat.com@rmissiaggia
  • 2. 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.
  • 3. Objetivo do “Performance Tuning”● Atingir o comportamento desejado; ● Neste caso é necessário definir o que é desejado...
  • 4. 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;
  • 5. 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;
  • 6. 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?
  • 7. 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;
  • 8. Ferramentas para Medir a Performance CPU Tools 1 – top 2 – vmstat 3 – ps aux 4 – mpstat -P all 5 – sar -u 6 – iostat 7 – oprofile 8– gnomesystem- CPU CPU monitor 9 – KDE-monitor 10 – /proc 11 - perf
  • 9. Ferramentas para Medir a Performance Disk Tools 1 – iostat -x 2 – vmstat - D 3 – sar -DEV # 4 – nfsstat 5 - dstat Storage Storage /Disco /Disco
  • 10. Ferramentas para Medir a Performance Memória Memória Memory Tools 1 – top 2 – vmstat -s 3 – ps aur 4 – ipcs 5 – sar -r -B -W 6 – free 7 – oprofile 8– gnomesystem- monitor 9 – KDE-monitor 10 – /proc
  • 11. Ferramentas para Medir a Performance Process Tools 1 – top 2 – ps -o pmem 3 – gprof Processos Processos 4– strace,ltrace 5 – sar
  • 12. Ferramentas para Medir a Performance Network Tools 1 – tcpdump 2 – wireshark 3 – netstat 4 – iptraf 5 – dstat 6 – ethtool ... Rede Rede
  • 13. Ferramentas para Medir a Performance Memória Memória Storage Storage Processos Processos CPU CPU /Disco /Disco Conjunto 1 – dstat Rede Rede 2 – sar 3 – oprofile 4 – ...
  • 14. Teoria das FilasLei de LittleDesenvolvida 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.
  • 15. Teoria das FilasUtilização = Número de requisições * Tempo de ServiçoExemplo: saída do iostat -x sda 5Device: rrqm/s   wrqm/s     r/s     w/s   rsec/s   wsec/s avgrq­sz avgqu­sz   await  svctm  %utilSda       0,00  5293,60    0,00   76,00     0,00 65598,40   863,14    54,58  905,83   7,12  54,10Utilização = (0.00 + 76.00) * 7.12 ms / 1000 ms   = 54,10%
  • 16. Teoria das FilasNúmero Máximo de Novas transações = 1 / Tempo de ServiçoExemplo: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  %utilsda       0,00 21958,40    0,00  165,20     0,00 169164,80  1024,00   129,63  711,42   6,05 100,00Número Máximo de Novas transações = 1 segundo / 6.05 ms = 165.28 IOsQualquer volume maior que este de novas requisições tende a gerar filas de espera crescentes!
  • 17. Teoria das FilasNúmero Máximo de Novas transações = 1 / Tempo de ServiçoUsuá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çoNúmero Máximo de Novas transações = 1 / Tempo de ServiçoOu diminuímos (“tunamos”) o Tempo de Serviço ( = Execução + espera” ) ou redistribuímos a carga.
  • 18. Teoria das FilasTeoria 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óciosE então se deve criar um modelo para cada camada: – Estabelecer um máximo “teórico” vs “medido” – Incongruências podem indicar problemas...
  • 19. Exemplo de Modelo de Aplicação
  • 20. Exemplo de Modelo de Hardware
  • 21. Storage / Disco IOO 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
  • 22. Storage / Disco IOComo 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 Read Write RAID 0 1 1 1 ou 10 1 2 5 1 4 6 1 6
  • 23. 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? Nível de RAID Write (TOTAL IOps × % READ)+ ((TOTAL IOps × % WRITE) ×RAID Penalty) 0 1 ((1000 * 0.5) + (1000 *0.5) * 1) = 1000 1000 / 150 = 7 IOPS discos 1 ou 10 2 ((1000 * 0.5) + (1000 *0.5) * 2) = 1500 1500 / 150 = 10 IOPS discos 5 4 ((1000 * 0.5) + (1000 *0.5) * 4) = 2500 2500 / 150 = 17 IOPS discos 6 6 ((1000 * 0.5) + (1000 *0.5) * 6) = 3500 3500 / 150 = 24 IOPS discos(900 * 50%) + (900 * 50% / 2) = 450 + 225 = 675Alguns dados: http://www.techrepublic.com/blog/datacenter/calculate-iops-in-a-storage-array/2182
  • 24. Storage / Disco IOInterface 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)
  • 25. 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: Para ler 4KB éAlinhado 4K 4K 4K 4K 4K 4K necessário ler 4KB 4K 4K 4K 4K 4K 4K 4K 4K 4K 4K Para ler 4KB éDesalinhado 4K 4K 4K 4K 4K 4K necessário ler 8KB 4K 4K 4K 4K 4K 4K 4K 4K 4K 4K
  • 26. Storage / Disco IOInterface 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
  • 27. Storage / Disco IOEscolha 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;
  • 28. Storage / Disco IOInterface 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●
  • 29. Memória O gerenciamento de memória é extremamente parametrizável. Permitindo ajustar o comportamento para condições muito particulares de uso. 
  • 30. Memória Quanta memória temos disponível?free             total       used       free     shared    buffers     cachedMem:       8086612    5222256    2864356          0     185616    2388244­/+ buffers/cache:    2648396    5438216Swap:     10190840     100224   10090616 
  • 31. 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.
  • 32. 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”;
  • 33. Memória vs Swap● Quem controla o SWAP? # cat /proc/sys/vm/swappiness 60 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
  • 34. Memória vs SwapQuanto 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...”
  • 35. Memória vs Swapswap_tendency = mapped_ratio/2 + distress + vm_swappinessMapped_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) * 100distress = 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 >> nSwappiness = “O fator humano”
  • 36. Memória vs Swapswap_tendency = mapped_ratio/2 + distress + vm_swappinessConta 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 = 60swap_tendency = 48/64*100/2 + 0 + 60swap_tendency = 37.5 + 0 + 60 = 97.5 97.5 < 100 então prefiro não usar swap...
  • 37. Memória vs CacheComo influenciar a alocação do cache:●# cat /proc/sys/vm/dirty_ratio40dirty_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_ratio10dirty_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.
  • 38. Memória vs CacheComo influenciar a alocação do cache:●# cat /proc/sys/vm/dirty_expire_centisecs2999dirty_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_centisecs499dirty_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”.
  • 39. Memória vs CacheComo influenciar a alocação do cache:●# cat /proc/sys/vm/vfs_cache_pressure100vfs_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...
  • 40. 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?
  • 41. 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 CommCommitLimit:    14234144 kBCommitted_AS:    3547652 kB
  • 42. MemóriaMelhore a performance da memória e o TLB utilizando Hugepages sempre que possível.
  • 43. 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;
  • 44. RedeEstraté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.
  • 45. Rede
  • 46. 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
  • 47. Ajuste fino de recursos Permite a realocação de 14 recursos entre processos CPUS 8 ou máquinas virtuais Sem restrição CPUS “a quente” sem paradas! de recursos. Ou 32 cores de CPU. 4 CPUS 2 CPUS
  • 48. Colhendo informaçõesSempre que abrir um chamado de suporte, adicione informações extras para oferecer subsídios para o pessoal de Suporte.Rode o comando:#sosreportAnexe o resultado no chamado de suporte.
  • 49. https://access.redhat.com/support/offerings/production/sla.html
  • 50. Agilizando a resolução deproblemas com o ABRT* * Automatic bug detection and reporting tool
  • 51. Agilizando a resolução deproblemas com o ABRT* * Automatic bug detection and reporting tool
  • 52. Encurtando Caminhos com o ABRT Seleciona-se o “travamento” da aplicação no qual se deseja abrir um Ticket de suporte.
  • 53. Encurtando Caminhos com o ABRT Seleciona-se RHTSupport para abrir um chamado na sua conta do RHN.
  • 54. Encurtando Caminhos com o ABRT Após análise das informações autorize o uso dos dados para análise.
  • 55. Encurtando Caminhos com o ABRT Adicione informações, se possível, das maneiras de reproduzir o problema.
  • 56. Encurtando Caminhos com o ABRT Verifique as informações e aprove, ou não, a abertura do chamado..
  • 57. Encurtando Caminhos com o ABRT O 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.
  • 58. Encurtando Caminhos com o ABRT Você pode editar os dados do chamado, alterar prioridades etc.
  • 59. Perguntas?11/9/10
  • 60. Ciclo de Suporte O suporte por até 10 anos per o planejamento adequado da migração de sistemas legados e preserva investimentos.https://access.redhat.com/support/policy/updates/errata/
  • 61. Escalabilidade e limites suportadoshttp://www.redhat.com/rhel/compare/
  • 62. Escalabilidade e limites suportadoshttp://www.redhat.com/rhel/compare/
  • 63. Escalabilidade e limites suportados (sob virtualização)http://www.redhat.com/rhel/compare/
  • 64. Ecossistema de Software http://www.redhat.com/rhel/compatibility/software/
  • 65. Ecossistema de Hardwarehttps://hardware.redhat.com/ Milhares de combinações de Hardware suportadas