我希望在Linux(Ubuntu)上的程序中更改CPU(ARM)频率。
是否有C语言的CPU频率缩放和关闭核心API?
如果有,该API能否处理多核CPU中的每个核心?
echo performance > /sys/devices/system/cpu/cpuX/cpufreq/scaling_governor
这里有多个调度器,你可以在这里看到:
cat /sys/devices/system/cpu/cpuX/cpufreq/scaling_available_governors
通过文件系统接口访问这些内容很麻烦。你可以使用libudev访问cpufreqs成员。请参见udev文档和这里的教程。
有一个关于逐个处理每个内核的限制。它取决于CPU的支持情况。有时两个或多个内核必须以相同的频率运行,这是硬件的简单限制。请查看此帖子获取答案。
你可能需要使用 /sys
和 /proc/
文件系统,并写入其中的某个文件,例如在 /sys/devices/system/cpu/
下。
我会研究一下 cpufreq-set 在 动态频率调节 方面的作用。
顺便说一句,你可以使用 system(3)
分叉一个 cpufreq-set
命令。
(我不知道 ARM 处理器在这些方面的特殊性)