C 语言中的 CPU 频率缩放 linux API

enc*_*enc 4 linux api arm frequency

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

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

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

小智 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
Run Code Online (Sandbox Code Playgroud)

有多个州长,您可以在此处看到:

cat /sys/devices/system/cpu/cpuX/cpufreq/scaling_available_governors
Run Code Online (Sandbox Code Playgroud)

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

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