By reference to PCIe Endpoint Mode — NVIDIA Jetson Linux Developer Guide 1 documentation, I want to transfer video frames data from Root Port (RP) Orin to Endpoint (EP) Orin.
The above URL provides 2 sample ways: Shared RAM and Ethernet over PCIe.
1, Shared RAM
1.1, x4 lanes performance
RP writer performance: 15.75 MBps
EP reader performance: 42.46 MBps
1.2, How to sync between RP/EP?
The following post did not recommend using shared RAM way.
2, Ethernet over PCIe
2.1, iperf3 performance
iperf3 -c 192.168.2.1
Connecting to host 192.168.2.1, port 5201
[ 5] local 192.168.2.2 port 54886 connected to 192.168.2.1 port 5201
[ ID] Interval Transfer Bitrate Retr Cwnd
[ 5] 0.00-1.00 sec 386 MBytes 3.23 Gbits/sec 0 1.17 MBytes
[ 5] 1.00-2.00 sec 385 MBytes 3.23 Gbits/sec 0 1.17 MBytes
[ 5] 2.00-3.00 sec 411 MBytes 3.46 Gbits/sec 0 1.17 MBytes
[ 5] 3.00-4.00 sec 410 MBytes 3.44 Gbits/sec 0 1.17 MBytes
[ 5] 4.00-5.00 sec 381 MBytes 3.20 Gbits/sec 0 1.17 MBytes
[ 5] 5.00-6.00 sec 385 MBytes 3.23 Gbits/sec 0 1.17 MBytes
[ 5] 6.00-7.00 sec 380 MBytes 3.18 Gbits/sec 0 1.17 MBytes
[ 5] 7.00-8.00 sec 381 MBytes 3.20 Gbits/sec 0 1.17 MBytes
[ 5] 8.00-9.00 sec 401 MBytes 3.37 Gbits/sec 0 1.17 MBytes
[ 5] 9.00-10.00 sec 396 MBytes 3.33 Gbits/sec 0 1.17 MBytes
- - - - - - - - - - - - - - - - - - - - - - - - -
[ ID] Interval Transfer Bitrate Retr
[ 5] 0.00-10.00 sec 3.83 GBytes 3.29 Gbits/sec 0 sender
[ 5] 0.00-10.00 sec 3.83 GBytes 3.29 Gbits/sec receiver
iperf Done.
2.2, Drawbacks
2.2.1, Bringing up both interfaces requires strict operation order on RP/EP, it’s hard to automate;
2.2.2, The virtual ethernet interface conflicts with real 10Gb NIC.
So, which way is recommended to fulfill my task?