我想以编程方式禁用硬件预取。
从使用硬件实现的预取器优化英特尔® 酷睿™ 微架构上的应用程序性能以及 如何在 32 位英特尔® 架构上选择硬件和软件预取,我需要更新 MSR 以禁用硬件预取。
这是一个相关的片段:
“DPL Prefetch 和 L2 Streaming Prefetch 设置也可以通过编写用于更改
IA32_MISC_ENABLE
寄存器中的位的设备驱动程序实用程序以编程方式更改 -MSR 0x1A0
此类实用程序提供启用或禁用预取机制的能力,而无需任何服务器停机时间。
下表显示了为了控制和 L2 流预取IA32_MISC_ENABLE MSR
而必须更改的位:DPL
Prefetcher Type MSR (0x1A0) Bit Value
DPL (Hardware Prefetch) Bit 9 0 = Enable 1 = Disable
L2 Streamer (Adjacent Cache Line Prefetch) Bit 19 0 = Enable 1 = Disable"
我尝试使用http://etallen.com/msr.html但这不起作用。我也尝试过直接使用wrmsr
inasm/msr.h
但那是段错误。我尝试在内核模块中执行此操作......并杀死了机器。
顺便说一句 - 我使用的是内核 2.6.18-92.el5,它已MSR
链接到内核中:
$ grep -i msr /boot/config-$(uname -r)
CONFIG_X86_MSR=y
...