One of the important metrics of a FIX engine is the tick-to-trade latency. In order to estimate the tick-to-trade latency we use a ping-pong benchmark and measure the response time distribution. That is, the client sends NewOrderSingle messages at an approximately constant rate, and the server sends an acknowledgement. We collect the response time, that is is the time interval between sending the message and receiving the reply measured on the client side. Both the client and the server used in the benchmark are FIX Antenna based applications with engine configurations tuned for minimizing delays both in the TCP/IP stack and FIX Antenna itself. Also we use kernel bypass TCP/IP stack with an appropriate network card.
Benchmark results (FIX Antenna C++ 2.26.0_288)
- The response time is extremely sensitive to hardware used, operating system configuration, background load.
In particular the median response time varies from run to run by approximately +/- 1.4% (even when running on a carefully tuned system), as the above plot illustrates.
- Also FIX Antenna runs on general purpose operating systems with common/default C++ runtimes, thus the arbitrary large response times are possible. However such delays are very rare, as the following plot illustrates (for convenience log-log scale is used). For instance, response time longer than 85 microseconds happen once per 1000 messages, and response time longer than 180 microseconds happen once per 10000 messages.