We are currently transitioning a multi-camera streaming application from a GStreamer solution (using nvarguscamerasrc) to one that uses LibArgus directly. While using LibArgus directly, we noticed that the CPU load of the nvargus-daemon process has increased by about 6-8% (of a CPU core), even though the input cameras and framerates haven’t changed.
When looking at the threads spun up by the nvargus-daemon, it seems like the majority of the CPU difference can be attributed to some unnamed threads. I am curious if there are certain LibArgus calls or settings that would cause the daemon to spin up additional unnamed threads.
Per thread breakdown of nvargus-daemon when running a Gstreamer Pipeline with nvarguscamerasrc
Per thread breakdown of nvargus-daemon when running an application that queries frames with LibArgus directly
It is evident that the majority of cpu load difference comes from the unnamed threads. When I break down the unnamed threads, I see that in the custom lib argus applications, there is 1 unnamed thread that is using 4-5% (of a CPU core) that I don’t see when running the GSCAM pipeline.
What LibArgus API calls will cause the nvargus-daemon to spin up an unnamed thread that consumes 4-5% (of a CPU core) on a Jetson xavier?