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:
durch die X11 Start-Meldungen, zum Beispiel:
(--) SVGA: PCI: Matrox MGA G400 AGP rev 4, Memory @ 0xd8000000, 0xd4000000 (--) SVGA: Linear framebuffer at 0xD8000000
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)
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 MB | 0x100000 |
2 MB | 0x200000 |
4 MB | 0x400000 |
8 MB | 0x800000 |
16 MB | 0x1000000 |
32 MB | 0x2000000 |
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).