Cenário: computador SOLDIER em loopback
Protocolo | 10 | 100 | 1000 | 10000 |
---|---|---|---|---|
Unix | 8900 | 93870 | 718602 | 2452172 |
UnixM | 4980 | 43640 | 218084 | 438726 |
TCP | 11644 | 115320 | 643522 | 1030614 |
TCPM | 1802 | 16030 | 128220 | 265872 |
SCTP | 1384 | 15842 | 108626 | 228040 |
SCTP estilo UDP | 1334 | 15584 | 109066 | 228040 |
SCTP estilo UDP v.2 | 1344 | 13160 | 98902 | 282236 |
Tamanho da mensagem em bytes, vazões em kbps (1kbps = 1000 bits/s).
O desempenho do TCP é muito maior que SCTP, o que não é uma surpresa, pois SCTP tem muito mais overhead: separação de mensagens, CRC-32c, cópias memória-memória para processamento, duas trocas de contexto por mensagem.
Porém quando se usa TCPM e UNIXM, o desempenho de ambos fica muito parecido com SCTP. A separação de mensagens tem um peso surpreendentemente alto.
Os testes com soquetes UNIX foram incluídos apenas por completeza. Interessante notar que o TCP é mais rápido que soquete UNIX para pequenas mensagens!
Um teste não mostrado nesta tabela é o SCTP sem checksum CRC-32c. Normalmente reputado como grande responsável pelo desempenho inferior do SCTP, o desligamento do CRC-32c melhora a vazão em apenas 10-15%.
Protocolo | 10 | 100 | 1000 | 10000 |
---|---|---|---|---|
UnixM | 18,5 | 18,5 | 27,0 | 104,0 |
TCPM | 26,5 | 28,5 | 34,0 | 112,5 |
SCTP | 52,0 | 52,5 | 72,5 | 265,5 |
SCTP estilo UDP | 52,5 | 54,5 | 73,5 | 267,0 |
SCTP estilo UDP v.2 | 52,0 | 55,5 | 75,0 | 266,0 |
Tamanho da mensagem em bytes, latência em µs
Com as diversas latências serializadas, o SCTP foi duas vezes mais lento que o TCPM. A biblioteca lksctp-tools não tem culpa nenhuma do problema; a latência adicional reside mesmo no kernel.
O uso de API estilo TCP ou UDP não influencia sensivelmente na performance do SCTP.
Foram utilizadas mensagens de 100 bytes de tamanho. Como mostram os gráficos, vazão e latência são os mesmos independentemente do número de fluxos utilizados na associação SCTP.