设置活动 CPU 核心数

此项可以在启动时或运行时设置。要在启动时设置,请进入 U-boot 提示符并设置以下环境变量。

以下示例将 CPU 数量设置为 2(假设四核系统):

1
2
3
4
=> setenv extraargs maxcpus=2
=> setenv mmcargs 'setenv bootargs ${jh_clk} console=${console} root=${mmcroot} ${extraargs}'
=> saveenv
=> boot

要检查 CPU 数量:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
# cat /proc/cpuinfo
processor : 0
BogoMIPS : 16.00
Features : fp asimd evtstrm aes pmull sha1 sha2 crc32 cpuid
CPU implementer : 0x41
CPU architecture: 8
CPU variant : 0x0
CPU part : 0xd03
CPU revision : 4

processor : 1
BogoMIPS : 16.00
Features : fp asimd evtstrm aes pmull sha1 sha2 crc32 cpuid
CPU implementer : 0x41
CPU architecture: 8
CPU variant : 0x0
CPU part : 0xd03
CPU revision : 4

要在运行时禁用/启用 CPU:

1
# echo 0 > /sys/devices/system/cpu/cpuN/online

其中N是 CPU 核心的数量。在 4 核系统中,N 为 0 到 3 之间的数字。

CPU频率

有多个频率调节器可以确定频率策略。
列出所有可用的调节器:

1
2
# cat /sys/devices/system/cpu/cpu0/cpufreq/scaling_available_governors
conservative userspace powersave ondemand performance schedutil

默认频率调节器是“ondemand”,它根据当前系统负载设置 CPU 频率。

有关 CPU 频率和调速器的更多信息,请参阅内核文档:
https://github.com/TechNexion/linux-tn-imx/blob/tn-imx_5.4.70_2.3.0-stable/Documentation/admin-guide/pm/cpufreq.rst

设置调速器:

1
# echo <governor> > /sys/devices/system/cpu/cpu0/cpufreq/scaling_governor

例如,将调控器设置为powersave:

1
# echo powersave > /sys/devices/system/cpu/cpu0/cpufreq/scaling_governor

列出可用的频率:

1
2
# cat /sys/devices/system/cpu/cpu0/cpufreq/scaling_available_frequencies
1200000 1600000 1800000

查看当前CPU频率:

1
2
# cat /sys/devices/system/cpu/cpu0/cpufreq/scaling_cur_freq
1200000

检查当前最大频率:

1
2
# cat /sys/devices/system/cpu/cpu0/cpufreq/scaling_max_freq
1800000

设置最大频率:

1
# echo <frequency> > /sys/devices/system/cpu/cpu0/cpufreq/scaling_max_freq

frequency从可用频率列表中选择。例如,要将最大频率设置为 1.6GHz(i.MX8M Mini 或 i.MX8M Plus):

1
2
3
4
5
# echo 1600000 > /sys/devices/system/cpu/cpu0/cpufreq/scaling_max_freq
# cat /sys/devices/system/cpu/cpu0/cpufreq/scaling_max_freq
1600000
# cat /sys/devices/system/cpu/cpu0/cpufreq/scaling_cur_freq
1200000

在上面的例子中,我们将最大频率设置为1.6GHz,但当前频率为1.2GHz。

假设我们想将 CPU 频率设置为最大值?我们可以将调速器设置为performance,CPU 频率将自动设置为允许的最大缩放频率。

1
2
3
4
# echo 1800000 > /sys/devices/system/cpu/cpu0/cpufreq/scaling_max_freq
# echo performance > /sys/devices/system/cpu/cpu0/cpufreq/scaling_governor
# cat /sys/devices/system/cpu/cpu0/cpufreq/scaling_cur_freq
1800000