我想在linux(Ubuntu)的程序中更改cpu(ARM)频率。
是否存在cpu频率缩放并关闭C中的核心API?
如果有,API可以处理多核cpu中的每个核心?
答案 0 :(得分:4)
有几种方法可以控制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 documentation和here。
分别处理每个核心的一个限制。这取决于CPU的支持。有时,两个或多个内核必须以相同的频率运行,这是硬件的简单限制。有关答案,请参阅此post。
答案 1 :(得分:0)
您可能必须使用/sys
和/proc/
文件系统,并在其下面写入一些文件,例如也许在/sys/devices/system/cpu/
我会研究cpufreq-set对dynamic frequency scaling
的看法 BTW,您可以使用system(3)
cpufreq-set
命令进行分叉。
(我不知道ARM处理器在这些方面的特殊性)