Rodrigo Missiaggia
Platform Technical Leader
Red Hat Brasil
rmissiaggia@redhat.com
@rmissiaggia
Performance Tuning para aplicação
desenvolvida em Quickfix:
RHEL 5.6 vs RHEL 5.6 + MRG
Junho de 2011
Apresentação
● Objetivo do “Performance Tuning”
● Ambiente de Testes
● Software Utilizado
● Configuração do Software
● Latência medida do Hardware Dell R710
● Resumo dos Ganhos Obtidos
Objetivo do “Performance Tuning”
● Atingir o “comportamento desejado”. Neste caso
o comportamento desejado é:
“Baixa Latência, previsibilidade na
entrega dos dados e transações”
Ambiente de Testes
Servidor Cliente
(algoritmo)
Controle de Risco
(regras de
negociação)
1 Gbits/s
1 Gbits/s
Colocation R710
2 x x5570
24GB de RAM
R910
4 x E7540
128 GB de RAM
Software Utilizado
●Aplicação em C++ → “tradeclient” (desenvolvida com
Quickfix 1.3.3 e Fix versão 4.2)
● Simulando a execução de +894000 transações
http://www.quickfixengine.org/download.html
Software Utilizado
http://www.quickfixengine.org/download.html
Configuração do Software
Servidor Cliente
(algoritmo)
Controle de Risco
(regras de
negociação)
1 Gbits/s
1 Gbits/s
Colocation
R710
2 x x5570
24GB de RAM
RHEL 5.6
Initiator
R910
4 x E7540
128 GB de RAM
RHEL 6.
Acceptor
Initiator – RHEL 5.6 sem Tuning
2743 6 2,9250%
6078 7 6,4812%
11041 8 11,7734%
17948 9 19,1386%
23495 10 25,0536%
17698 11 18,8720%
7360 12 7,8482%
2637 13 2,8119%
817 14 0,8712%
833 15 0,8883%
1149 16 1,2252%
Tempo total de execução → 93,779 segundos
Initiator – RHEL 5.6 ajustando
3 7 0,0046%
1 8 0,0015%
4 9 0,0062%
4 10 0,0062%
6 11 0,0092%
235 12 0,3615%
12609 13 19,3967%
35453 14 54,5380%
13454 15 20,6966%
947 16 1,4568%
130 17 0,2000%
Tempo total de execução → 65,006 segundos
Initiator – RHEL 5.6 + Realtime
Tempo total de execução → 63,731 segundos
9663 13 15,1622%
30269 14 47,4949%
14982 15 23,5082%
5360 16 8,4103%
1151 17 1,8060%
361 18 0,5664%
629 19 0,9870%
712 20 1,1172%
439 21 0,6888%
113 22 0,1773%
15 23 0,0235%
1 24 0,0016%Ajustes de Bios no Hardware + Numactl +
tunnings diversos + Realtime
Latência de Hardware Medida
durante o Teste com MRG
Medição de latência utilizando o comando →
cyclictest -t1 -n -p99 -v | oscilloscope -s1000 >/dev/null
Obs: sem o Kernel Realtime
Não é possível medir a latência
com esta precisão.
Latência média de 1.672 us
(microsegundos) ou seja,
inferior a 2 us
Durante a execução
dos testes.
Resumo
1-9 transações por Ms 41,49%
10-15 trasações por Ms 56,35%
16-26 transações por Ms 2,17%
100,00%
1-9 transações por Ms 0,000031%
10-15 trasações por Ms 86,22%
16-26 transações por Ms 13,78%
100,00%
Sem Tuning
Tempo total de execução → 93,779 segundos
Com Tuning + MRG
Tempo total de execução → 63,731 segundos
-32%
Resumo
1-9 transações por Ms 0,000031%
10-15 trasações por Ms 86,22%
16-26 transações por Ms 13,78%
100,00%
Com Tuning + MRG
Tempo total de execução → 63,731 segundos
1-9 transações por Ms 0,03%
10-15 trasações por Ms 96,46%
16-26 transações por Ms 3,51%
100,00%
Com Tuning + Sem MRG
Tempo total de execução → 65,006 segundos
-2%

Teste de performance mrg realtime

  • 1.
    Rodrigo Missiaggia Platform TechnicalLeader Red Hat Brasil rmissiaggia@redhat.com @rmissiaggia Performance Tuning para aplicação desenvolvida em Quickfix: RHEL 5.6 vs RHEL 5.6 + MRG Junho de 2011
  • 2.
    Apresentação ● Objetivo do“Performance Tuning” ● Ambiente de Testes ● Software Utilizado ● Configuração do Software ● Latência medida do Hardware Dell R710 ● Resumo dos Ganhos Obtidos
  • 3.
    Objetivo do “PerformanceTuning” ● Atingir o “comportamento desejado”. Neste caso o comportamento desejado é: “Baixa Latência, previsibilidade na entrega dos dados e transações”
  • 4.
    Ambiente de Testes ServidorCliente (algoritmo) Controle de Risco (regras de negociação) 1 Gbits/s 1 Gbits/s Colocation R710 2 x x5570 24GB de RAM R910 4 x E7540 128 GB de RAM
  • 5.
    Software Utilizado ●Aplicação emC++ → “tradeclient” (desenvolvida com Quickfix 1.3.3 e Fix versão 4.2) ● Simulando a execução de +894000 transações http://www.quickfixengine.org/download.html
  • 6.
  • 7.
    Configuração do Software ServidorCliente (algoritmo) Controle de Risco (regras de negociação) 1 Gbits/s 1 Gbits/s Colocation R710 2 x x5570 24GB de RAM RHEL 5.6 Initiator R910 4 x E7540 128 GB de RAM RHEL 6. Acceptor
  • 8.
    Initiator – RHEL5.6 sem Tuning 2743 6 2,9250% 6078 7 6,4812% 11041 8 11,7734% 17948 9 19,1386% 23495 10 25,0536% 17698 11 18,8720% 7360 12 7,8482% 2637 13 2,8119% 817 14 0,8712% 833 15 0,8883% 1149 16 1,2252% Tempo total de execução → 93,779 segundos
  • 9.
    Initiator – RHEL5.6 ajustando 3 7 0,0046% 1 8 0,0015% 4 9 0,0062% 4 10 0,0062% 6 11 0,0092% 235 12 0,3615% 12609 13 19,3967% 35453 14 54,5380% 13454 15 20,6966% 947 16 1,4568% 130 17 0,2000% Tempo total de execução → 65,006 segundos
  • 10.
    Initiator – RHEL5.6 + Realtime Tempo total de execução → 63,731 segundos 9663 13 15,1622% 30269 14 47,4949% 14982 15 23,5082% 5360 16 8,4103% 1151 17 1,8060% 361 18 0,5664% 629 19 0,9870% 712 20 1,1172% 439 21 0,6888% 113 22 0,1773% 15 23 0,0235% 1 24 0,0016%Ajustes de Bios no Hardware + Numactl + tunnings diversos + Realtime
  • 11.
    Latência de HardwareMedida durante o Teste com MRG Medição de latência utilizando o comando → cyclictest -t1 -n -p99 -v | oscilloscope -s1000 >/dev/null Obs: sem o Kernel Realtime Não é possível medir a latência com esta precisão. Latência média de 1.672 us (microsegundos) ou seja, inferior a 2 us Durante a execução dos testes.
  • 12.
    Resumo 1-9 transações porMs 41,49% 10-15 trasações por Ms 56,35% 16-26 transações por Ms 2,17% 100,00% 1-9 transações por Ms 0,000031% 10-15 trasações por Ms 86,22% 16-26 transações por Ms 13,78% 100,00% Sem Tuning Tempo total de execução → 93,779 segundos Com Tuning + MRG Tempo total de execução → 63,731 segundos -32%
  • 13.
    Resumo 1-9 transações porMs 0,000031% 10-15 trasações por Ms 86,22% 16-26 transações por Ms 13,78% 100,00% Com Tuning + MRG Tempo total de execução → 63,731 segundos 1-9 transações por Ms 0,03% 10-15 trasações por Ms 96,46% 16-26 transações por Ms 3,51% 100,00% Com Tuning + Sem MRG Tempo total de execução → 65,006 segundos -2%