View
245
Download
2
Category
Preview:
DESCRIPTION
Quickfix é uma implementação livre, opensource, do protocolo Fix, utilizado no mercado financeiro. O objetivo desta apresentação é mostrar ganhos de performance e competitivos. Afinal, no mercado financeiro “ns” e “ms” fazem toda diferença.
Citation preview
Rodrigo MissiaggiaPlatform Technical LeaderRed Hat Brasilrmissiaggia@redhat.com@rmissiaggia
Performance Tuning para aplicação desenvolvida em Quickfix:
RHEL 5.6 vs RHEL 5.6 + MRG
Junho de 2011
Quickfix é uma implementação livre, opensource, do protocolo Fix, utilizado no mercado financeiro.
O objetivo desta apresentação é mostrar ganhos de performance e competitivos.
Afinal, no mercado financeiro “ns” e “ms” fazem toda diferença.
Red Hat Enterprise Linux 5.6 padrão Red Hat Enterprise Linux
5.6 + Add-on Realtime da Red Hat
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 R7102 x x5570
24GB de RAM
R9104 x E7540
128 GB de RAM
O ambiente de testes, simula o ambiente de Colocation
encontrado em uma bolsa de valores.
Onde, o cliente tem acesso apenas ao Servidor Cliente,
que roda suas regras de negociação.
E não tem acesso ao servidor de controle de risco, responsável
pelo compliance, auditoria etc.
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
Simulação de +894000 regras de compra, venda,
cancelamento de negociação etc
Software Utilizado
http://www.quickfixengine.org/download.html
Utilizado para verificar os logs.
Configuração do Software
Servidor Cliente(algoritmo)
Controle de Risco(regras de
negociação)
1 Gbits/s
1 Gbits/s
Colocation
R7102 x x5570
24GB de RAMRHEL 5.6
Initiator
R9104 x E7540
128 GB de RAMRHEL 6.
Acceptor
O ambiente de testes, simula o ambiente de Colocation
encontrado em uma bolsa de valores.
Onde, o cliente tem acesso apenas ao Servidor Cliente,
que roda suas regras de negociação.
E não tem acesso ao servidor de controle de risco, responsável
pelo compliance, auditoria etc.
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
Cada + no gráfico representa 1ms no tempo. Existem 93779 medições neste gráfico. Cada medição informa, por exemplo,
que num dado milissegundo foram executadas 9 transações.
Initiator – RHEL 5.6 ajustando3 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
Cada + no gráfico representa 1ms no tempo. 65006 medições no gráfico.
Ajustes utilizados apresentados no final da apresentação.
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 + Add-on 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 RealtimeNã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 TuningTempo total de execução → 93,779 segundos
Com Tuning + MRGTempo total de execução → 63,731 segundos
-32%
Se arbitrarmos que o desempenho (SLA) esperada é igual ou superior
a 10 transações po Milissegundo os ganhos são evidentes.
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 + MRGTempo 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 MRGTempo total de execução → 65,006 segundos
-2%
Se arbitrarmos que o desempenho (SLA)
esperada é igual ou superior a 10 transações
po Milissegundo os ganhos são evidentes.
Recommended