Performance Optimization

View as Markdown

Display Side Optimizations

Exclusive Display Mode

  • Use Exclusive Display: This removes the display manager from the pipeline, allowing the application to directly own and control the display
  • Reduces Compositor Overhead: Eliminates window manager and compositor latency

Display Interface Selection

  • Prefer DisplayPort over HDMI: DisplayPort generally provides higher bandwidth and lower latency than HDMI
  • Match Bandwidth Requirements: Ensure the display interface can handle your data throughput requirements
  • Cable Quality: Use high-quality, short cables to minimize signal degradation

Display Settings Configuration

  • Disable Variable Backlight: Variable backlight can introduce up to one frame worth of delay
  • Set Higher Refresh Rate: Display refresh rate should be at least double the camera frame rate
    • Example: 60fps camera → minimum 120Hz display refresh rate
  • G-Sync Configuration: For systems with discrete GPU and G-Sync monitors:
    • Ensure G-Sync is properly enabled
    • Verify refresh rate is correctly configured
    • Skip this step if no discrete GPU is attached

Display Resolution Matching

  • Native Resolution: Use the display’s native resolution to avoid scaling overhead
  • Consistent Timing: Maintain consistent pixel clock and timing parameters

Application Side Optimizations

Holoscan Application Configuration

Use Fullscreen Mode:

$# Always use --fullscreen option for latency measurements
$python3 examples/e2e_imx274_latency.py --fullscreen
$python3 examples/e2e_vb1940_latency.py --fullscreen

HolovizOp Display Resolution:

1# Configure HolovizOp to match display resolution exactly
2holoviz_op = HolovizOp(
3 name="display",
4 width=display_width, # Match your display width (e.g., 1920, 2560)
5 height=display_height, # Match your display height (e.g., 1080, 1440)
6 enable_render_buffer_input=False, # Direct rendering
7 fullscreen=True
8)

System Tuning

CPU Optimization

$# Set CPU governor to performance mode
$sudo cpufreq-set -g performance
$
$# Disable CPU frequency scaling
$echo performance | sudo tee /sys/devices/system/cpu/cpu*/cpufreq/scaling_governor

GPU Optimization

$# Set GPU to maximum performance
$sudo nvidia-smi -pm 1
$sudo nvidia-smi -ac 5001,1590 # Memory,Graphics clocks
$
$# Enable persistence mode
$sudo nvidia-smi -pm ENABLED

Memory Optimization

$# Increase shared memory
$echo 'kernel.shmmax = 68719476736' | sudo tee -a /etc/sysctl.conf
$
$# Optimize memory allocation
$echo 'vm.swappiness = 1' | sudo tee -a /etc/sysctl.conf
$sudo sysctl -p