question

Upvotes
Accepted
5 0 0 4

Network saturatation

Hi,

I am using a non-iterative provider to stream data via RFA. The code closely follows the example provided in RFA/Examples.

However, I am encountering network capacity issues when streaming data at a high frequency of approximately 30,000 updates per second.

I am wondering if anyone else has encountered a similar problem. Is there a mechanism available to limit the bandwidth and address this issue?

Thank you,

#technology#productrfa-apic++networking
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.

Upvote
Accepted
76.6k 238 52 72

@iamtho

Thanks for reaching out to us.

You can try the rfacppNIProvPerf test tool which is a performance non-interactive provider application. The tool is in the RFA package. The number of update messages per second may depend on the size of the update message.

Did you see any error messages? Typically, it may relate to the guaranteedOutputBuffers or maxOutputBuffers configurations of the RSSL_NIPROV Type Connection.

I hope that this information is of help.

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
5 0 0 4

Hi @Jirapongse

I run two tests but there weren't any error.

  • TEST_1

--- TEST INPUTS ---

Run time (sec): 360

Service: <my_service>

Connection Type: RSSL_NIPROV

Host: <my_host>

Port: <my_port>

Input Buffers: (default)

Output Buffers: 40000

tcp_nodelay: false

forceFlushOnWrite: false

outBoundMessagePacking: true

Thread Binding (CPU): (default)

Item count: 100000

Update rate: 10000

Latency update rate: 10

Tick rate: 1000


--- SUMMARY ---

Overall Statistics:

Images sent: 100000

Updates sent: 3576500

CPU usage max (%): 66.29

CPU usage min (%): 12.27

CPU usage avg (%): 14.52

Memory usage max (MB): 324.16

Memory usage min (MB): 36.96

Memory usage avg (MB): 304.39


  • TEST_2

--- TEST INPUTS ---

Run time (sec): 360

Service: <my_service>

Connection Type: RSSL_NIPROV

Host: <my_host>

Port: <my_port>

Input Buffers: (default)

Output Buffers: 20000

tcp_nodelay: false

forceFlushOnWrite: false

outBoundMessagePacking: true

Thread Binding (CPU): (default)

Item count: 100000

Update rate: 10000

Latency update rate: 10

Tick rate: 1000


--- SUMMARY ---

Overall Statistics:

Images sent: 100000

Updates sent: 3576154

CPU usage max (%): 63.17

CPU usage min (%): 13.48

CPU usage avg (%): 20.59

Memory usage max (MB): 201.32

Memory usage min (MB): 36.96

Memory usage avg (MB): 197.97


During the testing process, the streaming activity of other programs was affected, causing some clients to experience delays in receiving their responses.


Are there any alternative methods to benchmark the network's performance?


Thank you,



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.

@iamtho

You can use the network packet analyzer tools, such as Wireshark, or TCPDump to capture and analyze the network packets.

You can contact your IT or network team to analyze the network packets.

I believe that adjusting the values of guaranteedOutputBuffers and maxOutputBuffers can have an impact on the network capacity. I'm looking for guidance on how to configure these values in my application. If you have any insights or suggestions, I would greatly appreciate them

Those buffers are used by the API to hold the data before sending it to the network.

For example, if the API can't flush data to the network, the data will be stored in those buffers. Then, the API will try to free the buffers by flushing the data to the network.

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.