ハードウェアのプリフェッチをプログラムで無効にしたいと考えています。
ハードウェアで実装されたプリフェッチャーを使用したインテル® Core™ マイクロアーキテクチャーでのアプリケーション・パフォーマンスの最適化と、32 ビットのインテル® アーキテクチャーでハードウェアとソフトウェアのプリフェッチを選択する方法から、 MSRを更新してハードウェアのプリフェッチを無効にする必要があります。
関連するスニペットは次のとおりです。
「DPL プリフェッチと L2 ストリーミング プリフェッチの設定は、
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
してみましたが、セグメンテーション違反です。asm/msr.h
私はカーネルモジュールでこれをやろうとしました...そしてマシンを殺しました。
ところで-私はカーネル2.6.18-92.el5を使用しておりMSR
、カーネルにリンクしています:
$ grep -i msr /boot/config-$(uname -r)
CONFIG_X86_MSR=y
...