Encoding performance issue on Xavier AGX, but no problem on Nano (simultaneous encoding)

The main issue is that the AGX performs perfectly if I start 15 encodings simultaneously in one gst-launch-1.0 command.
But very bad if I execute each encoding with an individual gst-launch-1.0 command/process.

On Jetson Nano the results are identical with both methods.

i have also read this post where the opposite of my issue is happening:

Here are my results

Sample Video:
Video Type: 1920×816 (1080p), 4:2:0
framerate: 23.967 FPS
duration: 123 seconds
downloaded from: H.264 Demo Clips | H264info.com
Video Name: “I Am Legend” Trailer

Xavier AGX Powermode: MAXN

15x encodings simultaneously (command is executed 15 times at once):

gst-launch-1.0 -v filesrc location=ramdisk/iamlegend.mp4 ! qtdemux ! video/x-h264 ! h264parse  ! nvv4l2decoder ! queue ! nvv4l2h265enc bitrate=2000000 maxperf-enable=1 ! fpsdisplaysink text-overlay=0 video-sink=fakesink sync=0 &

#finished in 140seconds
#21 fps average each encoding

15x encodings within one command line:

gst-launch-1.0 -v \
filesrc location=ramdisk/iamlegend.mp4 ! qtdemux ! video/x-h264 ! h264parse ! nvv4l2decoder ! queue ! nvv4l2h265enc maxperf-enable=1 bitrate=2000000 ! fpsdisplaysink text-overlay=0 video-sink=fakesink sync=0 \
filesrc location=ramdisk/iamlegend.mp4 ! qtdemux ! video/x-h264 ! h264parse ! nvv4l2decoder ! queue ! nvv4l2h265enc maxperf-enable=1 bitrate=2000000 ! fpsdisplaysink text-overlay=0 video-sink=fakesink sync=0 \
filesrc location=ramdisk/iamlegend.mp4 ! qtdemux ! video/x-h264 ! h264parse ! nvv4l2decoder ! queue ! nvv4l2h265enc maxperf-enable=1 bitrate=2000000 ! fpsdisplaysink text-overlay=0 video-sink=fakesink sync=0 \
filesrc location=ramdisk/iamlegend.mp4 ! qtdemux ! video/x-h264 ! h264parse ! nvv4l2decoder ! queue ! nvv4l2h265enc maxperf-enable=1 bitrate=2000000 ! fpsdisplaysink text-overlay=0 video-sink=fakesink sync=0 \
filesrc location=ramdisk/iamlegend.mp4 ! qtdemux ! video/x-h264 ! h264parse ! nvv4l2decoder ! queue ! nvv4l2h265enc maxperf-enable=1 bitrate=2000000 ! fpsdisplaysink text-overlay=0 video-sink=fakesink sync=0 \
filesrc location=ramdisk/iamlegend.mp4 ! qtdemux ! video/x-h264 ! h264parse ! nvv4l2decoder ! queue ! nvv4l2h265enc maxperf-enable=1 bitrate=2000000 ! fpsdisplaysink text-overlay=0 video-sink=fakesink sync=0 \
filesrc location=ramdisk/iamlegend.mp4 ! qtdemux ! video/x-h264 ! h264parse ! nvv4l2decoder ! queue ! nvv4l2h265enc maxperf-enable=1 bitrate=2000000 ! fpsdisplaysink text-overlay=0 video-sink=fakesink sync=0 \
filesrc location=ramdisk/iamlegend.mp4 ! qtdemux ! video/x-h264 ! h264parse ! nvv4l2decoder ! queue ! nvv4l2h265enc maxperf-enable=1 bitrate=2000000 ! fpsdisplaysink text-overlay=0 video-sink=fakesink sync=0 \
filesrc location=ramdisk/iamlegend.mp4 ! qtdemux ! video/x-h264 ! h264parse ! nvv4l2decoder ! queue ! nvv4l2h265enc maxperf-enable=1 bitrate=2000000 ! fpsdisplaysink text-overlay=0 video-sink=fakesink sync=0 \
filesrc location=ramdisk/iamlegend.mp4 ! qtdemux ! video/x-h264 ! h264parse ! nvv4l2decoder ! queue ! nvv4l2h265enc maxperf-enable=1 bitrate=2000000 ! fpsdisplaysink text-overlay=0 video-sink=fakesink sync=0 \
filesrc location=ramdisk/iamlegend.mp4 ! qtdemux ! video/x-h264 ! h264parse ! nvv4l2decoder ! queue ! nvv4l2h265enc maxperf-enable=1 bitrate=2000000 ! fpsdisplaysink text-overlay=0 video-sink=fakesink sync=0 \
filesrc location=ramdisk/iamlegend.mp4 ! qtdemux ! video/x-h264 ! h264parse ! nvv4l2decoder ! queue ! nvv4l2h265enc maxperf-enable=1 bitrate=2000000 ! fpsdisplaysink text-overlay=0 video-sink=fakesink sync=0 \
filesrc location=ramdisk/iamlegend.mp4 ! qtdemux ! video/x-h264 ! h264parse ! nvv4l2decoder ! queue ! nvv4l2h265enc maxperf-enable=1 bitrate=2000000 ! fpsdisplaysink text-overlay=0 video-sink=fakesink sync=0 \
filesrc location=ramdisk/iamlegend.mp4 ! qtdemux ! video/x-h264 ! h264parse ! nvv4l2decoder ! queue ! nvv4l2h265enc maxperf-enable=1 bitrate=2000000 ! fpsdisplaysink text-overlay=0 video-sink=fakesink sync=0 \
filesrc location=ramdisk/iamlegend.mp4 ! qtdemux ! video/x-h264 ! h264parse ! nvv4l2decoder ! queue ! nvv4l2h265enc maxperf-enable=1 bitrate=2000000 ! fpsdisplaysink text-overlay=0 video-sink=fakesink sync=0

#80 fps average each encoding
#finished in 39sec

Jetson Nano Powermode: MAXN

10x encodings simultaneously:

gst-launch-1.0 -v filesrc location=ramdisk/iamlegend.mp4 ! qtdemux ! video/x-h264 ! h264parse  ! nvv4l2decoder ! queue ! nvv4l2h265enc bitrate=2000000 maxperf-enable=1 ! fpsdisplaysink text-overlay=0 video-sink=fakesink sync=0 &

#35fps average each encoding
#finished in 84 sec

10x encoding within one command line:

gst-launch-1.0 -v \
filesrc location=ramdisk/iamlegend.mp4 ! qtdemux ! video/x-h264 ! h264parse ! nvv4l2decoder ! queue ! nvv4l2h265enc maxperf-enable=1 bitrate=2000000 ! fpsdisplaysink text-overlay=0 video-sink=fakesink sync=0 \
filesrc location=ramdisk/iamlegend.mp4 ! qtdemux ! video/x-h264 ! h264parse ! nvv4l2decoder ! queue ! nvv4l2h265enc maxperf-enable=1 bitrate=2000000 ! fpsdisplaysink text-overlay=0 video-sink=fakesink sync=0 \
filesrc location=ramdisk/iamlegend.mp4 ! qtdemux ! video/x-h264 ! h264parse ! nvv4l2decoder ! queue ! nvv4l2h265enc maxperf-enable=1 bitrate=2000000 ! fpsdisplaysink text-overlay=0 video-sink=fakesink sync=0 \
filesrc location=ramdisk/iamlegend.mp4 ! qtdemux ! video/x-h264 ! h264parse ! nvv4l2decoder ! queue ! nvv4l2h265enc maxperf-enable=1 bitrate=2000000 ! fpsdisplaysink text-overlay=0 video-sink=fakesink sync=0 \
filesrc location=ramdisk/iamlegend.mp4 ! qtdemux ! video/x-h264 ! h264parse ! nvv4l2decoder ! queue ! nvv4l2h265enc maxperf-enable=1 bitrate=2000000 ! fpsdisplaysink text-overlay=0 video-sink=fakesink sync=0 \
filesrc location=ramdisk/iamlegend.mp4 ! qtdemux ! video/x-h264 ! h264parse ! nvv4l2decoder ! queue ! nvv4l2h265enc maxperf-enable=1 bitrate=2000000 ! fpsdisplaysink text-overlay=0 video-sink=fakesink sync=0 \
filesrc location=ramdisk/iamlegend.mp4 ! qtdemux ! video/x-h264 ! h264parse ! nvv4l2decoder ! queue ! nvv4l2h265enc maxperf-enable=1 bitrate=2000000 ! fpsdisplaysink text-overlay=0 video-sink=fakesink sync=0 \
filesrc location=ramdisk/iamlegend.mp4 ! qtdemux ! video/x-h264 ! h264parse ! nvv4l2decoder ! queue ! nvv4l2h265enc maxperf-enable=1 bitrate=2000000 ! fpsdisplaysink text-overlay=0 video-sink=fakesink sync=0 \
filesrc location=ramdisk/iamlegend.mp4 ! qtdemux ! video/x-h264 ! h264parse ! nvv4l2decoder ! queue ! nvv4l2h265enc maxperf-enable=1 bitrate=2000000 ! fpsdisplaysink text-overlay=0 video-sink=fakesink sync=0 \
filesrc location=ramdisk/iamlegend.mp4 ! qtdemux ! video/x-h264 ! h264parse ! nvv4l2decoder ! queue ! nvv4l2h265enc maxperf-enable=1 bitrate=2000000 ! fpsdisplaysink text-overlay=0 video-sink=fakesink sync=0

#35fps average each encoding
#finished in 84 sec

Any idea why AGX with is performing so bad with individual gst processes? Is this a bug or is there a magic option I missed to add or enable?

Hi,
We will check it and update.

Any news regarding this issue?

Hi,
We can observe the issue. There is performance degrade between 8 processes and 9 processes. It is still under investigation.

Hi DaneLLL ,
is there any update for Xavier AGX which solved performance degradation ? I can see there is JETPACK 5 Preview. Is there any news or informations about how to get full potential of Xavier AGX ? Is there something in JETPACK 5 which helps to resolve issues for theese devices ? We testet to transcode 8 streams with Jetpack 4.6.1 , and it works fine, but 9th stream and more causes all other streams to skip frames and degrade. We bought Jetson Xavier AGX just a weeks ago and testet all ffmpeg & gstreamer methods & we can confirm it’s still degrading . We would need to know how to achieve 32x1080p30fps transcoded streams as stated for this product can do. We need to use separate processes for each transcoded stream.

Thanks.