【发布时间】:2012-01-24 13:55:51
【问题描述】:
Linux 上是否存在 API(C 语言)以允许进程动态更改其运行的内核的电压或频率?
【问题讨论】:
Linux 上是否存在 API(C 语言)以允许进程动态更改其运行的内核的电压或频率?
【问题讨论】:
可能有这样的库,但即使没有,您也可以随时打开 /sys/devices/system/cpu 下配置 CPU 行为的文件。
查看 /sys/devices/system/cpu/cpuX/cpufreq 下的文件。
【讨论】:
您可以通过以下方式更改频率电压对: /sys/devices/system/cpu/cpu%d/cpufreq/scaling_setspeed 文件。每个硬件线程都有一个文件。但是,您只能更改整个芯片(所有内核)的频率。您可以从以下位置找到可用频率: /sys/devices/system/cpu/cpu0/cpufreq/scaling_available_frequencies
如果您没有此文件夹,请检查您的处理器是否有可用的增强型 Intel SpeedStep® 技术。如果有,请转到 BIOS 并启用它,您将看到该文件夹。 还有一件事,您可能需要启用/安装 cpufreq 模块。
希望它对某人有所帮助,因为原来的位置很旧。
【讨论】:
CPU 动态电压-频率缩放示例:
# See availables operation performance points
cat /sys/class/devices/system/cpu/cpu0/scaling_available_frequencies
384000 460800 600000 672000 768000 864000 960000 1248000 1344000 1478400 1555200
# See current core frequency
cat /sys/devices/system/cpu/cpu0/scaling_cur_freq
384000
# See current core voltage
cat /sys/class/regulator/regulator.3/microvolts
785000
# Change CPU speed to 1248000 MHz
echo 1248000 > /sys/devices/system/cpu/cpu0/cpufreq/scaling_max_freq
echo 1248000 > /sys/devices/system/cpu/cpu0/cpufreq/scaling_min_freq
cat /sys/devices/system/cpu/cpu0/scaling_cur_freq
1248000
cat /sys/class/regulator/regulator.3/microvolts
980000
【讨论】: