We have measured the latency of our UPA consumer application, and have noticed some unusual behaviour around the rsslRead and rsslDecode functions. Attached is a graph displaying our findings.
Our measurements are showing that the first call of rsslRead takes longer than subsequent calls for message 'bursts' from the network - the blue line in the graph. We assume that this is due to the rsslRead call 'buffering' messages from the network (so the subsequent calls do not perform network reads). However, the rsslDecode functions (rsslDecodeMsg, rsslDecodeFieldEntry...) also all individually take longer when decoding the first message from rsslRead - the red line in the graph. The slower rsslRead call, and the slower rsslDecode functions results in the first message in the input buffer taking considerably longer to decode than the remainder of the messages.
It is worth noting that these 'spikes' we are seeing in the latency of decoding occur even when we fix the size of the messages by using the dynamic view functionality to register interest in only one field. In the attached graph the messages were updates with a single double field.
We would like the latency of decoding messages in our application to be as stable as possible regardless of the message's position in the input buffer - i.e. we would like the lines in the graph to be as horizontal as possible. Please can you explain why these spikes in latency exist, and how we can remove them?
UPA version - 8.0.0.L1