question

Upvotes
Accepted
1 0 1 2

EMA performance not comparable to IDS rest interface.

We are moving to the cloud and it has been suggested to use Java EMA to connect to our ADS service. It works fine for a few rics but when sending 1000+ rics the performance is much slower than when we were doing the same thing against the IDS restful interface. We basically just want to replicate the functionality of the IDS restful service through the EMA classes. I have tried multi threading around the EMA consumer but still getting slower than expected results. Let me if there are any best practices for this or suggestions.

javaperformance
icon clock
10 |1500

Up to 2 attachments (including images) can be used with a maximum of 512.0 KiB each and 1.0 MiB total.

Upvotes
Accepted
25.3k 89 12 25

Hi @ssweeney

Also, since you were previously using a RESTFUL interface - this would indicate snapping the data at regular intervals OR as when required.

With EMA, the default is streaming whereby you receive every update - so potentially processing a much greater volume of tick data.

If with IDS you were not snapping that often, then you could consider using Snapshot request with EMA - to try and achieve a similar volume of data.


icon clock
10 |1500

Up to 2 attachments (including images) can be used with a maximum of 512.0 KiB each and 1.0 MiB total.

Upvotes
22.6k 59 14 21

Hi @ssweeney,

The performance will depend on many factors, and one of them is the hardware and other is the horizontal scaling of the EMA instances and load balancing across multiple consumer objects.

The response time will also be delayed if the item is not in the ADS cache and if there is an invalid instrument in your request.

If you provide more quantifiable numbers regarding response latency, then we can try to gauge you if you are close to SDK limit, or if something is way off.

Please note that in the Realtime stack, EMA Java is the slowest of all. There is a magnitude of performance difference between EMA Java and ETA C++.

icon clock
10 |1500

Up to 2 attachments (including images) can be used with a maximum of 512.0 KiB each and 1.0 MiB total.

Upvotes
25.3k 89 12 25

Hi @ssweeney

Can you clarify/expand your first statement - 'we are moving to the cloud....connect to our ADS' - moving to the cloud would suggest NOT connecting to your ADS - since an ADS usually runs on deployed hardware?

What is the IDS restful interface - not familiar with IDS? Can you also advise approximately how many RICs you are requesting - just over 1000 or several thousand?

Also, how is your EMA Java consumer code constructed? I have seen instances where a developer has mistakenly created a separate OMMConsumer instance for each RIC they subscribe to - rather than using a single OMMConsumer for a few thousand RICs - and this has caused performance issues as there is some overhead for each OMMConsumer instance.

As a simple test, have you tried modifying ex370_MP_Batch to request your 1000+ RICs. Note that there is a 64K limit on the ReqMsg payload size - at which point you would need to split the batch into smaller batches.


icon clock
10 |1500

Up to 2 attachments (including images) can be used with a maximum of 512.0 KiB each and 1.0 MiB total.

Write an Answer

Hint: Notify or tag a user in this post by typing @username.

Up to 2 attachments (including images) can be used with a maximum of 512.0 KiB each and 1.0 MiB total.