NVIDIA Jetson Xavier - Performance Tuning by Setting CPU, GPU, and Frequency Values Manually

From RidgeRun Developer Wiki



Previous: JetPack 5.0.2‎/Performance Tuning/Evaluating Performance Index Next: JetPack 5.0.2/Performance Tuning/Tuning Power








Manage CPU State

The Tegra will always boot from one CPU denominated the master CPU; this cannot be turned off, and all other CPUs can be turned off.

To manually turn on/off slave CPUs

1) Run the following command to turn on the slave CPU:

CPU=cpu1 #The number can be changed from 1-7
echo 1 > /sys/devices/system/cpu/$CPU/online

2) Run the following command to turn the slave CPU off:

echo 0 > /sys/devices/system/cpu/$CPU/online

To check the CPU state run the following commands:

cat /sys/devices/system/cpu/$CPU/online

3D Frequency Scaling

Frequency scaling allows the Tegra to change the CPU frequency according to the load in order to reduce power consumption; 3D frequency scaling is enabled by default.

To disable 3D frequency scaling, run the following command:

echo 0 >  /sys/devices/17000000.gv11b/enable_3d_scaling

To enable 3D frequency scaling, run the following command:

echo 1 >  /sys/devices/17000000.gv11b/enable_3d_scaling

Change CPU Frequency

To print the CPU lower boundary, upper boundary, and current frequency, run the following commands:

CPU=cpu1 #The number can be changed
cat /sys/devices/system/cpu/$CPU/cpufreq/cpuinfo_min_freq
cat /sys/devices/system/cpu/$CPU/cpufreq/cpuinfo_max_freq
cat /sys/devices/system/cpu/$CPU/cpufreq/cpuinfo_cur_freq

To change the CPU upper boundary, run the following command:

CPU_FREQ=115200
CPU=cpu1 #The number can be changed
echo $CPU_FREQ > /sys/devices/system/cpu/$CPU/cpufreq/scaling_max_freq

To change the CPU lower boundary, run the following command:

CPU_FREQ=2265600
CPU=cpu1 #The number can be changed
echo $CPU_FREQ > /sys/devices/system/cpu/$CPU/cpufreq/scaling_min_freq

To set the static CPU frequency, run the following commands:

CPU_FREQ=2265600
CPU=cpu1 #The number can be changed
echo $CPU_FREQ > /sys/devices/system/cpu/$CPU/cpufreq/scaling_min_freq
echo $CPU_FREQ > /sys/devices/system/cpu/$CPU/cpufreq/scaling_max_freq

Where CPU_FREQ must be among the values in /sys/devices/system/cpu/$CPU/cpufreq/scaling_available_frequencies

Change GPU Frequency

To print the GPU lower boundary, upper boundary, and current frequency, run the following commands:

cat /sys/devices/17000000.gv11b/devfreq/17000000.gv11b/min_freq
cat /sys/devices/17000000.gv11b/devfreq/17000000.gv11b/max_freq
cat /sys/devices/17000000.gv11b/devfreq/17000000.gv11b/cur_freq

To change the GPU upper boundary, run the following command:

GPU_FREQ=675750000
echo $GPU_FREQ > /sys/devices/17000000.gv11b/devfreq/17000000.gv11b/max_freq

To change the GPU lower boundary, run the following command:

GPU_FREQ=114750000
echo $GPU_FREQ > /sys/devices/17000000.gv11b/devfreq/17000000.gv11b/min_freq

To set the static GPU frequency, run the following command:

GPU_FREQ=675750000
echo $GPU_FREQ > /sys/devices/17000000.gv11b/devfreq/17000000.gv11b/min_freq
echo $GPU_FREQ > /sys/devices/17000000.gv11b/devfreq/17000000.gv11b/max_freq

Where GPU_FREQ is the value available in: /sys/devices/17000000.gv11b/devfreq/17000000.gv11b/available_frequencies

Change Memory Frequency

echo 1 > /sys/kernel/debug/bpmp/debug/clk/emc/mrq_rate_locked
echo 1 > /sys/kernel/debug/bpmp/debug/clk/emc/state
echo 665600000 > /sys/kernel/debug/bpmp/debug/clk/emc/rate

To print the EMC lower boundary, upper boundary, and current frequency, run the following commands:

cat /sys/kernel/debug/bpmp/debug/clk/emc/min_rate
cat /sys/kernel/debug/bpmp/debug/clk/emc/max_rate
cat /sys/kernel/debug/bpmp/debug/clk/emc/rate

To change the EMC upper boundary, run the following command:

EMC_FREQ=2133000000
echo $EMC_FREQ > /sys/kernel/debug/bpmp/debug/clk/emc/max_rate

To change the EMC lower boundary, run the following command:

EMC_FREQ=204000000
echo $EMC_FREQ > /sys/kernel/debug/bpmp/debug/clk/emc/min_rate

To set static EMC frequency, run the following commands:

EMC_FREQ=2133000000
echo 1 > /sys/kernel/debug/bpmp/debug/clk/emc/mrq_rate_locked
echo 1 > /sys/kernel/debug/bpmp/debug/clk/emc/state
echo $EMC_FREQ > /sys/kernel/debug/bpmp/debug/clk/emc/rate

Where EMC_FREQ in kHz is the value available in: /sys/kernel/debug/bpmp/debug/emc/tables/regular/



Previous: JetPack 5.0.2/Performance Tuning/Evaluating Performance Index Next: JetPack 5.0.2/Performance Tuning/Tuning Power