Nanoconda Latency Overview
The following latency figures represent typical measurements from an optimized production deployment. Actual latency depends on hardware, CPU architecture, exchange connectivity, thread placement, cache state, and workload.
Overall Latency
| Component | Typical Round Trip Latency |
|---|---|
| Software (socket-to-socket) | 1.0–1.5 µs |
| Solarflare EFVI / TCPDirect PCIe transfer | ~1.5 µs (500–700 ns each direction) |
| CME Network | ~1.0 µs (≈500 ns each direction) |
Typical Wire-to-Wire Latency
- Software processing: ~1.0–1.5 µs
- PCIe transfer (EFVI/TCPDirect): ~1.5 µs
- Total wire-to-wire latency inside the Nanoconda server: ~2.5–3.0 µs
- Additional network latency to CME: ~1.0 µs round trip
Receive Path (Market Data)
Typical latency from market data arriving at the network card until it is available to the trading strategy.
| Stage | Typical Latency |
|---|---|
| Solarflare EFVI / PCIe transfer | 500–700 ns |
| CME MDP 3.0 message parsing | 200–400 ns |
| Shared memory transfer (cross-core) | 300–400 ns |
To get real-time latency from the API use the difference between nanoconda::writetime and nanoconda::receivetime;
Send Path (Order to Wire)
Typical latency from strategy decision until the order leaves the network interface.
| Stage | Typical Latency |
|---|---|
| In-memory pre-trade risk | 70–200 ns |
| Shared memory transfer | 80–200 ns |
| iLink message normalization | 100–400 ns |
| Solarflare TCPDirect / PCIe transfer | 400–700 ns |
Typical order-to-wire latency: ~1.0 µs
You can retrieve real-time sending latency histogram in Nanoconda Dashboard or by using latencystats cli application.
How Nanoconda Achieves Low Latency
Nanoconda's low latency comes primarily from its single-machine, in-memory architecture.
The critical trading path remains entirely on one colocated server:
Exchange
│
▼
Solarflare EFVI
│
▼
Market Data Feed Handler
│
▼
Shared Memory
│
▼
Trading Strategy
│
▼
In-Memory Pre-Trade Risk
│
▼
Exchange Gateway
│
▼
Solarflare TCPDirect
│
▼
Exchange
Critical components all execute on the same physical machine, including:
- Market data feed handler
- Trading strategies
- Pre-trade risk engine
- Order gateway
- Position management
- Account management
Data remains in memory throughout the trading pipeline.
There are no network hops or remote services between market data reception, strategy execution, risk validation, and order transmission.
Performance Optimizations
Nanoconda achieves deterministic microsecond-level performance through:
- Native C++ implementation
- Single-machine architecture
- Shared-memory communication
- In-memory pre-trade risk
- Kernel bypass networking
- Solarflare/Xilinx EFVI
- Solarflare TCPDirect
- CPU affinity
- NUMA-aware scheduling
- Dedicated trading cores
- Hardware timestamping
- PTP synchronization
- Lock-free data structures
- Cache-friendly memory layout
Notes
These measurements represent optimized production deployments with:
- Proper CPU pinning
- Cache warming
- Dedicated trading cores
- Tuned operating system
- Supported Solarflare/Xilinx networking hardware
Actual latency varies depending on hardware configuration, exchange connectivity, workload, and deployment environment.