Jump to content

Performance-Latency and Throughput

From RidgeRun Developer Wiki

Follow us on: YouTube Twitter LinkedIn Email Share this page

Share This Page

🚧 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.

Preferred Partner Logo 3 Partner Program Banner




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 pvaisp element 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.


Information
All the metrics were taken with an ASIP Programmer-compiled PVA ISP. The results may vary if NVVPU compiler is used


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

Important
These metrics are under review. They will be released soon


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 pvaisp to display
  • Live capture and pvaisp to fake sink
  • Live capture and pvaisp to 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.


Notice
PVA ISP is allocated in one VPU (out of two). The raw performance of PVA supports two parallel streams at the same framerate as presented below.


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.


Cookies help us deliver our services. By using our services, you agree to our use of cookies.