Como mejorar el rendimiento de Xorg+Intel en Dapper

Una de las cosas que notaba desde hace un tiempo atrás es que Xorg estaba funcionando mas lento. Tenia sospechas de que se trataba de un problema con xcompmgr, o bien había algún tipo de regresión en el driver al cambiar desde 6.9 a 7.0. Se notaba especialmente al hacer scrolling, o al mover las ventanas.

Con una rápida búsqueda en una de las listas de correo relacionadas con X, me entere de que había un problema en la configuración de MTRR, de fácil solución y vaya que mejora el rendimiento! Que bueno que no haya sido el xcompmgr porque aun no me pego el salto a Xgl y uno se acostumbra a las sombritas.

Se que esto aplica a mi chip de video (intel), así que si lo quieren probar, haganlo bajo su propio riesgo, pero por lo que entiendo no podría pasar nada mas allá de un simple cuelgue.

El chip de video tiene un área de memoria asignada, esto lo pueden ver con lspci -v, revisando las características del «adaptador gráfico».  Por ejemplo

lspci -v
[...]
00:02.0 VGA compatible controller: Intel Corporation Mobile 945GM/GMS, 943/940GML Express Integrated Graphics Controller (rev 03)
Subsystem: Hewlett-Packard Company Device 30d5
Flags: bus master, fast devsel, latency 0, IRQ 16
Memory at f0400000 (32-bit, non-prefetchable) [size=512K]
I/O ports at 3000 [size=8]
Memory at 98000000 (32-bit, prefetchable) [size=128M]
Memory at f0480000 (32-bit, non-prefetchable) [size=256K]
Capabilities: <access denied>
Kernel modules: intelfb
[...]

Supongamos que como en este caso, la base de memoria de video es 0x98000000, y el tamaño es de 128MB (0x8000000), entonces se debe hacer lo siguiente :

echo "base=0x98000000 size=0x8000000 type=write-combining" >| /proc/mtrr

Si sale algún error, seguramente es porque tienen uno de los parámetros malos, pueden ver el detalle ejecutando

dmesg | tail

Pueden ver el resultado final con

cat /proc/mtrr

Para que entiendan el problema, a través de MTRR se puede cambiar la forma en que esta manejada la memoria, por ejemplo si es cacheable o no, o bien en el caso de memoria AGP indica si se habilita el modo write-combining que es mucho mas rápido.

(no puedo mostrar lo que sale en mi notebook porque ahora estoy en un curso de Microsoft, cof cof.. sobre migración de aplicaciones 32-bit a 64-bits, de todas formas esta bastante interesante y entretenido).

20 Responses to “Como mejorar el rendimiento de Xorg+Intel en Dapper”

  1. 20
    Felipe Ortiz Says:

    Franco logre solucionar todo de una forma bastante buena.
    Lo que hice fue usar el driver intel en vez de el i810 e instale la version 1.2 de xrandr y con algunos comandos (en estos minutos no los tengo a mano) pude activar el vga-out con igual o distinta resolucion que el LCD del notebook y en modo clonado o extendiendo el escritorio, lo mismo con el tv-out. Los comandos son mas o menos simples (man xrandr) pero deben ser con xrandr 1.2. Algo q no logre solucionar es q el vga-out se me veia en blanco y negro… Ahora estoy usando ArchLinux y no he probado por ahora

  2. 19
    Franco Says:

    Felipe, el vga-out no me funciono de primeras, tuve que editar el xorg.conf y forzar la deteccion del monitor, no recuerdo bien pero creo que active DevicePresence y MonitorLayout. No fue necesario usar Clone ya que el CRT esta en el mismo Pipe del LCD. Mas info en man i810.

    Con eso me quedo el vga activado en forma permanente, la combinacion de teclas no funcionaba.

  3. 18
    Franco Says:

    No se cual podria ser el problema. A mi me funciona bien todo, excepto la salida VGA que requirio un poco mas de configuracion, el resto de las cosas funcionaron a la primera. Los datos de mi tarjeta son:

    fcatrin@shaman:~$ lspci | grep VGA
    00:02.0 VGA compatible controller: Intel Corporation Mobile 945GM/GMS/940GML Express Integrated Graphics Controller (rev 03)

  4. 17
    Oscar Miranda Araya Says:

    Haber saludos primero que todo … eh resultado y visto que este tema fue creado hace mucho tiempo
    en esos tiempos tenia un Desktop con una tarjeta de video nvidia y creo que no fue relebante el tema para mi solamente eche una leida para ver si podia solucionar un problema a un amigo y en esos tiempo funciono 😉 gracias don FRANCO.

    Mi preguenta es la siguiente como esto sigue en evolucion eh tenido varios dramas ahora tengo un laptop con una intel950 y creo que mi ubuntu 7.04 no le saca el provecho a mi tarjeta de video tengo como el mismo problema de las ventanas no me anda bien y con los videos tampoco, todo lo demas esta de pelos configurado eh conectado el laptop a mi tv y cero drama a los data 0 drama todo bien pero el tema de los videos cuando quiero reproducir algunos me fallan.

    Ahora como ah evolucionado el tema del escritorio 3D tanto y pasamos de Compiz a beryl y ahora estamos en compiz Fusion me decidi a probar las nuevas alternativas pero tampoco creo que mi tarjeta no es de las recomendadas para esto me anda mal eh buscado mejoras en la configuracion XORG para ver si mejoramos algo pero nada.

    Ahora que usted tiene un laptop con esta tarjeta muy similar a la mia :p me gustaria saber su experiencia para poder configurar mejor mi tarjeta….

    Saludos ! nos estamos viendo

  5. 16
    Felipe Ortiz Says:

    No es que me funcione lento, de hecho acabo de instalar aiglx y funciona perfecto, era mas un tema de curiosidad… Lo q si no se cual de los drivers es mejor y aprovechando la instancia (y si no es mucha la patudez) ¿te funciona el tv-out y el vga-out? si la respuesta es si ¿como lo hiciste? a mi todo me anda muy bien incluso las teclas multimedia (tengo un HP dv2422 muy similar al tuyo) incluso las teclas del quickplay y la de DVD, las q no funcionan de primeras, pero si aparecen al ejecutar dmesg, asi que son configurables, eso si la fn + F4 (vga-out) no anda.

  6. 15
    Franco Says:

    En Feisty no es necesario. Que te funciona lento? Aca tengo una intel 945GM y funciona super bien todo

  7. 14
    Felipe Ortiz Says:

    Esto se aplica Feisty??? algun tip para mejorar el rendimiento de aiglx con una intel 950 driver intel o el i810?
    Saludos.

  8. 13
    Eric Herrera Says:

    Yo tengo la version 7 de Xorg y tengo instalado Aiglx con mi targeta Itel, uso el driver i810 y cuando corro glxgears me renderea a 1070 FPS, en la version anterior me rendereaba cerca de dos mil.
    Fcatrin, me puedes pasar tu contacto del algun cliente IM?
    mi msn es eric@tuxteno.com

  9. 12
    fx Says:

    para las personas con intel y ati funciona mejor el aiglx

  10. 11
    Hugo Salinas Says:

    si ahora anda mucho mejor el scroll y la movilidad de las ventanas.
    Ahora me arrepiento de no haber pedido el notebook con ATI o NVIDIA…. 🙁

  11. 10
    Franco Says:

    Y se noto algun cambio?

  12. 9
    Hugo Salinas Says:

    andubo perfect 😉 no entendia bien como pasar mis 256M
    pero usando tu ejemplo pude
    gracias

  13. 8
    Franco Says:

    El size aparece en la misma linea en donde se indica la direccion de memoria :

    Memory at 98000000 (32-bit, prefetchable) [size=128M]
    Memory at 90400000 (32-bit, non-prefetchable) [size=512K]

    La de 512K NO puede ser, porque es muy pequeña (seguramente se trata de la direccion de MMIO : Memory Mapped Input Output). Por lo tanto la unica candidata es la de 128M.

    El numero hexadecimal para ese size es 0x80000000, lo puedes calcular con cualquier calculadora que soporte hexadecimal.

  14. 7
    Hugo Salinas Says:

    Como puedo saber el numero hexadecimal adecuado para el size?
    tengo una tarjeta de intel de 256,
    ademas me aparecen 3 memory at como saber cual elegir?
    saludos

  15. 6
    Franco Says:

    Para mejorar el rendimiento fullscreen, debes activar la opcion «unredirect fullscreen windows», eso es para que todo lo que sea fullscreen no pase por el composite manager. En compiz lo puedes hacer facilmente con gset-compiz, pero directamente con gconf tendras que encontrar el lugar en donde se configura eso.. y nos cuentas 😉

  16. 5
    el gordito Says:

    en mi i810 funciona bastante bien la mejora de xorg, para xgl, el despliegue ventanas y cambio de escritorio ok, lo que si un video en fullscreen no funca :p

  17. 4
    Franco Says:

    Para Xgl en los drivers de intel para Linux falla el manejo de pixel buffers y/o framebuffer objects, por lo tanto todo lo que es generacion de texturas a partir de contenido offscreen es lento, por ejemplo reproduccion de video y el scrolling en Xgl se ve afectado

    Para Xorg normal, esto no aplica, y al menos en mi chipset se noto el problema del MTRR y su solucion… y ahora tengo una pregunta, alguien sabe que parte de la distribucion es responsable de setear MTRR adecuadamente?

  18. 3
    jci Says:

    Franco : en algunos modelos se nota el cambio. En el mio (855) nopes 🙁

    Nvidia la sigue llevando. O los drivers de Intel en Win$.

    Y tambien la gata pregunta por que no puede prender los motores 😀

  19. 2
    dy Says:

    y que paso con el reaggeton??

  20. 1
    dy Says:

    y que paso con el reaggeton??