Programatically monitor usage and power (mW) for GPU, VPI, DLA on Orin

Hi I have the following system:

Jetson AGX Orin Developer Kit
CUDA Arch BIN: 8.7
L4T: 35.4.1
Jetpack: 5.1.2

I need to programmatically know the Utilization + Power consumption for:

  • GPU
  • CV hardware (PVA, VIC, OFA)
  • DLA hardware

I tried using several tools:

Using Jetson Power GUI we can manually export:
IGPU0-CURR_LOAD
dla0-STATE
VDD_GPU_SOC-IN_POWER
VDD_CPU_CV-IN_POWER

In this link: Jetson AGX Orin power consumption it is specified that there should be a VDD_CPU for the ARM Cortex but I have only VDD_CPU_CV.

Is DLA power included here too? But the consumption is for the whole CPU? How about the Computer Vision stack?
VDD_GPU_SOC is only for the GPU cores? I am confused. How can I distinguish between general CPU, DLA, CV stack?
Also, I don’t have any VDD_SOC in the logs.

Using Jetson Power GUI is painful, at least. One must play with GUI and no easy automation. Also, it is hard to sync code execution with power logging. All steps must be done by hand. Not funny.

I played a bit with tegrastats and using:

sudo tegrastats --interval 500 --readall --verbose --logfile tegralogs.txt

I get the VDD_GPU_SOC, VDD_CPU_CV statistics. However, it requires sudo and I don’t have GPU/DLA/VPI usage stats! Slightly better but still hard to sync with code execution steps. And again, above limitations persist (lack of specific voltages)

For tegrastats tool:

GR3D_FREQ - is for GPU utilization?
VIC_FREQ - This is ONLY for video playback and don;t include any of CV accelerator stack?

Is there another way of accessing programmatically the power consumptions/usages? I would like to access them from my code, and not to manually play with GUI.

I would like to access all the needed information (utilization + power for GPU, DLA CV) in sync with the code execution so everything is automated and reproducible.

Jtop have most (all?) the info available in GUI. https://jetsonhacks.com/2023/02/07/jtop-the-ultimate-tool-for-monitoring-nvidia-jetson-devices/ I didn’t test the responsiveness of their GUI but, at least for power, the fields match what other tools are offering. So I guess those are platform specific?

One alternative could be to look at jtop source code and extract pieces of code but it seems a bit hacky and not future proof. Also, their information seems patched together from various forum posts and documentation snippets.

Thank you!

P.S. Ideally the solution would be transferable to an Orin NX.
P.P.S. If the power is monitored for more devices together (CPU+DLA+CV hardware) I could run the code and record separate traces (eg no DLA or no CV accelerators) and then do some approximations. However, I would need to know what device is monitored and where.

please refer to official document.

https://docs.nvidia.com/jetson/archives/r35.5.0/DeveloperGuide/SD/PlatformPowerAndPerformance/JetsonOrinNanoSeriesJetsonOrinNxSeriesAndJetsonAgxOrinSeries.html

There is no power consumption that gives those two out separately.

VDD_CPU_CV includes both of them.

1 Like