Versions Compared

Key

  • This line was added.
  • This line was removed.
  • Formatting was changed.

Approach

Benchmarks were run against two different versions of FIX Antenna C++ (2.31.0 and 2.30.0), and the results were compared in order to detect possible regressions.

The following builds were tested:

  • FIX Antenna C++ 2.30.0_580
  • FIX Antenna C++ 6.31.0_595

Hardware

FIX Antenna Machine

  • Intel(R) Xeon(R) CPU E5-2687 v3 @ 3.10GHz (2 CPU Hyper-Trading Enabled, 20 Cores)
  • RAM 128 GB, 2133 MHz
  • NIC Solarflare Communications SFC9120 (Firmware-version: 4.2.2.1003 rx1 tx1)
  • Linux (CentOS 7.0.1406 kernel 3.10.0-123.el7.x86_64)
  • SolarFlare driver version: 4.1.0.6734a

Client Machine

  • Intel(R) Xeon(R) CPU E5-2687 v3 @ 3.10GHz (2 CPU Hyper-Trading Enabled, 20 Cores)
  • RAM 128 GB, 2133 MHz
  • NIC Solarflare Communications SFC9120 (Firmware-version: 4.2.2.1003 rx1 tx1)
  • Linux (CentOS 7.0.1406 kernel 3.10.0-123.el7.x86_64)
  • SolarFlare driver version: 4.1.0.6734a

Benchmarks

Single Session Echo Scenario

  • FIX Antenna has one One initiator session is configured on the server hostFIX Antenna C++ side.
  • The client application has one One acceptor session is configured on the client hostapplication side.

 The overall process is following:

  1. The initiator (FIX Antenna C++ connects to the client application ) sends 5000000 messages with an approximately constant rate (50000 msg/sec).The acceptor sends every incoming message back to the senderand sends 1000000 FIX 4.2 messages at a rate of 50000 messages per second.
  2. The client application receives the messages and responds to FIX Antenna C++ with the same message via the same TCP/IP connection (the same session).
  3. FIX Antenna C++ collects the response time histogram.
  4. The process is repeated 3 times for each FIX Antenna C++ release version.

The response time measured by the client application FIX Antenna is the difference between timestamps:

  • t1 - timestamp is taken right before sending a message to the

...

  • socket
  • t2 - timestamp is taken right after receiving the same message

...

  • from the socket (from the client application)

...

So the round-trip time formula is: RTT = t2 - t1 and the measurement unit is measured in microseconds.

Results 

Image Removed

microseconds.

The test scenario diagram:

Drawio
borderfalse
diagramNameBenchmark 1 - FA
simpleViewerfalse
width600
linksauto
tbstylehidden
diagramDisplayName
lboxfalse
diagramWidth540
revision1

Results

The performance of the FIX Antenna C++ 2.31.0 release is almost the same as the performance of the FIX Antenna C++ 2.30.0 release. There is no performance degradation or improvement.

Performance value slightly differs from run to run due to the nature of the system used to measure the performance.

Single Session Echo Scenario

Image Added

The table below contains a single run one-to-one comparison and may have some differences compared to the graphic above that shows a 3 runs average comparison.


FA 2.30.0_580, usecFA 2.31.0_595, usec
Min7.8247.980
Max220.543218.111214.399
Median9.0238.991943
Average9.2249.205133
50%9.0238.991943
75%9.0630799.023
90%9.2313199.207
95%9.5839.679495
99%10.1270319.783
99.9%78.7198676.143479
99.99%191.327177.743151