RsslConnectOptions params for a busy consumer app
for a very busy consumer application, what's suggested value for RsslConnectOptions.numInputBuffers and sysRecBufSize? Presume guaranteedOutputBuffers does not matter. Any other params do I need to change?
Best Answer
-
Much of this comes down to how efficiently the application is processing the content as well as the quality of the network connection. I will provide information about what these control and how they work together, but there is not really any magic bullet setting that works in every environment - you can use the ETA performance tools that are provided with the product to run up some high performance numbers in your environment and see what works best for you.
sysRecvBufSize controls the TCP SO_RCVBUF size, which determines the maximum amount of bytes that TCP/IP can take off of the network without the user reading any data. As the application uses the read operations to take data out of TCP's receive buffer, this frees up more space that allows it to read more from the network. This is a sliding window protocol (https://en.wikipedia.org/wiki/Sliding_window_protocol)
numInputBuffers controls the size of ETA's internal input buffer - when the user calls the rsslRead method, ETA attempts to read as many bytes as possible from TCPs receive buffer in a single socket read operation. These bytes are then put into the input buffer, allowing TCP to read as much as it can again while the user processes out of ETA's input buffer. The numInputBuffers value will basically be multiplied by the maxFragmentSize configuration of the server side of the connection to create one large continuous block of memory to read into. After reading from TCP, subsequent calls to rsslRead will go through ETA's input buffer and return pointers to the messages already read from TCP. When the end of the input buffer is hit, rsslRead will then use socket read to pull a large chunk of bytes from TCP again.
Having a numInputBuffers value that gives an input buffer that matches the SO_RCVBUF size can theoretically allow ETA to drain TCPs receive buffer with a single rsslRead operation, but this generally depends on how much data is currently available in TCP and again depends on network and application processing conditions.
Hope this helps,
Brian
0
Categories
- All Categories
- 3 Polls
- 6 AHS
- 36 Alpha
- 166 App Studio
- 6 Block Chain
- 4 Bot Platform
- 18 Connected Risk APIs
- 47 Data Fusion
- 34 Data Model Discovery
- 684 Datastream
- 1.4K DSS
- 615 Eikon COM
- 5.2K Eikon Data APIs
- 10 Electronic Trading
- Generic FIX
- 7 Local Bank Node API
- 3 Trading API
- 2.9K Elektron
- 1.4K EMA
- 249 ETA
- 554 WebSocket API
- 37 FX Venues
- 14 FX Market Data
- 1 FX Post Trade
- 1 FX Trading - Matching
- 12 FX Trading – RFQ Maker
- 5 Intelligent Tagging
- 2 Legal One
- 23 Messenger Bot
- 3 Messenger Side by Side
- 9 ONESOURCE
- 7 Indirect Tax
- 60 Open Calais
- 275 Open PermID
- 44 Entity Search
- 2 Org ID
- 1 PAM
- PAM - Logging
- 6 Product Insight
- Project Tracking
- ProView
- ProView Internal
- 22 RDMS
- 1.9K Refinitiv Data Platform
- 643 Refinitiv Data Platform Libraries
- 4 LSEG Due Diligence
- LSEG Due Diligence Portal API
- 4 Refinitiv Due Dilligence Centre
- Rose's Space
- 1.2K Screening
- 18 Qual-ID API
- 13 Screening Deployed
- 23 Screening Online
- 12 World-Check Customer Risk Screener
- 1K World-Check One
- 46 World-Check One Zero Footprint
- 45 Side by Side Integration API
- 2 Test Space
- 3 Thomson One Smart
- 10 TR Knowledge Graph
- 151 Transactions
- 143 REDI API
- 1.8K TREP APIs
- 4 CAT
- 26 DACS Station
- 121 Open DACS
- 1.1K RFA
- 104 UPA
- 192 TREP Infrastructure
- 228 TRKD
- 915 TRTH
- 5 Velocity Analytics
- 9 Wealth Management Web Services
- 90 Workspace SDK
- 11 Element Framework
- 5 Grid
- 18 World-Check Data File
- 1 Yield Book Analytics
- 46 中文论坛