AM6 CPU freq and num of cores

From Variscite Wiki
Revision as of 14:09, 12 April 2024 by Ken (talk | contribs)
(diff) ← Older revision | Latest revision (diff) | Newer revision → (diff)
Warning: This page is designed to be used with a 'release' URL parameter.

This page is using the default release am62-yocto-kirkstone-6.1.46_09.01.00.08-v1.0.
To view this page for a specific Variscite SoM and software release, please follow these steps:

  1. Visit variwiki.com
  2. Select your SoM
  3. Select the software release

CPU cores

There are two ways to disable/enable CPU cores:

1. Add 'maxcpus=n' (n being the number of cores you wish to activate), to the kernel command line (the bootargs from U-Boot).
E.g. Assuming you are using our latest U-Boot, stop at the U-Boot command line and enter:

=> setenv kernelargs maxcpus=2


2. To disable/enable cores at kernel runtime:
Disable core X:

# echo 0 > /sys/devices/system/cpu/cpuX/online

Enable core X:

# echo 1 > /sys/devices/system/cpu/cpuX/online

X being the core number you want to enable/disable, and can range from '1' to '(number of actual CPU cores)-1' (cpu0 is always enabled).

To see the active cores, run:

# cat /proc/cpuinfo

CPU frequencies

Governors:
There are several frequency governors which determine the frequency policy.
The default frequency governor is "ondemand", which sets the CPU frequency depending on the current system load.
(Note: the default governor is selected in the kernel defconfig. You can choose a different default governor using menuconfig before building the kernel - to reach this setting, go to: CPU Power Management -> CPU Frequency scaling -> Default CPUFreq governor)

To list all available governors:

# cat /sys/devices/system/cpu/cpu0/cpufreq/scaling_available_governors

To read about the different governors, see the following page from the Linux documentation:
https://github.com/varigit/linux-imx/blob/5.4-2.1.x-imx_var01/Documentation/admin-guide/pm/cpufreq.rst

To set the current governor:

# echo GOVERNOR > /sys/devices/system/cpu/cpu0/cpufreq/scaling_governor

(GOVERNOR being one of the available governors)

Useful commands:
To see the available CPU frequencies:

# cat /sys/devices/system/cpu/cpu0/cpufreq/scaling_available_frequencies


To see the current CPU frequency:

# cat /sys/devices/system/cpu/cpu0/cpufreq/scaling_cur_freq


Common scenarios:
1. Use the default "ondemand" governor and limit the maximum allowed CPU freq. using the following commands:

To see the current maximum allowed CPU frequency:

# cat /sys/devices/system/cpu/cpu0/cpufreq/scaling_max_freq


To set the maximum allowed CPU frequency:

# echo FREQ > /sys/devices/system/cpu/cpu0/cpufreq/scaling_max_freq

(FREQ being one of the available CPU frequencies)

2. Use the "userspace" governor and set the CPU to a specific frequency using the following command:

# echo FREQ > /sys/devices/system/cpu/cpu0/cpufreq/scaling_setspeed

(FREQ being one of the available CPU frequencies)