Jetson Nano EMMC Ver. USB3.0 bandwidth

Jetson Nano as usb3.0 host,i test bandwidth of usb3.0 by my usb device driver,while the rate reaches 300MB/s,the CPU useage exceeds 20%.And the same driver was tested on ZCU106,the cpu useage was less than 1%,rate reaches 400MB/s.Is my system USB Host Controller DMA not working?

Please execute sudo nvpmodel -m 0 and sudo jetson_clocks. The commands enabl CPU cores at max clocks. And then you can execute sudo tegrastats to check system loading. The loading of CPU usage is related to value of maximum frequency. Probably the device for comparison has higher maximum frequency. sudo tegrastats should provide more information.

I also encountered the same problem, after executing the command you said, the CPU usage did not significantly decrease (16%), and the bandwidth slightly increased (310MB/s).

The command sudo tegrastats is to show system status for further information. We have seen an issue that performance is capped by CPU capability:
The speed of 5G dongle - #27 by DaneLLL

This seems to be a similar case. It is very likely to be maximum throughput of Jetson Nano.

Hi,thank you for your reply.
I see.
I don’t care if the USB bandwidth can reach 5GB / s. I’m more concerned about the CPU utilization. My understanding is that DMA should be used for USB 3.0 data transmission. When the USB 3.0 bandwidth is 300MB / s, the CPU occupancy should not exceed 20%. I wonder if my understanding is correct. Ask for your help.

For 20%, do you mean you execute sudo tegrastats and see every core runs at 20%@1479MHz? There are 4 cores in Jetson Nano. Please run the cores at fixed frequency so that we can check the loading more clearly.

In certain use-case we do see overall performance is capped by CPU capability, even though USB3 bandwidth can achieve 5Gbps.

Hi,i reply with other accounts, and the newcomers can only reply to 3 messages.

Not every core is at 20%, but one core is about 20%. When the CPU is idle, execute sudo tegrastats as follows:
CPU [2%@1428,0%@1428,1%@1428,2%@1428]
When I perform the USB 3.0 data transmission test, execute sudo tegrastats as follows:
CPU [19%@1428,1%@1428,0%@1428,1%@1428]
CPU [14%@1428,7%@1428,1%@1428,2%@1428]
CPU [12%@1428,8%@1428,1%@1428,2%@1428]
CPU [17%@1428,1%@1428,1%@1428,1%@1428]
CPU [6%@1428,14%@1428,1%@1428,0%@1428]


Looks like using on one CPU core is sufficient. Please try taskset to run the test on specific CPU core and check if it helps:
taskset(1) - Linux manual page

This may eliminating shifting loading between the cores. Probably can bring performance improvement.

For ZCU106, is it a Linux system with kernel 4.4? How many CPU cores are in the platform? What is the maximum frequency?

Thanks for your replay.
And are your DMA engine supports scatter mode?
ZCU106 is 4 core A53@1200MHz,with kernel is 5.4.0.

When I used the kernel function dma_map_sg() in the USB device driver written by myself, Jetson Nano was stuck and then restarted. I didn’t see the system log and I didn’t know what the problem was. Could you please help me?

Please share your release version for reference. And confirm if the device is enumerated as SuperSpeed.

One possibility is that performance is better when the device runs in isochronous mode. The mode is not supported on Jetson Nano, so the device has to be run in another mode and performance is worse.

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