13

Click here to load reader

Performance Tuning para o mercado financeiro

Embed Size (px)

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

Page 1: Performance Tuning para o mercado financeiro

Rodrigo MissiaggiaPlatform Technical LeaderRed Hat [email protected]@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

Page 2: Performance Tuning para o mercado financeiro

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

Page 3: Performance Tuning para o mercado financeiro

Objetivo do “Performance Tuning”

● Atingir o “comportamento desejado”. Neste caso o comportamento desejado é:

“Baixa Latência, previsibilidade na entrega dos dados e transações”

Page 4: Performance Tuning para o mercado financeiro

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.

Page 5: Performance Tuning para o mercado financeiro

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

Page 6: Performance Tuning para o mercado financeiro

Software Utilizado

http://www.quickfixengine.org/download.html

Utilizado para verificar os logs.

Page 7: Performance Tuning para o mercado financeiro

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.

Page 8: Performance Tuning para o mercado financeiro

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.

Page 9: Performance Tuning para o mercado financeiro

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.

Page 10: Performance Tuning para o mercado financeiro

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

Page 11: Performance Tuning para o mercado financeiro

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.

Page 12: Performance Tuning para o mercado financeiro

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.

Page 13: Performance Tuning para o mercado financeiro

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.