Versions Compared

Key

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

...

  • FIXEdge has one acceptor session configured.
  • Client The client application has one initiator session configured.

...

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

  • t1 - timestamp is taken right before sending a message to the socket;
  • t2 - timestamp is taken right after receiveing receiving the same message from the socket (from FIXEdge).

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

The test scenario looks like:

Image RemovedImage Added

Two Sessions With Conversion Scenario

  • FIXEdge has two acceptor sessions configured.
  • Client The client application has two initiator sessions configured.

...

  1. Client application connects to the FIXEdge instance (establishes session №1) and sends 200000 FIX 4.2 messages with a rate of 2000 messages per second.
  2. Client application connects to the FIXEdge instance (establishes session №2) and starts to receive a message from another FIXEdge session.
  3. FIXEdge receives the messages sent to it from client application (session №1).
  4. FIXEdge uses business layer logic to route the message to another session and convert converts it from FIX 4.2 to FIX 4.4 protocol.
  5. FIXEdge responds to the client application with the converted message via another TCP/IP connection (session №2).

The round-trip time measured by benchmark is the difference between timestamps (just like in the previous test):

  • t1 - timestamp is taken right before sending a message to the socket;
  • t2 - timestamp is taken right after receiveing receiving the same message from the socket (from FIXEdge).

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

The scenario looks like:

Image RemovedImage Added

Tests' Configuration

...

  1. Preallocated RAM buffers for FIX messages.
  2. Pin session threads to CPU cores.
  3. Aggressive Mode is when two dedicated threads created for each session - one thread to receive messages and one thread to send messages.
  4. persistentMM is the message storage type represented by a memory-mapped local file.
  5. OpenOnload is a Linux alternative networking stack which that performs kernel bypass for the application data.
  6. Message validation against FIX dictionaries takes the a significant amount of all processing time so it's disabled for testing purposes.

Test Results

Single Session Echo Test

Image RemovedImage Added

Response time distribution chart (microseconds)
PercentilesMicroseconds
5016.6
9018.7
9924.6
99.555.0
GeneralMicroseconds
Median Response Time16.6
Average Response Time17.2
Standard Deviation6.6

...

Two Sessions With Conversion Test

Image RemovedImage Added

Response time distribution chart (microseconds)
PercentilesMicroseconds
5023.5
9026.6
9932.4
99.565.0
GeneralMicroseconds
Median Response Time23.5
Average Response Time24.3
Standard Deviation6.8