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 pilote 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).