Il est FORTEMENT recommandé de bien ajuster ses registres MTRR, qui apportent un gain important de performances.
Faites un 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
C'est bon, il montre ma Matrox G400 avec 16Mo de mémoire. J'ai fais cela avec XFree 4.x.x , qui ajuste les registres MTRR automatiquement.
Si rien n'a fonctionné, vous devrez procéder manuellement. D'abord, vous devez trouver l'adresse de base. Vous pouvez la trouver de trois façons :
à partir des messages au démarrage de X11, par exemple:
(--) SVGA: PCI: Matrox MGA G400 AGP rev 4, Memory @ 0xd8000000, 0xd4000000 (--) SVGA: Linear framebuffer at 0xD8000000
à partir de /proc/pci (utilisez la commande lspci -v):
01:00.0 VGA compatible controller: Matrox Graphics, Inc.: Unknown device 0525 Memory at d8000000 (32-bit, prefetchable)
à partir des messages noyau du driver mga_vid (utilisez dmesg):
mga_mem_base = d8000000
Trouvons maintenant la taille mémoire. Simplement, convertissez la taille de la mémoire vidéo en hexadécimal, ou utilisez cette table :
1 Mo | 0x100000 |
2 Mo | 0x200000 |
4 Mo | 0x400000 |
8 Mo | 0x800000 |
16 Mo | 0x1000000 |
32 Mo | 0x2000000 |
Vous connaissez l'adresse de base ainsi que la taille, ajustons vos registres MTRR !
Par exemple, pour la carte Matrox utilisée ci-dessus (base=0xd8000000
)
avec 32Mo de ram (size=0x2000000
) faites simplement :
echo "base=0xd8000000 size=0x2000000 type=write-combining" >| /proc/mtrr
Tous les processeurs ne supportent pas les MTRR. Les anciens K6-2 par exemple (vers 266Mhz, stepping 0) ne sont pas compatibles avec les MTRR, mais les stepping 12 le sont (cat /proc/cpuinfo pour le vérifier).