Issues encountered when analyzing a ROS system using nsys

I am running multiple processes across several terminals on a single host and want to analyze the system-wide CPU and GPU utilization using nsys . I opened a new terminal and executed nsys profile --sample=system-wide (without specifying any application). However, it only collected CPU-related metrics . When I tried adding --trace=cuda,opengl,osrt , it threw an error stating that the --trace option requires a target application. But my goal is to analyze resource usage across the entire system , not limited to specific applications.

Requirements:

I want to capture process-level metrics :

  • CPU utilization
  • Memory utilization
  • GPU utilization
  • GPU memory (VRAM) utilization

Problem:

  1. If I use --sample=system-wide alone (without --trace), it only captures CPU data.
  2. If I combine --trace with --sample=system-wide, it forces me to specify applications, which defeats the purpose of system-wide analysis.

Currently, the only workaround I can think of is packaging all applications into a single script for profiling. However, in our ROS-based system, there are numerous nodes launched via roslaunch. Manually adding all nodes to a shell script is impractical. We want to avoid this and directly use nsys profile --system-wide without explicitly listing applications.

How can I achieve this?

–sample=system-wide is the option that tells Nsight Systems that you want to sample CPU backtraces on a system wide basis.

If you want system wide for GPU metric information --gpu-metrics* see User Guide — nsight-systems 2025.3 documentation for specifics. (That’s a direct link to the GPU hardware profiling section of the documentation, no matter how the forum munges it.