【问题标题】:cpu frequency scaling linux API in CC中的cpu频率缩放linux API
【发布时间】:2012-07-31 00:07:44
【问题描述】:

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

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

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

【问题讨论】:

    标签: linux api arm frequency


    【解决方案1】:

    有几种方法可以控制 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 documentationhere

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

    【讨论】:

    • 我不明白为什么通过sysfs改变频率很麻烦。以及在这里使用 libudev 库有什么好处。
    【解决方案2】:

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

    我会调查cpufreq-setdynamic frequency scaling 做了什么

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

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2016-03-24
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-10-18
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多