Performance-Latency and Throughput
🚧 Documentation under development
The PVA ISP for NVIDIA Jetson guide is currently under active development. Some sections may be incomplete or change without notice.
Questions? Contact RidgeRun or email to support@ridgerun.com.
ISP Latency Measurements
Latency measurements were performed using RidgeRun's PVA ISP GStreamer element on NVIDIA Jetson platforms to characterize the behavior of the complete ISP pipeline under different operating conditions and power configurations. Measurements focus on two complementary metrics:
- Glass-to-Glass Latency, representing the latency perceived by the end user from image acquisition to image presentation (live camera capture to display).
- GStreamer Pipeline Latency, representing the latency introduced by the complete
pvaispelement inside a multimedia pipeline.
Together, these measurements provide visibility into:
- Real-world camera-to-display latency.
- The impact of Jetson power profiles.
- The effect of PVA clock frequency on image processing performance.
- Resolution scaling behavior.
- Multimedia pipeline integration performance.
Evaluated Power Modes
The number of active CPU cores and PVA frequencies depend on the selected power mode.
| Power Mode | Active CPU Cores | PVA VPU Frequency (MHz) | PVA AXI Frequency (MHz) |
|---|---|---|---|
| MAXN | 12 | 1369.9 | 985.6 |
| MODE_50W | 12 | 307.2 | 217.6 |
| MODE_30W | 8 | 512 | 358.4 |
| MODE_15W | 4 | 307.2 | 217.6 |
| MODE_15W_PVA_MAX | 4 | 1369.9 | 985.6 |
The number of active cores influences the overall SoM consumption.
The MODE_15W_PVA_MAX power mode is explained below.
Custom PVA-Oriented Power Profiles
One of the evaluated profiles is a custom profile and is not part of the default Jetson AGX Orin power configuration.
This profile was created because the default 15W nvpmodel preset does not provide direct control over the PVA frequency ranges needed for this evaluation, particularly when minimising the power consumption of the SoM while maximising the PVA usage.
- MODE_15W_PVA_MAX
To reproduce the experiments, add the following power profiles to:
/etc/nvpmodel.conf
MODE_15W_PVA_MAX
< POWER_MODEL ID=4 NAME=MODE_15W_PVA_MAX > CPU_ONLINE CORE_0 1 CPU_ONLINE CORE_1 1 CPU_ONLINE CORE_2 1 CPU_ONLINE CORE_3 1 CPU_ONLINE CORE_4 0 CPU_ONLINE CORE_5 0 CPU_ONLINE CORE_6 0 CPU_ONLINE CORE_7 0 CPU_ONLINE CORE_8 0 CPU_ONLINE CORE_9 0 CPU_ONLINE CORE_10 0 CPU_ONLINE CORE_11 0 TPC_POWER_GATING TPC_PG_MASK 248 GPU_POWER_CONTROL_ENABLE GPU_PWR_CNTL_EN on CPU_A78_0 MIN_FREQ 729600 CPU_A78_0 MAX_FREQ 1113600 GPU MIN_FREQ 0 GPU MAX_FREQ 408000000 GPU_POWER_CONTROL_DISABLE GPU_PWR_CNTL_DIS auto EMC MAX_FREQ 2133000000 DLA0_CORE MAX_FREQ 614400000 DLA1_CORE MAX_FREQ 614400000 DLA0_FALCON MAX_FREQ 294400000 DLA1_FALCON MAX_FREQ 294400000 PVA0_VPS MAX_FREQ 1369600000 PVA0_AXI MAX_FREQ 985600000
Activate the profile:
#Change ID for the one that you want sudo nvpmodel -m 4
Verify the active profile:
sudo nvpmodel -q
The custom profiles used in this evaluation prioritize PVA performance while operating under reduced system power budgets.
Glass-to-Glass Latency
GStreamer Pipeline Latency
GStreamer pipeline latency measures the processing latency introduced by the complete pvaisp element.
Measurements are obtained using the GStreamer latency tracer for different scenarios:
- Live capture without
pvaispto display - Live capture and
pvaispto fake sink - Live capture and
pvaispto display
All the live capture pipelines use v4l2src and keeps the display manager disabled by using:
sudo systemctl stop display-manager
The following pipelines are used:
WIDTH=3840
HEIGHT=2160
# Case 1 (baseline): v4l2src without pvaisp directly to fakesink
GST_TRACERS='framerate;proctime' \
GST_DEBUG='GST_TRACER:7' \
gst-launch-1.0 -v rrv4l2src device=/dev/video0 io-mode=mmap ! "video/x-bayer,format=rggb,bpp=10,width=${WIDTH},height=${HEIGHT}" ! queue ! fakesink
# Case 2: v4l2src and pva isp without display using fakesink instead
GST_TRACERS='framerate;proctime' \
GST_DEBUG='GST_TRACER:7' \
gst-launch-1.0 -v rrv4l2src device=/dev/video0 io-mode=userptr ! "video/x-bayer,format=rggb,bpp=10,width=${WIDTH},height=${HEIGHT}" ! pvaisp params=pva_isp_params.yaml ! 'video/x-raw,format=NV12' ! queue ! fakesink
# Case 3: v4l2src and pva isp to display output
GST_TRACERS='framerate;proctime' \
GST_DEBUG='GST_TRACER:7' \
gst-launch-1.0 -v rrv4l2src device=/dev/video0 io-mode=userptr ! "video/x-bayer,format=rggb,bpp=10,width=${WIDTH},height=${HEIGHT}" ! pvaisp params=pva_isp_params.yaml ! 'video/x-raw,format=NV12' ! queue ! nvvidconv ! autovideosink sync=0
The following metrics are collected during each benchmark execution:
| Metric | Description |
|---|---|
| Resolution | Input and output image resolution processed by the ISP pipeline. |
| Power Mode | Jetson power profile used during the benchmark execution. |
| FPS Avg | Average number of frames processed per second during the benchmark run. |
| Proc Avg (ms) | Average processing time per frame measured by the GStreamer proc-time tracer for the ISP element. |
| CPU Load Avg (cores) | Average aggregate CPU load reported by tegrastats, expressed as equivalent active CPU cores. For example, ``0.63/12`` indicates an average load roughly equivalent to 0.63 fully utilized CPU cores out of 12 available cores. |
| GPU Avg (%) | Average GPU utilization reported by tegrastats during the benchmark. |
| Avg Power (W) | Average system power consumption computed from the VIN_SYS_5V0 rail reported by tegrastats. |
Case 1: V4L2 source directly to fakesink (without PVA ISP)
Obtained using this pipeline:
WIDTH=3840
HEIGHT=2160
#Case 1: v4l2src without pva isp directly to fakesink
GST_TRACERS='framerate;proctime' \
GST_DEBUG='GST_TRACER:7' \
gst-launch-1.0 -v rrv4l2src device=/dev/video0 io-mode=mmap ! "video/x-bayer,format=rggb,bpp=10,width=${WIDTH},height=${HEIGHT}" ! queue ! fakesink
Results:
| Power Mode | Resolution | FPS Avg | Proc Avg (ms) | CPU Load Avg (cores) | GPU Avg (%) | Avg Power (W) |
|---|---|---|---|---|---|---|
| MAXN | 3840x2160 (4K) | 61.48 | 0.00 | 0.0139/12 | 0.00 | 4.69 |
| 1920x1080 (FHD) | 59.60 | 0.00 | 0.0167/12 | 0.00 | 4.52 | |
| MODE_50W | 3840x2160 (4K) | 59.70 | 0.00 | 0.0264/12 | 0.00 | 4.70 |
| 1920x1080 (FHD) | 60.72 | 0.00 | 0.288/12 | 0.00 | 4.53 | |
| MODE_30W | 3840x2160 (4K) | 61.41 | 0.00 | 0.0282/8 | 0.00 | 4.70 |
| 1920x1080 (FHD) | 59.79 | 0.00 | 0.0264/8 | 0.00 | 4.52 | |
| MODE_15W_PVA_MAX | 3840x2160 (4K) | 61.38 | 0.00 | 0.02/4 | 0.00 | 4.50 |
| 1920x1080 (FHD) | 59.66 | 0.00 | 0.0209/4 | 0.00 | 4.32 | |
| MODE_15W | 3840x2160 (4K) | 60.97 | 0.00 | 0.0194/4 | 0.00 | 4.50 |
| 1920x1080 (FHD) | 60.83 | 0.00 | 2.24/4 | 0.00 | 4.32 |
The figures in bold represent points of comparison of the maximum performance mode vs the minimum + maximum PVA clocks.
Case 2: PVA ISP without display output (fakesink)
Obtained using this pipeline:
WIDTH=3840
HEIGHT=2160
# Case 2: v4l2src and pva isp without display using fakesink instead
GST_TRACERS='framerate;proctime' \
GST_DEBUG='GST_TRACER:7' \
gst-launch-1.0 -v rrv4l2src device=/dev/video0 io-mode=userptr ! "video/x-bayer,format=rggb,bpp=10,width=${WIDTH},height=${HEIGHT}" ! pvaisp params=pva_isp_params.yaml ! 'video/x-raw,format=NV12' ! queue ! fakesink
Results:
| Power Mode | Resolution | FPS Avg | Proc Avg (ms) | CPU Load Avg (cores) |
GPU Avg (%) | Avg Power (W) |
|---|---|---|---|---|---|---|
| MAXN | 3840x2160 (4K) | 34.24 | 26.797 | 0.2297/12 | 0.00 | 5.85 |
| 1920x1080 (FHD) | 61.57 | 7.890 | 0.2058/12 | 0.00 | 5.24 | |
| MODE_50W | 3840x2160 (4K) | 9.75 | 101.695 | 0.0833/12 | 0.00 | 5.08 |
| 1920x1080 (FHD) | 35.00 | 27.638 | 0.1724/12 | 0.00 | 5.07 | |
| MODE_30W | 3840x2160 (4K) | 13.79 | 71.084 | 0.1012/8 | 0.00 | 5.24 |
| 1920x1080 (FHD) | 48.24 | 19.641 | 0.2191/8 | 0.00 | 5.16 | |
| MODE_15W PVA_MAX |
3840x2160 (4K) | 28.04 | 33.927 | 5.29/4 | 0.00 | 5.52 |
| 1920x1080 (FHD) | 61.50 | 10.224 | 6.61/4 | 0.00 | 5.07 | |
| MODE_15W | 3840x2160 (4K) | 8.52 | 116.790 | 1.83/4 | 0.00 | 4.86 |
| 1920x1080 (FHD) | 31.24 | 31.092 | 4.61/4 | 0.00 | 4.81 |
The figures in bold represent points of comparison of the maximum performance mode vs the minimum + maximum PVA clocks.
Case 3: PVA ISP with display output
Obtained using this pipeline:
WIDTH=3840
HEIGHT=2160
#Case 3: v4l2src and pva isp to display output
GST_TRACERS='framerate;proctime' \
GST_DEBUG='GST_TRACER:7' \
gst-launch-1.0 -v rrv4l2src device=/dev/video0 io-mode=userptr ! "video/x-bayer,format=rggb,bpp=10,width=${WIDTH},height=${HEIGHT}" ! pvaisp params=pva_isp_params.yaml ! 'video/x-raw,format=NV12' ! queue ! nvvidconv ! autovideosink sync=0
Results:
| Power Mode | Resolution | FPS Avg | Proc Avg (ms) | CPU Load Avg (cores) |
GPU Avg (%) | Avg Power (W) |
|---|---|---|---|---|---|---|
| MAXN | 3840x2160 (4K) | 31.38 | 29.49 | 0.6324/12 | 13.39 | 6.25 |
| 1920x1080 (FHD) | 61.00 | 8.96 | 0.6321/12 | 6.55 | 5.56 | |
| MODE_50W | 3840x2160 (4K) | 8.34 | 116.12 | 0.1842/12 | 3.64 | 5.24 |
| 1920x1080 (FHD) | 31.68 | 31.11 | 0.2888/12 | 3.61 | 5.23 | |
| MODE_30W | 3840x2160 (4K) | 13.59 | 70.51 | 0.2897/8 | 5.21 | 5.50 |
| 1920x1080 (FHD) | 48.83 | 19.51 | 0.4433/8 | 4.88 | 5.43 | |
| MODE_15W PVA_MAX |
3840x2160 (4K) | 26.45 | 34.71 | 0.6673/4 | 16.33 | 5.95 |
| 1920x1080 (FHD) | 60.32 | 10.28 | 0.6121/4 | 7.36 | 5.39 | |
| MODE_15W | 3840x2160 (4K) | 8.41 | 115.89 | 0.2291/4 | 3.88 | 5.07 |
| 1920x1080 (FHD) | 30.86 | 31.56 | 0.3718/4 | 4.09 | 5.03 |
The figures in bold represent points of comparison of the maximum performance mode vs the minimum + maximum PVA clocks.
Performance comparison
After comparing case 1 with case 2, it is possible to compute the difference between the CPU load and the power drawn by PVA ISP:
| Power Mode | Resolution | Processing Time (ms) |
Additional Power Consumption (W) |
|---|---|---|---|
| MAXN | 3840x2160 (4K) | 26.797 | 1.16 |
| 1920x1080 (FHD) | 7.89 | 0.72 | |
| MODE 15W PVA MAX | 3840x2160 (4K) | 33.927 | 1.02 |
| 1920x1080 (FHD) | 10.224 | 0.75 |
In 1080p, the power consumption by a single stream is 0.75 W, whereas for 4K is 1.16 W. This includes a full ISP pipeline, as described in Complete Pipeline.
Additionally, all these figures are retrieved for a single stream. Nevertheless, PVA ISP is using the 50% of the PVA, leaving room to introduce another stream while maintaining the performance. After three streams, the PVA shall share VPU amongst two or more streams.