Skip to main content

Ember Latency Tuning Guide

This document describes how to tune the Ember configuration parameters to optimize the signal processing latency of Ember OMS and Ember algos.

note

More content is coming soon. The following information is a placeholder. In the meantime, please contact your Ember support team for assistance.

Out of the many things that can be done, there are several steps that usually provide quick results, described in the following sections.

CPU Affinity

Assuming you have followed the OS tuning steps like disabling C-States, isolated cores, and tuned profiles, the next step is to assign mission-critical Ember threads to isolated CPU cores.

Here's a sample configuration:

affinity {
message-bus = [8]
trade-gwy-sess-ORDERENTRY = [9]
trade-gwy-trans-ORDERENTRY = [10]
marketdata-gwy-sess-PRICES = [11]
marketdata-gwy-trans-PRICES = [12]
trade-engine = [13]
journal-swapper = [14]
algorithm-NIAGARA = [15]

#non-critical:
"[sender,receiver,driver-conductor]" = [16,17,34,35]
timebase-client = [16,17,34,35]
aeron-client-conductor = [16,17,34,35]
message-bus-input-dispatcher = [16,17,34,35]
logger = [16,17,34,35]
instrument-updater = [16,17,34,35]
CentralSMD = [16,17,34,35]
LocalSMStorage Flusher Thread 1 = [16,17,34,35]
default = [16,17,34,35]
fix-agent = [16,17,34,35]
aeron-driver-shared = [16,17,34,35]
}

You can find more information about thread-to-CPU affinity settingsd in the Configuration Guide.

IDLE Strategies

You can set idle strategies for different components in Ember to reduce the latency.

Here's a sample configuration:

engineIdleStrategy = ${template.idleStrategy.noop}
swapperIdleStrategy = ${template.idleStrategy.noop} // debatable
algorithms.NIAGARA.idleStrategy = ${template.idleStrategy.noop}
gateways.trade.ORDERENTRY.idleStrategy = ${template.idleStrategy.noop}

You can find more information about idle strategies in the Configuration Guide.