2012-07-31 69 views
2

我想在我的Linux(Ubuntu)程序中更改cpu(ARM)頻率。cpu頻率縮放Linux中的API C

是否有任何cpu頻率縮放和C關閉核心API?

如果有,API可以處理多核cpu中的每個核心?

回答

0

您可能必須使用/sys/proc/文件系統,並將它們寫入其下的某個文件,例如,也許/sys/devices/system/cpu/

下我會考慮的cpufreq-set什麼做關於dynamic frequency scaling

順便說一句,你可以用一個system(3)命令cpufreq-set叉。

(我不知道ARM處理器對這些方面的特殊性)

4

有幾種方法可以控制在Linux中的頻率。您可以使用IA32_PERF_CTL寄存器設置受支持的Intel處理器的電源狀態。但是,您可以使用通過sysfs文件系統導出的cpufreq接口,該系統不僅支持英特爾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以獲取答案。

+1

我不明白爲什麼通過sysfs改變頻率很麻煩。在這裏使用libudev庫會帶來什麼好處。 – 2013-04-27 15:07:19