4

我想在 linux(Ubuntu)上的程序中更改 cpu(ARM)频率。

C中是否有任何cpu频率缩放和关闭核心API?

如果有的话,API 可以处理多核 cpu 中的每个核心吗?

4

2 回答 2

5

有几种方法可以控制 Linux 中的频率。您可以使用 IA32_PERF_CTL 寄存器设置支持的 Intel 处理器的电源状态。但是,您可以使用通过 sysfs 文件系统导出的 cpufreq 接口,它不仅支持 Intel CPU。

您可以查看/sys/devices/system/cpu/cpuX/* 中可能更改的参数。这里有几个提示:

关闭频率缩放是通过调控器完成的,调控器处理处理器处于不同状态的策略。例如,要获得完整的性能,您可以:

echo performance > /sys/devices/system/cpu/cpuX/cpufreq/scaling_governor

有多个州长,你可以在这里看到:

cat /sys/devices/system/cpu/cpuX/cpufreq/scaling_available_governors

因为通过文件系统接口访问它很麻烦。您可以使用 libudev 访问 cpufreqs 成员。请参阅udev 文档此处获取教程。

关于单独处理每个核心的一个限制。这取决于CPU的支持。有时两个或多个内核必须以相同的频率运行,这是硬件的简单限制。请参阅此帖子以获取答案。

于 2012-07-31T03:20:43.170 回答
0

您可能必须使用/sys/proc/文件系统,并写入它们下的某些文件,例如可能在/sys/devices/system/cpu/

我将研究cpufreq-set动态频率缩放的作用

顺便说一句,您可以使用system(3)命令cpufreq-set进行分叉。

(不知道ARM处理器在这些方面的特点)

于 2012-07-31T03:16:01.900 回答