4.1. MTRR einrichten

Du solltest UNBEDINGT sicherstellen, dass die MTRR-Register richtig belegt sind, denn sie können einen großen Geschwindigkeitsschub bringen.

Gib den Befehl cat /proc/mtrr ein:

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

Diese Anzeige ist richtig. Sie zeigt meine Matrox G400 mit 16MB Speicher. Ich habe die Einstellung von XFree 4.x.x, der die MTRR-Register automatisch einstellt.

Wenn nichts funktioniert, musst du sie manuell setzen. Als erstes musst du die Basisadresse finden. Dazu gibt es drei Möglichkeiten:

  1. durch die X11 Start-Meldungen, zum Beispiel:

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

  2. von /proc/pci (verwende den Befehl lspci -v):

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

  3. von den mga_vid Kerneltreiber-Meldungen (verwende dmesg):

    mga_mem_base = d8000000

So, nun gilt es, die Speichergröße zu finden. Dies ist sehr einfach, konvertiere einfach die Video-RAM-Größe nach hexadezimal, oder verwende diese Tabelle:

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

Du kennst die Basisadresse und die Speichergröße? Lass uns die MTRR Register einstellen! Für die Matrox-Karte von oben (base=0xd8000000) mit 32MB RAM (size=0x2000000) führst du einfach folgendes aus:

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

Nicht alle CPUs unterstützen MTRRs. Zum Beispiel ältere K6-2s [bei ca. 266MHz, stepping 0] unterstützen kein MTRR, aber Stepping-12-CPUs tun es (cat /proc/cpuinfo gibt Aufschluss).