【问题标题】:Correctly disable Hardware Prefetching with MSR in Skylake在 Skylake 中使用 MSR 正确禁用硬件预取
【发布时间】:2019-07-12 04:47:45
【问题描述】:

我正在尝试在我的机器上禁用硬件预取:

CPU 系列:6

型号:78

型号名称:Intel(R) Core(TM) i5-6200U CPU @ 2.30GHz

我检查过:gcc -march=native -Q --help=target|grep march - 命令,它是 Skylake 微架构。

我已经安装了 msr-tools。 grep -i msr /boot/config-$(uname -r) 这给出了结果: CONFIG_X86_MSR=m - 我不确定是否有必要将其设置为 Y,或者如何设置。我试图使用这个帖子:

How do I programmatically disable hardware prefetching?

Unable to disable Hardware prefetcher in Core i7

但是我认为帖子有点旧并且不使用 0x1a4 地址。同样在 cmets 中也没有描述具体如何使用这个地址,或者修改 0x1a4 或 0x1a0 是否没有区别。

我读过这篇文章:https://software.intel.com/en-us/articles/disclosure-of-hw-prefetcher-control-on-some-intel-processors,它说可以通过将 0x1A4 中的 0-3 位设置为 1 来禁用预取。 modprobe msr - 执行此命令不会产生错误(也不会打印任何消息)。然后我正在尝试这两个命令:

sudo wrmsr -p 0 0x1a4 15 //for core 0

sudo wrmsr -p 2 0x1a4 15 //用于核心 2

15 用于将所有最后 4 位设置为 1

您能帮我确定我正确禁用了预取器吗?由于我对 sudo wrmsr -p 0 0x1a4 15 - 命令做了很多假设,我不确定我是否正确使用它。我试图提供所有信息,但如果还有其他需要,请告诉我。 (我已经缩短了帖子,因为我想它太长了)

【问题讨论】:

    标签: caching prefetch microprocessors papi msr


    【解决方案1】:

    我发现这个命令工作正常。 sudo modprobe msr - 不过应该先执行。主要问题是我用 papi 事件测试它的方式

    【讨论】:

      猜你喜欢
      • 2014-07-04
      • 2012-04-26
      • 2023-03-13
      • 2010-10-21
      • 2014-05-30
      • 1970-01-01
      • 2019-09-21
      • 2011-01-17
      相关资源
      最近更新 更多