GStreamer Qt Overlay for Embedded Systems/Performance/jetson: Difference between revisions

no edit summary
(Created page with "<noinclude> {{GStreamer Qt Overlay for Embedded Systems/Head|previous=Performance/Nano|next=Troubleshooting}} </noinclude> {{DISPLAYTITLE:GstQtOverlay plugin performance on N...")
 
No edit summary
Line 121: Line 121:
The total consumption of the pipeline is higher in the NVMM case since there are more elements. The GstQtOverlay consumes less CPU in NVMM mode.
The total consumption of the pipeline is higher in the NVMM case since there are more elements. The GstQtOverlay consumes less CPU in NVMM mode.


==Nano==
For testing purposes, take into account the following points:
* Maximum performance mode enabled: all cores, and Jetson clocks enabled
* Jetpack 4.5 (4.2.1 or earlier is not recommended)
* Base installation
* The GstQtOverlay is surrounded by queues to measure the actual capability of GstQtOverlay
For measuring and contrasting the performances with and without NVMM support for every format, we used the following pipelines:
'''NVMM using nvvidconv''':
<pre>
gst-launch-1.0 videotestsrc pattern=black ! 'video/x-raw, width=1920, height=1080, format=NV12' ! queue ! nvvidconv ! queue ! 'video/x-raw(memory:NVMM), format=RGBA' ! qtoverlay qml=gst-libs/gst/qt/main.qml ! perf ! queue ! nvvidconv ! 'video/x-raw' ! fakesink sync=false
</pre>
'''NVMM with native UYVY and NV12 support''':
<pre>
gst-launch-1.0 videotestsrc pattern=black ! 'video/x-raw, width=1920, height=1080, format=NV12' ! queue ! nvvidconv ! queue ! 'video/x-raw(memory:NVMM), format=NV12' ! qtoverlay qml=gst-libs/gst/qt/main.qml ! perf ! queue ! nvvidconv ! 'video/x-raw' ! fakesink sync=false
</pre>
'''No NVMM'''
<pre>
gst-launch-1.0 videotestsrc pattern=black ! 'video/x-raw, width=1920, height=1080' ! queue ! qtoverlay qml=gst-libs/gst/qt/main.qml ! perf ! queue ! fakesink sync=false
</pre>
The results obtained:
<center>
{| class="wikitable"
|- style="font-weight:bold;"
! Measurement
! RGBA
! UYVY
! NV12
|-
| No NVMM
| 57 fps<br />
| N/A
| N/A
|-
| NVMM with nvvidconv<br />
| 121 fps<br />
| 67 fps
| 61 fps
|-
| NVMM with native formats<br />
| 123 fps<br />
| 67 fps
| 61 fps
|}
</center>
While using the native formats may not provide big performance gains here as it still uses nvvidconv to upload to NVMM memory, it allows connecting directly to some cameras that output NV12 in NVMM memory like with the nvarguscamerasrc element.
'''CPU usage'''
Taking the following pipelines as reference:
'''No NVMM'''
<pre>
gst-launch-1.0 videotestsrc is-live=true ! 'video/x-raw, width=1920, height=1080'  ! qtoverlay qml=gst-libs/gst/qt/main.qml ! perf print-cpu-load=true ! 'video/x-raw, width=1920, height=1080' ! fakesink
</pre>
'''NVMM''':
<pre>
gst-launch-1.0 videotestsrc is-live=true ! 'video/x-raw, width=1920, height=1080' ! nvvidconv ! 'video/x-raw(memory:NVMM), width=1920, height=1080' ! qtoverlay qml=gst-libs/gst/qt/main.qml ! perf print-cpu-load=true ! nvvidconv ! 'video/x-raw, width=1920, height=1080'  ! fakesink sync=false
</pre>
'''Results'''
<center>
{| class="wikitable"
|- style="font-weight:bold;"
! Measurement
! No NVMM<br />
! NVMM
|-
| GstQtOverlay
| 2%
| 2%
|-
| Rest of pipeline
| 17%
| 13%
|-
| Total
| 19%
| 15%
|}
</center>


<noinclude>
<noinclude>
{{GStreamer Qt Overlay for Embedded Systems/Foot|Performance/Nano|Troubleshooting}}
{{GStreamer Qt Overlay for Embedded Systems/Foot|Performance/Nano|Troubleshooting}}
</noinclude>
</noinclude>