Throttling incoming data

My server application reads ticks from Elektron and sends them UDP to another application. The other application cannot keep up and UDP is being lost.

As an interim measure I want to throttle the rate at which my server application sends ticks.

I see some Elektron configuration that may help me, but it is not explained well in the manuals, so I cannot be sure.

Please, can anyone help me, or point me at documentation that explains the effects of changing the following settings:

  • DispatchTimeoutApiThread
  • MaxDispatchCountApiThread
  • MaxDispatchCountUserThread
  • MaxOutstandingPosts

The manual I have gives one sentence on each, which is not sufficient to understand. I basically want to reduce the rate at which the Elektron API gives me data, and if necessary increase its internal buffers so spikes in data rate accumulate there instead of being dropped from my clients UDP multicast buffer by the OS, which is what currently happens.

Best Answer

  • Gurpreet
    Answer ✓

    @iain.morris

    Configuration changes in the API will not help when consumer is slower than producer. Your options are to either turn-on conflation in the infrastructure (ask your market data administrator), or programatically conflate multiple updates from EMA, before sending it.

    EMA internally buffers the update messages, but at some point the application will run out of memory, if they are being removed at a slower rate.