Ethernet communication in real-time

I have an application where Jetson AGX Xavier receives a UDP packet every 1 millisecond and must reply to the server within 1millisecond. To allow some variations in performance, I set a threshold of 3 milliseconds. If the server doe not receive a response from the Jetson within 3 milliseconds, the server (an MCU) will timeout. The Jetson is running the real-time kernel (4.9.201-rt-tegra134)

Extensive profiling shows that the Jetson can only keep up with this 1ms cycle for a few minutes, after which performance starts to get jittery and the server times out after about 15 minutes. My questions:

  1. I use taskset to bind the process to a CPU. x86 linux has a utility called irqbalance which lets you free a certain CPU from interrup handling tasks. Is there something equivalent for L4T?

  2. Even after using real time kernel, I have not been able to get the Jetson to handle UDP packets reliably. What other things can I do to make the jetson run as deterministically as possible?

Have you tried to set your devcie in different power efficiency mode by NVPmodel to see if can improve the situation?
See NVIDIA Jetson Linux Driver Package Software Features : Clock Frequency and Power Management | NVIDIA Docs

@kayccc Thank you for the suggestion. I tried that and it did not help. I raised the CPU frequency and that helped a bit but what I really need is a way to isolate a few cores and keep them away from handling any interrupts. I found that irqbalance can be installed using apt on Jetson Orin (this didn’t work on Xavier). While I am trying it out, I still have the same question I started with. How to make the Jetson run as deterministically as possible?

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