we are porting a multi-sensor application from JetPack 4 to JetPack 5.1.6 on a Jetson Xavier NX. On JetPack 4 the application works fine. On JetPack 5 we observe frame drops in our application and profiling showed that the call to acquire frame of the libargus library takes often a too long time (e.g. 72 ms instead of 40 ms @ 25fps).
This is an example on how it looks like in the profiler:
We can also observe, that the total GPU load in JetPack 5 is 10 - 20% higher than in JetPack 4.
In most cases, it runs fine for a short time in the beginning (although the frame period is having a few ms deviation, which is not the case in JP4), but it then starts to fail and take a long time to complete the function call and return a new frame.
We would like to know why the libargus acquire frame call in JetPack 5 takes so much time and does not complete when a new frame is available from the sensor. Is there a way to make libargus work the same way it did in JetPack 4?
Is the total higher GPU load caused by libargus / nvargus-daemon? Is libargus using GPU for some processing and does the GPU load influence the performance of libargus / acquire frame?
it seems to be related to GPU load. The higher the load, the earlier the problem occurs. If we reduce the GPU signficantly, we do not observe the very long acquisition times / dropped frames any more.
Only the jitter of a few milliseconds of the frame period can still be observed.
there is an update regarding the issue with the very long frame periods. These were caused by the Jetson fan control signal, when the temperature became too high. So the problem of dropped frames is solved.
But still the GPU resource consumption is higher in JP5 and the timestamps of the frames jitter by a few milliseconds. We also measured the sync signal of the imagers, and it has constant 40 ms frame period.
Do you have any idea what we can do to get the behavior and ressource consumption of JetPack4?
There is in general perf drop from kernel 4.9 to 5.10 due to security hardening.
This is from the upstream kernel changes. Please find more information in the topic below: