【问题标题】:Unable to disable Hardware prefetcher in Core i7无法在 Core i7 中禁用硬件预取器
【发布时间】:2023-03-13 18:55:01
【问题描述】:

在我的 Core i7 系统中尝试禁用硬件预取器时出现错误。我正在按照链接How do I programmatically disable hardware prefetching?

在我的系统中

grep -i msr /boot/config-$(uname -r)

CONFIG_X86_DEBUGCTLMSR=y

CONFIG_X86_MSR=y

CONFIG_SCSI_ARCMSR=m

这是我的错误信息

root@ ./rdmsr 0x1a0

850089

[root@ ./wrmsr -p 0 0x1a0 0x850289(在Core i7中禁用硬件预取器)

wrmsr:pwrite:输入/输出错误

我在禁用 相邻缓存行预取器

时遇到同样的错误

知道如何解决这个问题吗?提前致谢。

【问题讨论】:

  • 出于好奇:为什么要禁用硬件预取器?
  • 在有和没有硬件预取的情况下进行比较研究。

标签: linux cpu-architecture microprocessors prefetch msr


【解决方案1】:

MSR 规范特定于英特尔处理器系​​列,如Intel Architectures Software Developer Manuals 第 35 章所述。因此,您必须首先检查是否可以通过 MSR 禁用 CPU 的预取器,然后检查哪个寄存器的哪些位必须是为此切换。

对于我的处理器,英特尔至强 5650(06_2CH 系列),手册指定地址 0x1A0 处的寄存器 IA32_MISC_ENABLE 的位 10 到 8 是保留的。我想这意味着我无法通过 MSR 打开和关闭预取器。根据英特尔员工here的回答:"Intel has not disclosed how to disable the prefetchers on processors from Nehalem onward. You'll need to disable the prefetchers using options in the BIOS."

在我的工作站上,正在运行

sudo wrmsr -p 0 0x1a0 0x850289

结果:

wrmsr: CPU 0 cannot set MSR 0x000001a0 to 0x0000000000850289

但是

sudo wrmsr -p 0 0x1a0 0x850088

有效。

这似乎证实了我无法使用 MSR 禁用预取。请注意,此错误与您的错误不同,在阅读上述第 35.9 章提到的英特尔手册后,您的处理器似乎也无法使用 MSR 禁用预取器。我不知道为什么我们没有相同的错误消息,您的 msr 模块和 Linux 内核的版本是什么? (modinfo msr)

因此,BIOS 可能是禁用不同预取器的唯一方法,我的 Xeon 5650 就是这种情况。

【讨论】:

  • 感谢您的回答。英特尔也不支持禁用预取器的 BIOS 选项。
  • @bholanath 我不确定你的评论是否理解,在我的情况下,我可以在 BIOS 中禁用预读取。您的处理器的确切 CPU 型号是什么?
  • @Manuel ,我的 CPU 型号是 Intel(R) Core(TM) i7-3770 CPU @ 3.40GHz,BIOS 中没有可用的选项来禁用我的 CPU 型号中的预取。
  • 您是否检查过 msr 模块是否已加载到您的内核中? sudo lsmod 如果不是 sudo modprobe msr
  • 在命令 sudo modprobe msr 之前和之后,我执行了 sudo lsmod。我得到了相同的输出。然后我尝试再次使用上述工具禁用硬件预取器,但没有成功,同样的 i/o 错误。
【解决方案2】:

事实证明 0x1A0 位 9 和 19 是 Pentium 4 和其他一些旧型号的正确 MSR/位,但 0x1A4 位 0-3 是最近几个型号的正确 MSR 位尼哈勒姆以后。我用 Skylake 服务器测试了 0x1A4,它运行良好,而 0x1A0 没有。

这里的快速文档:Disclosure of H/W prefetcher control on some Intel processors

在开发人员手册的第 3 卷上有关于此和其他 MSR 的更完整文档:(click here)。该文档还确认 0x1A0 位 9 和 19 用于较旧的处理器型号,但 0x14A 用于较新的型号。

其他的 MSR 看起来也很有趣(“禁用 L3 缓存”有人吗?)。只需确保在正确的处理器系列下寻找 MSR!

【讨论】:

    猜你喜欢
    • 2012-04-26
    • 2015-11-03
    • 2014-07-04
    • 2019-07-12
    • 2019-09-21
    • 2010-10-21
    • 2023-03-31
    • 2020-05-18
    • 2020-08-22
    相关资源
    最近更新 更多