首页 文章

每线程的英特尔MSR频率调整

提问于
浏览
7

通过将正确的p状态写入寄存器 IA32_PERF_CTL 来改变'm extending the Linux kernel in order to control the frequency of some threads: when they are scheduled onto a core (any core!), the core'的频率,如英特尔手册中所述 . 但是,当调度具有不同频率的不同线程时,似乎所有线程的吞吐量都会增加,就好像所有内核都以最大设置频率运行一样 .

我在不同的负载和配置条件下进行了许多试验和测量,但结果是一样的 . 经过一些CPUFreq试验(没有正在运行的应用程序,我在每个核心上设置不同的频率,最后测量的频率,与cpufreq-info -w相等),我想知道CPU内核是否可以 really 运行在不同的, independent frequencies ,或者是否存在硬件策略或约束 .

最后,是否有一个CPU模型可以实现这种细粒度的频率调整?

我使用的CPU是Intel Core i5 750

4 回答

  • 2

    您无法控制活动核心的各个核心频率 . 但是,您可以控制所有活动核心的频率相同 . 原因在于之前的答案 - 所有核心都在同一个有源电压平面上 . 希望下一代Haswell处理器能够分别控制每个核心 .

  • 0

    我想你错过了一大片图片!

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

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

    “这与AMD的Phenom非常相似,但两者的不同之处在于它们如何处理电源管理. While AMD will allow individual cores to request different clock speeds, Nehalem attempts to run all of its cores at the same frequency ;如果一个核心处于空闲状态,那么它只是电源门控而且核心被有效关闭 . ”

    我还没有将功率计连接到SB / IB,但我的猜测是行为是一样的 .

  • 3

    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上运行 .

    还要检查如何使内核线程坚持特定内核,以避免未经指定的切换,如果你还没有这样做的话 .

  • 4

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

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

相关问题