deepstream-profile-pipeline

Profile DeepStream pipelines with Nsight Systems and derive performance configs from measurements.

2|Updated Aug 20, 2026
One-click install
npx skills add https://github.com/atomicrajat/industry_safety_monitoring_system --skill deepstream-profile-pipeline-atomicrajat
Or copy as Structured Prompt for Agent
Please help me install this Agent Skill.
Skill: deepstream-profile-pipeline
Source: https://github.com/atomicrajat/industry_safety_monitoring_system/tree/main/.claude/skills/deepstream-profile-pipeline
Command: npx skills add https://github.com/atomicrajat/industry_safety_monitoring_system --skill deepstream-profile-pipeline-atomicrajat

SYSTEM DOCUMENTATION & REQUIREMENTS

💡 This Skill includes scripts (resource) and references (resource) components.

What problem does it solve? DeepStream video-analytics pipelines are typically configured by guesswork, leaving GPU decode, compute, or memory-bandwidth bottlenecks undiagnosed. This Skill replaces trial-and-error tuning with a measured 6-stage workflow that identifies the actual bottleneck and derives every config knob from two measured numbers: inference plateau batch and hardware ceilings. ## Core Features & Use Cases - Stage 0 perf-correct presets: Pre-applies INT8/FP16 precision, NVMM zero-copy memory, model-dimension streammux, and fakesink defaults before a pipeline is even generated. - Measurement-driven profiling: Runs an inference-only micro-benchmark sweep, queries nvidia-smi for NVDEC/compute/bandwidth ceilings, and captures end-to-end traces with nsys profile and nsys stats. - Bottleneck classification and capacity report: Classifies the pipeline as DECODE_BOUND, COMPUTE_BOUND, MEMORY_BW_BOUND, TRACKER_BOUND, or SYNC_BOUND, then computes max-streams capacity with bottleneck-specific remediation via the capacity_report.py script. - Use Case: An engineer asks how many 1080p30 H.264 streams a GPU can handle for ResNet18 detection. The Skill runs the micro-benchmark, classifies the bound type, and reports a concrete max-streams number plus which hardware upgrade actually helps. ## Quick Start Ask the agent to profile your DeepStream pipeline or ask how many streams your GPU can handle for your model at your target FPS.

Frequently Asked Questions about deepstream-profile-pipeline

High-intent search queries and answers about installing and using this skill.

FAQPage Schema
How do I profile a DeepStream pipeline with Nsight Systems?

Capture the pipeline with nsys profile using --trace=cuda,nvtx,osrt and --gpu-metrics-devices=all for 30 seconds, then extract per-plugin timings with nsys stats reports like nvtx_sum and cuda_gpu_kern_sum. The Skill runs this as Stage 5 after a micro-benchmark and config derivation.

How many streams can my GPU handle for DeepStream inference?

Run the capacity report, which divides the measured peak aggregate FPS from the micro-benchmark by your target per-stream FPS. It also compares against the theoretical NVDEC decode ceiling and states whether compute, decode, or memory bandwidth is the limiting factor.

Which DeepStream container should I use for profiling?

Use nvcr.io/nvidia/deepstream:9.0-triton-multiarch. The slimmer 9.0-samples-multiarch variant strips the nsys NVTX injector and produces empty per-plugin NVTX traces, so it must not be used for profiling.

Why is my DeepStream pipeline decode-bound instead of compute-bound?

Decode-bound means the NVDEC engines are saturated while compute is underutilized, detected when doubling parallel sources nearly doubles aggregate FPS or nvidia-smi dmon shows decoder utilization at 90% or more. The fix is more NVDEC engines, lower input resolution, or a codec change, not a faster compute GPU.

Does this profiling workflow require a GUI or Nsight Lens?

No, the workflow is terminal-only and runs fully headless. It uses nsys profile for capture and nsys stats for extraction, with no dependency on Nsight Lens or any graphical interface.

What are the limitations of NVTX-based per-plugin profiling in DeepStream?

NVTX coverage is inconsistent across DeepStream versions and container images, and plain GStreamer-core elements like queue or h264parse never emit NVTX. The Skill treats NVTX as a bonus signal and classifies bottlenecks primarily from micro-benchmark scaling shape and nvidia-smi dmon data.