Elektron EMAConfig.xml Consumer Buffer tuning
At market close we seem to be running out of performance. The messages arrive and the EMA API gives out. I have tried to move most processing onto other treads. But because of the GlobalBuffer some processing, i.e. copying has to be on the AppClient callback thread, becaue the FieldEntry objects are transient. Does changing the Channel NumInputBuffers SysRecvBufSize and HighWaterMark make any difference? If I change these what are good values to have?
Best Answer
-
Hello @michael.chong
Does the application encounters the memory leak problem or the ADS log contains "Output threshold breached for <EMS login user> .." message? If so, it means the consumer
application can not read data sent from ADS fast enough (a slow consumer).You can
implement the application performance to speed up picking up events in the
Application callbacks to make the application and API consume data from the ADS
faster. The
suggested solutions are:1. Process incoming data with minimize time in the
callback methods, onRefreshMsg(), onUpdateMsg, onStatusMsg(), etc.
Basically, the longer the application is held in this method, the more events
are added up in the queue, which leads to the overflow scenario and
disconnections. Avoid making database and/or other
blocking calls in the methods. The application may have additional thread to
process the received event separately.2. You can
improve the application performance by using the horizontal scaling to
distribute the process of response/update messages between multiple CPU cores
while running a single process on the machine. This would increase the response
message throughput of the application.Below is
the example design of the application applied horizontal scaling with 4
OMMConsumer threads:All
OmmConsumer threads are configured to the same host/port to make the
application creates multiple connections to the same TREP infra.Please be
informed that the horizontal scaling may not be fully beneficial to
applications when the number of threads is higher than the number of the
machine CPU’s cores.Please
see the horizontal scaling implementation example from EMA Java’s example410__MarketPrice__HorizontalScaling
application. The example is available at <EMA 3.2 package>\Java\Ema\Examples\src\main\java\com\thomsonreuters\ema\examples\training\consumer\series400\example410__MarketPrice__HorizontalScaling folder.0
Answers
-
Hi Wasin, Thank your kind reply. I did try a number of things but could not get sufficient performance. The Consumer, which is as you said slow, wpuld crash typically one to five minutes before the USA market close. Typically when volume is highest. We are trying to subscribe to 4,700 stock names. My solution is to move to the ETA (UPA) Api will see if that fixes things.
What kills the EMA performance is the buffer locks, and the fact that there is only one thread available for unpacking data, and that data is only "valid" within the call back method.
Warmest regards, Mike.
0
Categories
- All Categories
- 6 AHS
- 39 Alpha
- 161 App Studio
- 4 Block Chain
- 4 Bot Platform
- 16 Connected Risk APIs
- 47 Data Fusion
- 30 Data Model Discovery
- 608 Datastream
- 1.3K DSS
- 577 Eikon COM
- 4.9K Eikon Data APIs
- 7 Electronic Trading
- Generic FIX
- 7 Local Bank Node API
- Trading API
- 2.7K Elektron
- 1.3K EMA
- 236 ETA
- 519 WebSocket API
- 33 FX Venues
- 10 FX Market Data
- 1 FX Post Trade
- 1 FX Trading - Matching
- 12 FX Trading – RFQ Maker
- 5 Intelligent Tagging
- 2 Legal One
- 20 Messenger Bot
- 2 Messenger Side by Side
- 9 ONESOURCE
- 7 Indirect Tax
- 59 Open Calais
- 264 Open PermID
- 39 Entity Search
- 2 Org ID
- PAM
- PAM - Logging
- 8.4K Private Comments
- 6 Product Insight
- Project Tracking
- ProView
- ProView Internal
- 20 RDMS
- 1.4K Refinitiv Data Platform
- 370 Refinitiv Data Platform Libraries
- 3 Refinitiv Due Diligence
- LSEG Due Diligence Portal API
- 3 Refinitiv Due Dilligence Centre
- Rose's Space
- 1.1K Screening
- 18 Qual-ID API
- 13 Screening Deployed
- 23 Screening Online
- 10 World-Check Customer Risk Screener
- 990 World-Check One
- 44 World-Check One Zero Footprint
- 45 Side by Side Integration API
- Test Space
- 3 Thomson One Smart
- 1.2K TR Internal
- Global Hackathon 2015
- 2 Specialists Who Code
- 10 TR Knowledge Graph
- 150 Transactions
- 142 REDI API
- 1.7K TREP APIs
- 4 CAT
- 21 DACS Station
- 117 Open DACS
- 1.1K RFA
- 103 UPA
- 172 TREP Infrastructure
- 224 TRKD
- 886 TRTH
- 5 Velocity Analytics
- 5 Wealth Management Web Services
- 60 Workspace SDK
- 9 Element Framework
- 5 Grid
- 13 World-Check Data File
- Yield Book Analytics
- 46 中文论坛