我可以以不同的時鐘速度執行多個核心嗎?
我看到我正在查看的 Intel i5 機器上的核心只能以相同的時鐘速度執行:
/sys/devices/system/cpu/cpu1/cpufreq/related_cpus
列出所有 CPU。正如預期的那樣,設置 cpu1 的時鐘速度會改變 cpu0。假設我正在執行的 AMD A6-4400M 機器應該能夠以不同的時鐘速度執行每個核心:
/sys/devices/system/cpu/cpu1/cpufreq/related_cpu
只列出 cpu1。當我使用性能調節器設置 cpu1 的時鐘速度並將 1400000 回顯到 時scaling_max_freq
,cpu0 的時鐘速度按預期保持在 2700000。Cpu1 的 scaling_cur_freq 按預期讀取 1400000。但是,cpu1 的
cpuinfo_cur_freq
讀數為 2700000。從基準測試來看,CPU1 似乎確實仍在 2.7 GHz 執行。我錯過了什麼,還是有什麼壞了?我正在執行 Linux 2.6.35,並傳入
idle=mwait
核心命令行。
這還不是一個確定的答案。相反,這是一組太長的建議,無法放入評論中。
恐怕您可能會稍微誤解 sysfs cpufreq 參數的含義。例如,在我的Core Duo筆記型電腦上,
related_cpu
兩個核心的參數都讀取0 1
- 根據您的解釋,這意味著核心無法獨立切換頻率。但事實並非如此——我可以隨意設置每個頻率。相比之下,**affected_cpus
**每個核心的參數僅列出各自的 CPU 編號。您可能想查看 cpu-freq 的核心文件,以更好地理解參數,例如
affected_cpus
、和. 該文件通常與核心原始碼包一起分發。具體來說,我建議閱讀,其中通常代表or 。(但是,當我現在自己瀏覽文件時,我承認我沒有發現一些與頻率縮放相關的細微差別。要完全理解這些,可能需要首先對 CPU 架構有一個紮實的理解。)related_cpus``scaling_*``cpuinfo_*
<kernel-sources-dir>/Documentation/cpu-freq/user-guide.txt
<kernel-sources-dir>``/usr/src/linux``/usr/src/linux-<kernel-version>
回到你的問題。我還有一個測試案例:當我更改
scaling_max_freq
(使用userspace
或performance
使用調控器)的值時,核心時鐘會自動切換到新的最大值。您觀察到的不同行為可能是:
- 特定於 CPU 上頻率縮放機制的硬體實現,
- 由於標準
cpufreq
模組和phc-intel
我正在使用的模組之間的差異,- 模組的正常行為(如果你願意,可以稱之為錯誤或功能)
cpufreq
,它在某些時候發生了變化2.6.35
(我目前的核心版本是3.6.2
),cpufreq
您的 CPU(或整個系列)的實現中出現錯誤的結果,- 具體到
performance
從2.6.35
.您可能會做一些事情來進一步推動您的調查:
- 閱讀
user-guide.txt
並更多地使用其他cpufreq
參數,- 在執行較新的核心時重複測試 - 最簡單的方法是啟動 liveCD/DVD/USB。
如果您繼續遇到意外行為並有更多理由相信這是由於錯誤(絕對必須檢查最新的次要核心版本),請繼續在kernel.org bugzilla上報告此問題。