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,

Best Answer

  • Jirapongse
    Answer ✓

    @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.

Answers

  • 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,



  • @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.