当我发出这个命令时
sudo sh -c "echo \"base=0x110000 size=0xa000 type=uncachable\" >| /proc/mtrr"
/proc/mtrr 没有改变,而我希望它添加一个新条目。
它适用于以下命令:
sudo sh -c "echo \"base=0x110000 size=0x10000 type=uncachable\" >| /proc/mtrr"
它添加了这个条目:
reg05: base=0x000110000 ( 1MB), size= 64KB, count=1: uncachable
所以我假设 size 参数在某些方面受到限制。有这样的限制吗?是否可以将任意内存区域设置为“不可缓存”?
我的原始(启动后)/proc/mtrr 如下所示:
reg00: base=0x000000000 ( 0MB), size= 1024MB, count=1: write-back
reg01: base=0x040000000 ( 1024MB), size= 512MB, count=1: write-back
reg02: base=0x05f700000 ( 1527MB), size= 1MB, count=1: uncachable
reg03: base=0x05f800000 ( 1528MB), size= 8MB, count=1: uncachable
reg04: base=0x0c0000000 ( 3072MB), size= 256MB, count=1: write-combining
我在 Pentium M 上使用 Linux 2.6.32-41-generic #89-Ubuntu SMP。参考: http ://www.mjmwired.net/kernel/Documentation/mtrr.txt
背景:对于计时实验,我想为某个进程的内存区域禁用 cpu 缓存。