Upload
konstantin-dmitriev
View
150
Download
0
Embed Size (px)
Citation preview
CrossFix highlights
Latency and Throughput
✔ Zero object allocation/garbage collection in steady state and absence of protocol errors
✔ Lock free, zero copy, small CPU cache footprint
✔ Ultra-low latency at mean and tail percentiles – 400ns latency for a typical FIX
ExecutionReport message from client code to NIC driver at 50th percentile and sub-500ns
for 99.9 percentile; 550ns latency from NIC driver to client code at 50th percentile and
700ns for 99.9 percentile*
✔ Maximum sustainable send throughput 2,669,000 msgs/sec for a typical FIX
ExecutionReport; receive throughput 2,213,000 msgs/sec*
Features
✔ Strongly-typed Message API, all fields are serialized or parsed in session code, thus
avoiding hidden latency of second-pass parsing
✔ Message, session API/session configuration optimized for migration from QuickFIXJ with
few API exceptions in latency-sensitive areas
✔ Written in Java, Java NIO rewritten as native library to avoid locking and object allocation
✔ Optimized for Kernel-bypass network libraries, tested with latest SolarFlare/OpenOnload
✔ Client has an option of retaining full control of threading with the ability to busy-spin and/or
affinitize send and/or receive threads, as well as utilising out-of-the-box threading strategies,
e.g. thread-per-session
✔ Session sequence numbers and send/receive FIX log persistence using memory-mapped files
✔ Full support for FIX protocol versions from 4.0 to 5.0SP2
✔ Support for start/stop time scheduling
✔ Tested on Linux and Windows
* On Linux 3.16.7 kernel configured for low-latency, Java 1.7.0_72, Intel Core i7-4790K CPU @
4.40GHz, SolarFlare SFN5122F/OpenOnload v4.4.1.1017
Latency benchmarks
1) ExecutionReport message serialization latency, 1000 msg/sec
2) ExecutionReport send/receive latency excluding network stack latency, 1000 msg/sec
3) ExecutionReport send latency including network stack (OpenOnload) latency, 1000 msg/sec
4) ExecutionReport receive latency including network stack (OpenOnload) latency, 1000 msg/sec