16 de mayo de 2009

Ubuntu 9.10 Alpha 1 y GCC 4.4

Aun quedan muchos meses para Ubuntu 9.10, pero ya está la Alpha 1, y en Phoronix la han pasado su suite de benchmarks.

No soy un gran fan de los benchmarks de Phoronix (a veces han hecho cosas ridículas, como pasar benchmarks de disco en comparativas de diferentes drivers gráficos, o hacer tests de compresión mp3 para comparar sistemas de archivos), pero mejoran poco a poco, y, además, es la única web que se preocupa de hacerlos. Y los de esta comparativa son bastante curiosos: Ubuntu 9.10 Alpha 1 bate a Ubuntu 9.04 en prácticamente todos los benchmarks, no solo en los de disco (y a pesar de usar Ext3 como sistema de archivos), sino tambien en los de compresión con 7zip, compresión mp3 con Lame, ripeado con ffmpeg...

Que éstos últimos tengan alguna mejora es particularmente interesante. Se trata de programas que en los benchmarks se pasan casi todo el tiempo ejecutando los algoritmos de compresión/ripeado/cifrado, es decir, código propio. Como no hacen muchas llamadas ni al kernel ni a otras librerías (aparte de algunas como libc, supongo), ni son capaces de acercarse ni remotamente a saturar el sistema de archivos, se benchmarkean a si mismos, no al resto del sistema, asi que no son muy aptos para comparar distribuciones. Además phoronix utiliza su propia versión de los programas que utiliza para el benchmark.

Sin embargo, si que hay un componente vital del sistema que puede afectar a estos benchmarks, y es el compilador. En Ubuntu 9.10 Alpha 1 se incluye el muy reciente GCC 4.4, y sin duda es a él a quien se deben en gran medida las ganancias del 4% en 7zip y crafty y 3% en LAME y ffmpeg. No es precisamente una gran mejora, pero hay que tener en cuenta que el compilador tampoco puede hacer magia con los algoritmos utilizados, y teniendo en cuenta que el resultado depende en gran medida de ellos un 4% no está nada mal.

Observando la lista de cambios de GCC 4.4, uno de los más interesantes es un nuevo "register allocator". Si uno busca el paper de la conferencia de GCC donde se daban detalles de este nuevo asignador de registros, en casi todos los benchmarks que presentan hay mejoras decentes, asi que no parece arriesgado decir que parte de las mejoras que Phoronix ha visto se deben a este nuevo componente. He oido a veces (a mi no me pregunten) que el "asignador de registros" de GCC era malo, lo cual afecta particularmente a las arquitecturas con pocos registros como x86-32. El benchmark de phoronix usa x86-64, asi que si el benchmark se hubiera hecho en un x86-32, las mejoras de GCC 4.4 quizás serían aun más visibles.

En cualquier caso, parece que Ubuntu 9.10 va a ser una buena version (y aun no han terminado de actualizar el servidor X, versiones de drivers, Mesa, libc, etc etc, que darán mejoras en otras áreas)

2 comentarios:

  1. Yo puedo confirmar mejoras del alrededor del 1% por un programa HCP solo por compilar con gcc-4.4 (sin tocar nada). Puede parecer una mejora ridícula, pero coño, ¡es gratis!

    ResponderEliminar
  2. Anónimo4:29 p. m.

    Sin conocer las mejoras previas de las anteriores versiones de gcc, parece que ahora se intentan exprimir/aprovechar mejor los 8 nuevos registros generales de 64 bits que se añaden en los x64 (o x86-64), además de la extensión de 32 a 64 bits de todos ellos y los más que conocidos beneficios de poder usar mayor cantidad de RAM y el bit NX, entre otros.
    En x86 a secas sólo hay 8 registros generales. Recordad que no son registros de aplicación general el usar instrucciones SIMD (sus registros MMX, SSE1/2/3...), aunque tengan muchos usos; aunque también es verdad que cualquier procesador que sea de 64 bits tiene de varias de estas extensiones multimedia de serie.

    ResponderEliminar