Insights : OnixS

OnixS CME iLink 3 SDK with SolarflareTM TCPDirect ultra-low Latency Network Stack

Written by Admin | Oct 7, 2020 12:00:00 PM

The OnixS directConnect: CME iLink 3 Binary Order Entry Handler SDK now supports the SolarflareTM TCPDirect ultra-low latency network stack API to ensure the lowest possible latency and minimal jitter.

Understanding Performance Benchmarks

So what does this mean in terms of comparative performance? What benchmark performance can we expect between three different approaches of:

  • native sockets,
  • using just the SolarflareTM OpenOnload network stack,
  • and using the specific features of the SolarflareTM TCPDirect API?

First, it is important to note that all OnixS direct market access SDKs, including the OnixS directConnect: CME iLink 3 Binary Order Entry Handler SDK discussed here, include reference implementation source code samples.

These are intended as fast-start reference codes for developers to review, run and adapt to the specific target deployment context. These samples include reference implementation samples include Getting Started samples for connectivity, order entry, storage persistence, SBE Decoding, session scheduling, thread pools, trading clients, and general and TCPDirect specific benchmarks.

We provide the reference implementation benchmark source code samples to encourage firms to execute the benchmarks on the target platforms near the target production deployment context. This provides real benchmark profile results rather than opaque vendor numbers.

As an example, when executing the three scenarios above, representative benchmark profiles are presented as below:

Native sockets:

Handler Receive min: 34 median: 65 99th percentile: 84
Handler Send min: 44 median: 46 99th percentile: 60
Handler Send+Receive min: 81 median: 112 99th percentile: 132
OS + Handler Send (depends on the network card, kernel bypass software, OS load)
  min: 1782 median: 1945 99th percentile: 3639
One-Way (Round-Trip/2) min: 3327 median: 4131 99th percentile: 4921

onload --profile=latency:

Handler Receive min: 30 median: 37 99th percentile: 73
Handler Send min: 44 median: 46 99th percentile: 62
Handler Send+Receive min: 76 median: 84 99th percentile: 124
OS + Handler Send (depends on the network card, kernel bypass software, OS load)
  min: 454 median: 571 99th percentile: 693
One-Way (Round-Trip/2) min: 2127 median: 2189 99th percentile: 2643

TCPDirect:

Handler Receive min: 21 median: 23 99th percentile: 34
Handler Send min: 44 median: 46 99th percentile: 56
Handler Send+Receive min: 66 median: 69 99th percentile: 82
OS + Handler Send (depends on the network card, kernel bypass software, OS load)
  min: 198 median: 203 99th percentile: 297
One-Way (Round-Trip/2) min: 1804 median: 1954 99th percentile: 2180

All latencies here are shown in nanoseconds.

The reference environment used for the above was:

  • Version:
    OnixS directConnect: CME iLink 3 Binary Order Entry Handler SDK C++ implementation version 1.10.0
  • Hardware:
    Intel i7-7700K@5GHz, Solarflare Flareon Ultra SFN8542-Plus Server Adapter
  • Software:
    Ubuntu 18.04, gcc 7.5.0

Clear Latency Performance Improvements

The numbers speak for themselves with latency performance showing incremental improvements across the 3 scenarios, and the variance band for the TCPDirect 99th percentile results being much narrower – i.e. less jitter and more deterministic.

To reiterate, these are executions of the OnixS standard benchmark samples for informational comparison. If you’ve read this far, then we’d suggest that you have a closer look and try them yourself.

For more technical information on the OnixS directConnect: CME iLink 3 Binary Order Entry Handler SDK – and the SolarflareTM Onload and TCPDirect features – refer to the OnixS directConnect: CME iLink 3 Binary Order Entry Handler SDK Programming Guide.

Request Evaluation Access

To request a free evaluation of the OnixS directConnect: CME iLink 3 Binary Order Entry Handler SDK to support CME Globex iLink 3 and the BrokerTec migration to CME Globex, register to download an evaluation SDK.