C语言中的cpu频率缩放linux API
我想在linux(Ubuntu)的程序中更改cpu(ARM)频率.
C中是否有任何cpu频率缩放和关闭核心API?
该API是否可以处理多核CPU中的每个核心?
解决方法:
在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的答案.