我正在尝试在我的机器上禁用硬件预取:
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,或者如何设置。我试图使用这个帖子:
但是我认为帖子有点旧并且不使用 0x1a4 地址。同样在评论中没有描述如何使用这个地址来做,或者修改 0x1a4 或 0x1a0 之间是否没有区别。
我已阅读这篇文章:https ://software.intel.com/en-us/articles/disclosure-of-hw-prefetcher-control-on-some-intel-processors说可以通过设置 0 禁用预取0x1A4 中的 -3 位到 1。modprobe msr - 执行此命令不会出错(也不会打印任何消息)。然后我正在尝试这两个命令:
sudo wrmsr -p 0 0x1a4 15 //对于核心 0
sudo wrmsr -p 2 0x1a4 15 //对于核心 2
15 用于将所有最后 4 位设置为 1
你能帮我确保我正确地禁用了预取器吗?由于我对 sudo wrmsr -p 0 0x1a4 15 - 命令做了很多假设,我不确定我是否正确使用它。我试图提供所有信息,但如果还有其他需要,请告诉我。(我已经缩短了帖子,因为我想它太长了,无法通过)