Para otimizar a velocidade da placa gráfica é necessário descobrir
os endereços das zonas de memória usadas por ela.
Felizmente, essa informação pode ser obtida a partir do arquivo
/proc/pci:
$ cat /proc/pci
No caso do meu sistema, obtenho a seguinte lista:
PCI devices found:
Bus 0, device 0, function 0:
Host bridge: Intel 440BX - 82443BX Host (rev 3).
Medium devsel. Master Capable. Latency=64.
Prefetchable 32 bit memory at 0xf8000000 [0xf8000008].
Bus 0, device 1, function 0:
PCI bridge: Intel 440BX - 82443BX AGP (rev 3).
Medium devsel. Master Capable. Latency=128. Min Gnt=140.
Bus 0, device 7, function 0:
ISA bridge: Intel 82371AB PIIX4 ISA (rev 2).
Medium devsel. Fast back-to-back capable. Master Capable. No bursts.
Bus 0, device 7, function 1:
IDE interface: Intel 82371AB PIIX4 IDE (rev 1).
Medium devsel. Fast back-to-back capable. Master Capable. Latency=64.
I/O at 0x1000 [0x1001].
Bus 0, device 7, function 2:
USB Controller: Intel 82371AB PIIX4 USB (rev 1).
Medium devsel. Fast back-to-back capable. IRQ 9. Master Capable. Latency=64.
I/O at 0x1020 [0x1021].
Bus 0, device 7, function 3:
Bridge: Intel 82371AB PIIX4 ACPI (rev 2).
Medium devsel. Fast back-to-back capable.
Bus 0, device 12, function 0:
Multimedia audio controller: Unknown vendor Unknown device (rev 3).
Vendor id=1073. Device id=c.
Medium devsel. IRQ 10. Master Capable. Latency=64. Min Gnt=5.Max Lat=25.
Non-prefetchable 32 bit memory at 0xf4000000 [0xf4000000].
Bus 0, device 13, function 0:
Ethernet controller: Silicon Integrated Systems Unknown device (rev 2).
Vendor id=1039. Device id=900.
Medium devsel. Fast back-to-back capable. IRQ 11. Master Capable. Latency=173. Min Gnt=52.Max Lat=11.
I/O at 0x1400 [0x1401].
Non-prefetchable 32 bit memory at 0xf4008000 [0xf4008000].
Bus 1, device 0, function 0:
VGA compatible controller: ATI Unknown device (rev 122).
Vendor id=1002. Device id=475a.
Medium devsel. Fast back-to-back capable. IRQ 11. Master Capable. Latency=66. Min Gnt=8.
Prefetchable 32 bit memory at 0xf5000000 [0xf5000008].
I/O at 0x9000 [0x9001].
Non-prefetchable 32 bit memory at 0xf4100000 [0xf4100000].
Neste exemplo, só nos interessa a última sessão, VGA
compatible controller, que corresponde a uma placa gráfica ATI.
Nesta sessão estão definidas duas regiões de memória: uma
non-prefetchable, que corresponde aos registos da placa e outra
prefetchable, que corresponde à memória de vídeo (frame-buffer).
É exatamente esta segunda região (prefetchable) que convém
configurar, para passar a usar o modo write-combining.
Para isso, basta executar o seguinte comando:
# echo "base=0xf5000000 size=0x800000 type=write-combining" > /proc/mtrr
Onde "base" representa o início da memória de vídeo que havia
sido obtido no ficheiro /proc/pci e size corresponde à
quantidade de memória da placa, expressa em numeração
hexadecimal.
Neste exemplo, o valor 0x800000 corresponde a 8Mb, mas se a
placa tivesse 16Mb teria sido usado 0x1000000 e 32Mb corresponderia
a 0x2000000.
Para que que esta configuração passe a ficar ativa por omissão, este
comando deve ser adicionado ao fim do arquivo
/etc/rc.d/rc.local. Desta forma, passa a ser executado sempre
que o sistema arranca.
Os resultados obtidos dependem bastante das aplicações usadas. Por
exemplo, se o X só é usado para fazer processamento de texto, é
natural que não se note qualquer diferença. No entanto, quando se
usam gráficos 3D e vídeo, já se nota uma grande diferença.
tentei usar a dica, mas não funcionou...
fiz como pedido, dei um echo enviando ele pra /proc/mtrr. Mas, o arquivo não mudou NADA.
Continuou como estava antes....