4.1. Configurando MTRR

Es MUY recomendable comprobar si los registros MTRR están correctamente establecidos, porque pueden proporcionar un aumento considerable de rendimiento.

Haga cat /proc/mtrr:

--($:~)-- cat /proc/mtrr
reg00: base=0xe4000000 (3648MB), size=  16MB: write-combining, count=9
reg01: base=0xd8000000 (3456MB), size= 128MB: write-combining, count=1

Esto es lo correcto, muestra mi Matrox G400 con 16MB de memoria. Tengo esto por usar XFree 4.x.x, que configura los registros MTRR automáticamente.

Si no funciona, deberá hacerlo de manera manual. Primero, debe encontrar la dirección base. Tiene 3 formas de encontrarla:

  1. desde los mensajes de inicio de X11, por ejemplo:

    (--) SVGA: PCI: Matrox MGA G400 AGP rev 4, Memory @ 0xd8000000, 0xd4000000
    (--) SVGA: Linear framebuffer at 0xD8000000

  2. de /proc/pci (use la órden lspci -v):

    01:00.0 VGA compatible controller: Matrox Graphics, Inc.: Unknown device 0525
    Memory at d8000000 (32-bit, prefetchable)
      

  3. de los mensajes del controlador del kernel mga_vid kernel (use dmesg):

    mga_mem_base = d8000000

Después encuentre el tamaño de la memoria. Esto es muy fácil, convierta el tamaño de la memoria RAM de video a hexadecimal, o use esta tabla:

1 MB0x100000
2 MB0x200000
4 MB0x400000
8 MB0x800000
16 MB0x1000000
32 MB0x2000000

Ahora ya conoce la dirección base y el tamaño de la memoria, ¡vamos a configurar los registros MTRR! Por ejemplo, para la tarjeta Matrox de antes (base=0xd8000000) con 32MB ram (size=0x2000000) ejecute:

echo "base=0xd8000000 size=0x2000000 type=write-combining" >| /proc/mtrr

No todas las CPUs soportan MTRRs. Por ejemplo K6-2's antiguos (alrededor de 266MHz, stepping 0) no soportan MTRR, pero stepping 12's lo soportan (cat /proc/cpuinfo para comprobarlo).