【问题标题】:Intel MSR frequency scaling per - thread英特尔 MSR 每线程频率缩放
【发布时间】:2012-06-21 11:11:10
【问题描述】:

我正在扩展 Linux 内核以控制某些线程的频率:当它们被调度到内核(任何内核!)时,内核的频率会通过将正确的 p 状态写入寄存器 @987654321 来更改@,正如英特尔手册中所建议的那样。 但是当调度不同“自定义”频率的不同线程时,似乎所有线程的吞吐量都增加了,好像所有内核都以最大设定频率运行。

我在不同的负载和配置条件下做了很多试验和测量,但结果是一样的。 在使用 CPUFreq 进行了一些试验后(没有运行应用程序,我在每个内核上设置了不同的频率,最后用 cpufreq-info -w 测量的频率相等),我想知道 CPU 内核是否可以真的 以不同的独立频率运行,或者如果有硬件政策或限制。

最后,有没有一种 CPU 模型可以使这种细粒度的频率缩放变得可行?

我使用的 CPU 是 Intel Core i5 750

【问题讨论】:

  • CPU 内核无法在不同电压下运行,因此这限制了设置不同频率/电压对的能力。
  • 一般来说,每一代英特尔都带来了更多的内核分离,并允许对这些东西进行更细粒度的控制。

标签: linux linux-kernel intel frequency


【解决方案1】:

cpufreq-info 将显示有关哪些内核需要在其 P 状态下同步的信息:

[root@navi ~]# cpufreq-info
cpufrequtils 008: cpufreq-info (C) Dominik Brodowski 2004-2009
Report errors and bugs to cpufreq@vger.kernel.org, please.
analyzing CPU 0:
  driver: acpi-cpufreq
  CPUs which run at the same hardware frequency: 0 1 <---- THIS
  CPUs which need to have their frequency coordinated by software: 0 <--- and THIS
  maximum transition latency: 10.0 us.

至少正因为如此,我建议通过 cpufreq 接口而不是直接设置寄存器,以及使其可以在可能有不常见要求的非英特尔 CPU 上运行。

如果您还没有这样做,还请检查如何使内核线程坚持特定的内核,以避免意外切换。

【讨论】:

  • 感谢大家的回答!现在我了解了整体情况。
  • 有人用 Haswell 试过这个吗?因为我没有这样架构的机器,我想知道现在是否可以做到;如果它会,我会重试。其次,我认为我不能通过 cpufreq,因为我在调度程序级别工作。为了全面了解我正在从事的项目,它最终旨在获得目标感知和状态感知的资源调度:因此我不能将决定权交给其他人。
  • 然而,设置核心亲和力的想法很有意义。反正我也应该明白频率设置的时间粒度。
【解决方案2】:

我认为你错过了大部分图片!

阅读电源和时钟域。域内的所有处理器内核都以相同的 P 状态运行(即相同的频率和电压)。所有内核在该域中运行的 P 状态将始终是请求该域中最高 P 状态的内核的 P 状态。 MSR 根本不反映这一点,内核公开的接口也没有。

Anandtech 对此有一篇很好的文章: http://www.anandtech.com/show/2658/2

“这与 AMD 的 Phenom 非常相似,但两者的不同之处在于它们处理电源管理的方式。虽然 AMD 将允许单个内核请求不同的时钟速度,但 Nehalem 尝试以相同的频率;如果一个核心处于空闲状态,那么它只是电源门控,核心实际上是关闭的。”

我还没有将功率计连接到 SB/IB,但我的猜测是行为是相同的。

【讨论】:

    【解决方案3】:

    您无法控制活动核心的单个核心频率。但是,您可以将所有活动核心的频率控制为相同。原因在前面的答案中 - 所有内核都在同一个有源电压平面上。 希望下一代 Haswell 处理器能够单独控制每个内核。

    【讨论】:

      【解决方案4】:

      我要感谢大家的贡献! 进一步调查,我发现了我与社区分享的其他细节。

      按照建议,Nehalem 将所有内核放在一个时钟域中,以便将所有内核中设置的最大频率应用于所有内核;某些工具可能会在空闲内核上显示不同的频率,但运行任何应用程序以将频率提高到最大值就足够了。 根据我的测试,这也适用于 Sandy Bridge,其中内核和 LLC 切片都位于相同的频率/电压域中。 我假设这种行为也发生在 Ivy Bridge 上,因为它只是一个“滴答”的迭代。 相反,我相信 Haswell 将内核和 LLC 切片放置在不同的单一域中,从而实现每内核频率。这也在几个页面中做广告,例如 http://www.anandtech.com/show/8423/intel-xeon-e5-version-3-up-to-18-haswell-ep-cores-/4

      【讨论】:

        猜你喜欢
        • 2015-04-08
        • 2016-07-12
        • 1970-01-01
        • 1970-01-01
        • 2013-12-12
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2021-11-19
        相关资源
        最近更新 更多