CPU Frequency and DVFS - i.MX6 and i.MX8M
Revision and Notes
Date | Owner | Revision | Notes |
---|---|---|---|
Feb 28, 2022 |
| 1.0 | Initial release |
Table of Contents |
Introduction
The Linux Kernel supports dynamic voltage and frequency switching (DVFS) in order to minimize power usage. Generally, the feature should remain enabled, however, if power consumption and heat dissipation aren't an issue and low latency is required, it might make sense to disable frequency scaling.
Maximum Frequency by SoMs
The maximum frequency to be used depends on the SoC present in the module, see the table below:
Module | Maximum frequency (Hz) |
---|---|
i.mx6 | 792000 |
i.mx8m plus/mini (Industrial) | 1600000 |
i.mx8m plus/mini (Commercial) | 1800000 |
CPU Frequency
Please Note:
The operation below requires root access.
CPU frequency can be changed by using one of the following methods:
Changing the scaling governor
CPU governors can be viewed as preconfigured power settings for the CPU, for detailed information about governors consult this article.
Available governors can be seen through "scaling_available_governors" file:
root@sr-imx8:/home/debian# cat /sys/devices/system/cpu/cpu0/cpufreq/scaling_available_governors
conservative powersave userspace ondemand performance schedutil
Execute the following command to see current scaling governor:
root@sr-imx8:/home/debian# cat /sys/devices/system/cpu/cpufreq/policy0/scaling_governor
ondemand
Execute the following command to change the scaling governor:
echo performance > /sys/devices/system/cpu/cpufreq/policy0/scaling_governor
Where performance is the name of the scaling governor.
Changing CPU frequency
Please Note:
CPU frequency can be changed only when the scaling governor is set to userspace.
Available frequencies values can be seen through "scaling_available_frequencies" file:
Execute the following command to see current CPU frequency:
Execute the following command to set CPU frequency:
Where frequency is one of the available CPU frequencies.
Note:
The userspace governor must be set to change the frequency value.
The system will adjust to an appropriate voltage according to frequency. Please note that depending on the board/die temperature, thermal throttling might limit the current frequency in use.
CPUFreq Userspace Tools
The cpufreq userspace tools can be used to achieve the same results as above.
Check the current frequency information:
Change CPU frequency behavior to userspace:
Change CPU frequency value by setting the CPU frequency explicitly:
Where frequency is the desired frequency.
Enable/Disable CPU
Check the number of available CPUs/cores by simply running the following command and hit '1':
Disable CPU
Directory path to see available CPU devices : /sys/devices/system/cpu
To disable CPU core, execute the following command:
Verify whether CPU has been disabled or not by executing TOP utility.
Choose on which one to work when using the previous command by checking the CPU core number:
Enable CPU
To enable CPU which have been disabled above, execute the following:
Check the status of enable CPUs by executing TOP utility.
GPU clock information and debugging
go to section 14.3 of https://www.nxp.com/docs/en/user-guide/i.MX_AA_Graphics_User's_Guide.pdf
SolidRun Ltd.