Slow speeds for Inter SoC Communication through Socket programming

Please provide the following info (check/uncheck the boxes after clicking “+ Create Topic”):
Software Version
DRIVE OS Linux 5.2.0
DRIVE OS Linux 5.2.0 and DriveWorks 3.5
NVIDIA DRIVE™ Software 10.0 (Linux)
NVIDIA DRIVE™ Software 9.0 (Linux)
other DRIVE OS version
other

Target Operating System
Linux
QNX
other

Hardware Platform
NVIDIA DRIVE™ AGX Xavier DevKit (E3550)
NVIDIA DRIVE™ AGX Pegasus DevKit (E3550)
other

SDK Manager Version
1.6.0.8170
1.5.1.7815
1.5.0.7774
other

Host Machine Version
native Ubuntu 18.04
other

I have developed a socket communication based application to transfer data between the 2 Xaviers in Drive AGX platform. The application uses DriveWorks socket APIs to achieve this. Currently I am attempting to transfer images from Xavier B to Xavier A using this application. Each image is of 5.5MB and I have tried to transfer both a low number of images (5-10 images) and a high number (952 images). In both cases the time taken to transfer each image is slow. The logs for the same are as below:

./server --port=8000
Program Arguments:
–ip=127.0.0.1
–offscreen=0
–port=8000
–profiling=1
–role=server

Size of image data is : 5529654
Image size sent from server :5529654
Elapsed time is 0.0482717 seconds
Data sent for file : images_bmp/image_seq_007814.bmp
Size of image data is : 5529654
Image size sent from server :5529654
Elapsed time is 0.0534349 seconds
Data sent for file : images_bmp/image_seq_007815.bmp
Size of image data is : 5529654
Image size sent from server :5529654
Elapsed time is 0.0464351 seconds
Data sent for file : images_bmp/image_seq_007816.bmp
Size of image data is : 5529654
Image size sent from server :5529654
Elapsed time is 0.0569469 seconds
Data sent for file : images_bmp/image_seq_007817.bmp

Server : number of images sent: 4

./client --ip=10.153.5.22 --port=8000
Program Arguments:
–ip=10.153.5.22 → This is Xavier B IP
–offscreen=0
–port=8000
–profiling=1
–role=client

Received frame size is : 5529654
Elapsed time is 0.0477219 seconds
Done receiving: 5529654 bytes of data
Received frame size is : 5529654
Elapsed time is 0.0434107 seconds
Done receiving: 5529654 bytes of data
Received frame size is : 5529654
Elapsed time is 0.0431773 seconds
Done receiving: 5529654 bytes of data
Received frame size is : 5529654
Elapsed time is 0.0426182 seconds
Done receiving: 5529654 bytes of data

Client : number of images received: 4

These transfer times are extremely high for my requirements. The documentation shows that inter SoC communication is done through 10Gbps interface. These speeds are not close to this. Am I supposed to be enabling some software configs on the Drive AGX system to achieve faster speeds? Is there any other method we can improve these speeds? If yes please do share the relevant documentation.
Note: We are measuring just the time elapsed by server/client to transmit/receive data. File read/write operations are not included here.

Dear @dhruva.ungrupulithaya,
So, I can see you are getting ~1Gbps(5529654 * 8 * (1/0.04)) speed. Does it change when you increase image sizze?
How much speed you are getting when doing scp of one image?

Hello Siva,
We are sending a image data of just 5.5MB using socket programming.
But the time taken is 0.05 seconds.
So, we want to understand how to boost the speed because ideally the expected time is 0.005 seconds for 1GBPS speed while transmitting one image of size 5.5MB.

When we do scp we get the following on one image:
$ scp image_seq_007814.bmp nvidia@10.153.5.24:/home/nvidia/Driveworks_Socket_Codes/out
image_seq_007814.bmp 100% 5400KB 74.1MB/s 00:00

Hello Siva,
Got the point there were calculation error.

Hi @SivaRamaKrishnaNV : Thanks for the reply. We are clear with how 1Gbps speed can be achieved. Is there a possibility that the interface line of 10Gbps can be used for communication between Xavier A and B?
As transferring the data through will help achieving the transfer in 4ms rather than 40ms for a ~5MB image which will help in achieving the transfer at faster speed

Hi @aniruddha.nadgouda ,

You can use the 10 Gpbs RJ45 jacks on the back panel. Thanks.

@VickNV Are you suggesting to short the RJ45 ports of Xavier A and Xavier B to achieve a speed of 10Gbps for data exchange between Xavier A and B?

“Non-Crosslink NTB” in the document is another way. You can check which one is more suitable for your use cases. Thanks.

This topic was automatically closed 60 days after the last reply. New replies are no longer allowed.