GStreamer Qt Overlay for Embedded Systems/Performance/Xavier: Difference between revisions
Jcaballero (talk | contribs) (Created page with "<noinclude> {{GStreamer Qt Overlay for Embedded Systems/Head|next=GstQtOverlay Overview/Architecture}} </noinclude> <noinclude> {{GStreamer Qt Overlay for Embedded Systems/...") |
mNo edit summary |
||
(5 intermediate revisions by 3 users not shown) | |||
Line 1: | Line 1: | ||
<noinclude> | <noinclude> | ||
{{GStreamer Qt Overlay for Embedded Systems/Head|next= | {{GStreamer Qt Overlay for Embedded Systems/Head|previous=Performance/Nano|next=Performance/nxp}} | ||
</noinclude> | </noinclude> | ||
{{DISPLAYTITLE:GstQtOverlay plugin performance on Xavier NX|noerror}} | |||
For testing purposes, take into account the following points: | |||
* Maximum performance mode enabled: all cores, and Jetson clocks enabled | |||
* Jetpack 4.4 (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, we used the following pipelines: | |||
'''NVMM''': | |||
<pre> | |||
gst-launch-1.0 videotestsrc pattern=black ! 'video/x-raw, width=1920, height=1080' ! queue ! nvvidconv ! queue ! 'video/x-raw(memory:NVMM)' ! 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 | |||
! Jetson NX | |||
|- | |||
| No NVMM | |||
| 190 fps<br /> | |||
|- | |||
| NVMM<br /> | |||
| 265 fps<br /> | |||
|} | |||
</center> | |||
<br> | |||
With the addition of native UYVY and NV12 support for NVMM memory, we measured the performance for each format between using nvvidconv or the native support. The following pipelines were used: | |||
'''NVMM using nvvidconv''': | |||
<pre> | |||
gst-launch-1.0 videotestsrc pattern=black ! 'video/x-raw, width=1920, height=1080, format=RGBA' ! 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> | |||
The results obtained: | |||
<center> | |||
{| class="wikitable" | |||
|- style="font-weight:bold;" | |||
! Measurement | |||
! RGBA | |||
! UYVY | |||
! NV12 | |||
|- | |||
| NVMM with nvvidconv | |||
| 227 fps<br /> | |||
| 200 fps<br /> | |||
| 177 fps<br /> | |||
|- | |||
| NVMM with native formats<br /> | |||
| 227 fps<br /> | |||
| 172 fps<br /> | |||
| 177 fps<br /> | |||
|} | |||
</center> | |||
'''CPU usage''' | |||
Take 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 ! '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 ! 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 | |||
| 16.5% | |||
| 7.3% | |||
|- | |||
| Rest of pipeline | |||
| 14% | |||
| 27.8% | |||
|- | |||
| Total | |||
| 30.5% | |||
| 35.1% | |||
|} | |||
</center> | |||
<br> | |||
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. | |||
<noinclude> | <noinclude> | ||
{{GStreamer Qt Overlay for Embedded Systems/Foot|| | {{GStreamer Qt Overlay for Embedded Systems/Foot|Performance/Nano|Performance/nxp}} | ||
</noinclude> | </noinclude> |
Latest revision as of 19:14, 6 October 2023
GStreamer Qt Overlay |
---|
Overview |
Getting Started |
Examples |
Performance |
Similar Solutions |
Troubleshooting |
FAQ |
Contact Us |
For testing purposes, take into account the following points:
- Maximum performance mode enabled: all cores, and Jetson clocks enabled
- Jetpack 4.4 (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, we used the following pipelines:
NVMM:
gst-launch-1.0 videotestsrc pattern=black ! 'video/x-raw, width=1920, height=1080' ! queue ! nvvidconv ! queue ! 'video/x-raw(memory:NVMM)' ! qtoverlay qml=gst-libs/gst/qt/main.qml ! perf ! queue ! nvvidconv ! 'video/x-raw' ! fakesink sync=false
No NVMM
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
The results obtained:
Measurement | Jetson NX |
---|---|
No NVMM | 190 fps |
NVMM |
265 fps |
With the addition of native UYVY and NV12 support for NVMM memory, we measured the performance for each format between using nvvidconv or the native support. The following pipelines were used:
NVMM using nvvidconv:
gst-launch-1.0 videotestsrc pattern=black ! 'video/x-raw, width=1920, height=1080, format=RGBA' ! 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
NVMM with native UYVY and NV12 support:
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
The results obtained:
Measurement | RGBA | UYVY | NV12 |
---|---|---|---|
NVMM with nvvidconv | 227 fps |
200 fps |
177 fps |
NVMM with native formats |
227 fps |
172 fps |
177 fps |
CPU usage
Take the following pipelines as reference:
No NVMM
gst-launch-1.0 videotestsrc is-live=true ! 'video/x-raw, width=1920, height=1080' ! qtoverlay qml=gst-libs/gst/qt/main.qml ! 'video/x-raw, width=1920, height=1080' ! fakesink
NVMM:
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 ! nvvidconv ! 'video/x-raw, width=1920, height=1080' ! fakesink sync=false
Results
Measurement | No NVMM |
NVMM |
---|---|---|
GstQtOverlay | 16.5% | 7.3% |
Rest of pipeline | 14% | 27.8% |
Total | 30.5% | 35.1% |
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.