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 6 - A Plataforma que transforma "Features" em Benefí...
Performance Quickfix RHEL
1. 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.
Performance Tuning para aplicação
desenvolvida em Quickfix:
RHEL 5.6 vs RHEL 5.6 + MRG
Junho de 2011
Red Hat Enterprise Linux
5.6 padrão
Red Hat Enterprise Linux
5.6 + Add-on Realtime
da Red Hat
Rodrigo Missiaggia
Platform Technical Leader
Red Hat Brasil
rmissiaggia@redhat.com
@rmissiaggia
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 “Performance Tuning”
Atingir o “comportamento desejado”. Neste caso
o comportamento desejado é:
●
“Baixa Latência, previsibilidade na
entrega dos dados e transações”
4. Ambiente de Testes
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.
Colocation
Servidor Cliente
(algoritmo)
1 Gbits/s
Controle de Risco
(regras de
negociação)
1 Gbits/s
R710
2 x x5570
24GB de RAM
R910
4 x E7540
128 GB de RAM
5. 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
Simulação de +894000 regras
de compra, venda,
cancelamento de negociação etc
http://www.quickfixengine.org/download.html
7. Configuração do Software
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.
Colocation
Servidor Cliente
(algoritmo)
1 Gbits/s
Controle de Risco
(regras de
negociação)
1 Gbits/s
R710
2 x x5570
24GB de RAM
RHEL 5.6
Initiator
R910
4 x E7540
128 GB de RAM
RHEL 6.
Acceptor
8. Initiator – RHEL 5.6 sem Tuning
2743
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
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.
6
15
0,8883%
1149
16
1,2252%
Tempo total de execução → 93,779 segundos
9. 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%
Cada + no gráfico representa 1ms no tempo.
65006 medições no gráfico.
Ajustes utilizados apresentados
no final da apresentação.
Tempo total de execução → 65,006 segundos
11. Latência de Hardware Medida
durante o Teste com MRG
Latência média de 1.672 us
(microsegundos) ou seja,
inferior a 2 us
Durante a execução
dos testes.
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.
12. Resumo
-32%
Sem Tuning
Com Tuning + MRG
Tempo total de execução → 93,779 segundos
Tempo total de execução → 63,731 segundos
Se arbitrarmos que o desempenho (SLA)
esperada é igual ou superior
a 10 transações po Milissegundo
os ganhos são evidentes.
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%
13. Resumo
-2%
Com Tuning + Sem MRG
Com Tuning + MRG
Tempo total de execução → 65,006 segundos Tempo total de execução → 63,731 segundos
Se arbitrarmos que o
desempenho (SLA)
esperada é igual ou
superior a 10 transações
po Milissegundo os
ganhos são evidentes.
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%
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%