Will the NVP Model clock configuration affect the execution of the CPU or GPU DVFS governor strategy?

I am conducting tests on an AGX Orin with 32GB RAM. I have set the NVP Model to max and am using the device’s default CPU governor—schedutil. After initiating some stress tests, I noticed an odd behavior: the CPU remains locked at its maximum frequency of 2188.8 MHz even when the CPU utilization is very low.

This is quite unusual. Therefore, as the question in the title suggests, I want to find out whether the NVP Model configuration will affect the selection and execution of the CPU governor strategy. The same question applies to the GPU.

*** Please note that this reply is generated by LLM automatically ***

Based on the provided context, it appears that you are conducting tests on a Jetson AGX Orin device and have set the default CPU governor. You are experiencing unusual behavior during stress tests and want to know how the CPU and GPU frequencies are managed.

According to the provided context, NVIDIA selects a cpufreq governor for each Jetson platform, including the Jetson AGX Orin series, and tunes it to achieve a balance between power and performance. The cpufreq platform driver reconciles requests for CPU frequency changes with constraints imposed by thermal or electrical limits and updates the CPU clock speed.

In the case of the Jetson Orin, it uses an NAFLL (NVIDIA Adaptive Frequency and Voltage Lock Loop) to clock each CPU. The NAFLLs are configured for Adaptive Voltage and Frequency Scaling (AVFS), which allows for dynamic adjustment of CPU voltage and frequency based on workload demands. The hardware, with the assistance of the BPMP firmware, ensures that the CPU voltage is appropriate for the NAFLL to deliver requested CPU frequencies.

Regarding the GPU, the context does not provide explicit information on how GPU frequencies are managed. However, it is likely that the GPU frequency is also managed by a similar mechanism, possibly using a different governor or frequency scaling algorithm.

To answer your question, the CPU frequency is managed by the cpufreq governor, which is selected and tuned by NVIDIA for the Jetson AGX Orin series. The NAFLL and AVFS mechanisms work together to dynamically adjust CPU voltage and frequency based on workload demands, while ensuring that the CPU voltage is within safe limits.

For the GPU, without explicit information, it is difficult to provide a definitive answer. However, it is likely that the GPU frequency is managed by a similar mechanism, possibly using a different governor or frequency scaling algorithm.

In summary, the CPU frequency is managed by the cpufreq governor, NAFLL, and AVFS mechanisms, while the GPU frequency management is not explicitly described in the provided context.

*** Please give the thumbs up if you get answers you like. Or provide feedback to help us improve the answer. ***

Thank you very much for your reply, but I’m sorry to say that I still don’t understand the relationship between the CPU frequency governor and the NVP Model. Will setting the NVP Model to different levels affect the operation of the CPU frequency governor?

Hi 985958118,

Are you using the devkit or custom board for AGX Orin?
What’s the Jetpack version in use?

Please share the results of the following commands on your board at this moment.

$ top
$ sudo tegrastats
$ sudo nvpmodel -q --verbose

I’m very sorry, but I’m currently running some experiments where I’ve modified the CPU and GPU governors and locked their frequencies. Unfortunately, I can’t stop the experiments immediately, so the output of the command sudo nvpmodel -q --verbose might appear abnormal.

image

$ top

$ sudo tegrastats

$ sudo nvpmodel -q --verbose

The current reading looks good to me as the python is running with CPU0 99%.

Please share them again after you finish the experiment so that we can check the original issue.

You can run them in the console and share me with a file instead of screenshot.

Yes, I used taskset to pin the task to CPU0.

I’ve saved the output of different commands into separate files.

I have noticed an abnormal phenomenon: when I fixed the frequency, I set both the CPU and GPU governors to userspace. After the task execution was completed, I restored the CPU governor to schedutil and the GPU governor to nvhost_podgov. However, I found that the CPU and GPU frequencies were still running at their maximums, even when there was no load at that time.

$ jtop

$ sudo tegrastats >> tegrastats.log

tegrastats.log (2.7 KB)

$ sudo nvpmodel -q --verbose > nvpmodel.log

nvpmodel.log (3.4 KB)

No, it does not affect the selection, but it restricts the execution.
While the NVP Model usually doesn’t change which governor is selected(e.g., it keeps schedutil), it strictly dictates the operating boundaries (Minimum and Maximum frequencies).

Please refer to the following lines that the frequencies for both CPU and GPU have been specified in NVP model config.

NVPM VERB: PARAM CPU_A78_0: ARG MIN_FREQ: PATH /sys/devices/system/cpu/cpu0/cpufreq/scaling_min_freq: REAL_VAL: 2188800 CONF_VAL: 729600
NVPM VERB: PARAM CPU_A78_0: ARG MAX_FREQ: PATH /sys/devices/system/cpu/cpu0/cpufreq/scaling_max_freq: REAL_VAL: 2188800 CONF_VAL: 9223372036854775807
NVPM VERB: PARAM CPU_A78_1: ARG MIN_FREQ: PATH /sys/devices/system/cpu/cpu4/cpufreq/scaling_min_freq: REAL_VAL: 729600 CONF_VAL: 729600
NVPM VERB: PARAM CPU_A78_1: ARG MAX_FREQ: PATH /sys/devices/system/cpu/cpu4/cpufreq/scaling_max_freq: REAL_VAL: 2188800 CONF_VAL: 9223372036854775807
NVPM VERB: PARAM GPU: ARG MIN_FREQ: PATH /sys/devices/platform/17000000.gpu/devfreq_dev/min_freq: REAL_VAL: 930750000 CONF_VAL: 0
NVPM VERB: PARAM GPU: ARG MAX_FREQ: PATH /sys/devices/platform/17000000.gpu/devfreq_dev/max_freq: REAL_VAL: 930750000 CONF_VAL: 9223372036854775807

That’s why you got the following behavior.

Sorry, I mistakenly thought that schedutil would automatically adjust scaling_min_freq and scaling_max_freq. After manually resetting them, everything worked fine.