我可以以不同的时钟速度运行多个内核吗?

我可以以不同的时钟速度运行多个内核吗?

我看到我正在查看的 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内核命令行。

答案1

这还不是一个明确的答案。相反,这是一组太长的建议,无法容纳在评论中。

恐怕您可能会稍微误解 sysfs cpufreq 参数的含义。例如,在我的核心双核笔记本电脑,related_cpu两个内核的参数都读取0 1- 根据您的解释,这意味着内核无法独立切换频率。但事实并非如此——我可以随意设置每个频率。相比之下,affected_cpus每个核心的参数仅列出各自的 CPU 编号。

您可能需要查看 cpu-freq 的内核文档,以更好地了解affected_cpusrelated_cpusscaling_*等参数cpuinfo_*。该文档通常与内核源代码包一起分发。具体来说,我建议阅读<kernel-sources-dir>/Documentation/cpu-freq/user-guide.txt,其中<kernel-sources-dir>通常代表/usr/src/linux/usr/src/linux-<kernel-version>。 (然而,当我现在自己浏览文档时,我承认我没有抓住一些与频率缩放相关的细微差别。要完全理解这些,可能需要首先对 CPU 架构有一个扎实的了解。)

回到你的问题。我还有一个测试用例:当我更改 的值scaling_max_freq(使用userspaceperformance调节器)时,核心时钟会自动切换到新的最大值。您观察到的不同行为可能是以下任意一种:

  • 特定于 CPU 上频率缩放机制的硬件实现,
  • 由于标准cpufreq模块和phc-intel我正在使用的模块之间存在差异,
  • 模块的正常行为(如果愿意的话,可以将其称为错误或功能) ,该模块自(我当前的内核版本是)cpufreq以来在某个时刻发生了变化,2.6.353.6.2
  • cpufreq您的 CPU(或整个系列)实现中出现错误的结果,
  • performance具体到CPU调速器的实现2.6.35

您可以采取一些措施来进一步推进调查:

  • 阅读user-guide.txt并更多地调整其他cpufreq参数,
  • 在运行较新的内核时重复测试 - 最简单的方法是启动 liveCD/DVD/USB。

如果您继续遇到意外行为并有更多理由相信这是由于错误造成的(绝对必须检查最新的次要内核版本),请继续报告此问题kernel.org bugzilla

相关内容