wingfoil latency e2e

Rust DAG stream processor · live FIX round-trip to LMAX London disconnected session

per-hop latency — this session

sent
0
filled
0
avg fill px
round-trip
rtt mean last 32 fills
resident ws_recv → ws_send (in-process)
wire FIX/TLS to LMAX + WS legs
how to read this

Each fill traverses nine wingfoil stamp points: ws_recv → ws_publish → gw_recv → gw_price → fix_send → fix_recv → gw_publish → ws_sub_recv → ws_send. The chart plots the per-hop delta on a log Y-axis (nanoseconds). The flamegraph below shows the nested call stack: browser at the bottom (full round-trip), each layer above is a strict sub-interval of the layer below — exactly like a CPU flamegraph, but the samples are wall-clock fills.

Resident is everything inside this server (two processes connected by iceoryx2 shared memory). Wire is the FIX-over-TLS round-trip to LMAX plus the WebSocket legs to your browser — derived as rtt_total − resident, both measured in a single clock domain so no NTP sync is needed.

flamegraph — nested call stack (rolling mean)

n=0

grafana — session traces

↗ open in new window

Aggregate p50/p99 across all sessions are in Prometheus at :9091/metrics. Per-session traces are pushed to Tempo via OTLP and pre-filtered to this session above. Not loading? docker compose -f wingfoil/examples/latency_e2e/docker-compose.yml up -d