EMA C++ Performace Tools Guide : 3 Latency Measurement Details : 3.1 Time-slicing
 
3.1 Time-slicing
All applications follow a similar model for controlling time: time is divided into small intervals, referred to as “ticks.” During a run, each application has a main loop that runs an iteration once per tick. In this loop, the application performs some periodic action, and then waits until the next tick before starting the loop again.
For example, an application might observe the following loop:
1. Send out a burst of messages.
2. Wait until the time of the next tick. If network notification indicates that any connections have messages available, read them and continue waiting.
Applications can configure this rate using their respective -tickRate option. This determines how many ticks occur per second. For example, if you set the tick rate to 100, ticks occur at 10-millisecond intervals.
 
NOTE: -tickRate does not affect the Round Trip Time feature.
Applications adjust the message rate to fit the tick rate. For example, if an application wants to send 100,000 messages per second with a tick rate of 100 ticks per second, the application will send 1,000 messages per tick. Adjusting the tick rate affects the smoothness of message traffic by defining the amount of time between bursts:
Figure 5. Time Slicing Algorithm
Depending on the tool, spare time in the tick might be used to perform other actions. For example, after EmaCppIProvPerf or EmaCppNIProvPerf sends an update burst, the remaining time is used to send outstanding refreshes:
Figure 6. Refresh Publishing Algorithm
Applications always set tick times at fixed intervals as they progress, regardless of what the application does during the interval. For example, if the tick rate is 100 (i.e., 10 ms intervals), and the time of the previous tick was 40ms, then the times of the next ticks are 50 ms, 60 ms, etc... This helps maintain constant overall messaging rates: any irregularities in the timing of the current tick are corrected in subsequent ticks.