Kernel 2.6.22 compilado con el Intel C/C++ Compiler

Linux Journal tiene una interesantísima noticia sobre el proyecto LinuxDNA: A principios del mes pasado lograron compilar exitosamente, es decir, sin errores, una versión 2.6.22 del Kernel Linux usando el compilador C/C++ de Intel (ICC). El Kernel resultante es totalmente compatible y puede arrancar un sistema Linux completo. Las exitosas prueba de esto último se realizaron usando Gentoo Linux.

¿Y por qué alguien querría molestarse en compilar el Kernel con otra cosa distinta de GCC? La respuesta es la performance:

Ya en el 2004 el proyecto original de compilar el Kernel con ICC había reportado mejoras de hasta un 40% en algunas partes del Kernel, con una mejora promedio de la performance de un 8 a 9%. Ese trabajo estaba basado en la versión 8 de ICC; los actuales esfuerzos se centran en sus versiones más recientes 10.1 y 11.

El objetivo del proyecto LinuxDNA es mantener unas fuentes del Kernel actual compatible con ICC, y para ello ya están trabajando con la versión 2.6.23 y posteriores.

  • Artículo completo en LWN.

Ayuda a compartir esta noticia :

Delicious

Menéame

13.685

Subscripciones

Subscríbete por RSS o por E-mail

iRalphX

1

iRalphX

02/03/2009 12:07

Wow...eso explica muchas cosas, pero, perdonenme mi ignorancia ¿Que pasa con AMD? Pasa que bueno segun yo el AMD jala muhco mejor mi distro que en una Intel, en fin no se que sucede pero si la cosa es mas compatibilidad es mejor. Espero leer mas comentarios para nutrirme mas sobre esta noticia que parece bastante buena.

Miguel Angel

2

Miguel Angel

02/03/2009 14:29

Lo que no entiendo es por que no se podía compilar de primeras. GCC es de los compiladores más estrictos que he usado en cuando a ISO C por lo que si compilaba en GCC es por que el código sigue todos los standars y demás, así pues, por que no se había conseguido compilar antes? es el de Intel el que no sigue dichos standars o el GCC es el que se los inventa?

Diego

3

Diego

02/03/2009 14:54

Como bien dicen en otra pagina de mayor importancia. El kernel no es realmente optimizable en azpecto de compilador. Es basicamente assembler y rutinas en C imposibles de optimizar. No hay nada de punto en coma flotante ni nada de alto nivel. Ademas, el kernel se mantiene 96% del tiempo o mas en Idle.

Entonces, si las rutinas se ejecutaran durante el 4% de la vida de un proceso, esas optimizaciones del 40% son en realidad el 40% del 4%, es decir, 1.6% de optimización para ciertos limitados casos, y con 8% seria 0.32% de optimización. Y ni hablar que el kernel no toma en realidad el 4% de un proceso, es menos.

Y todo para ganar un compilador que limita al kernel en la arquitectura del procesador.

TT

4

TT

02/03/2009 15:05

@Miguel Angel

El código fuente del kernel hace uso de las extensiones que vienen con GCC. La diferencia es que cuando las extensiones son agregadas por MS o Intel a sus compiladores es malo, muy malo; pero cuando lo hace un proyecto de software libre es muy bueno y se deben tener orgasmos cada vez que sean usadas esas extensiones.

@DIego

La optimización va dirigida al software que requiere mucho cálculo a través de multiples CPUs de Intel como puede ser en centros de investigación, universidades y compañías que trabajan en el campo de la ingeniería, ahí un 0.32% es una mejora sustancial.

juancarlospaco

5

juancarlospaco

02/03/2009 16:38

Seria un "Intel/Linux" y no un "GNU/Linux" ;P (chiste)

Scorpion

6

Scorpion

02/03/2009 21:41

Por ahi decian que una de las rasones por las que la version firefox de linux era tanto mas lenta que la de windows era por el echo de compilar con gcc. Estaria bueno que prueben con este compilador aver si sale algo bueno.

Izzy

7

Izzy

02/03/2009 22:46

Para mi una burrada hacer un nuevo compilador teniendo a GCC ¿por que mejor no apoyar a este ultimo en lugar de reinventar la rueda? Marketing y retención de clientes seguramente, ese es problema cuando una empresa mete manos en el mundo del software libre, su único interés es el de maximizar sus utilidades y relega a segundo plano la investigación para mejorar las tecnologías actuales.

Dexus

8

Dexus

03/03/2009 00:55

@ juancarlospaco:

Mira carnal si vas a hacer un chiste hazlo bien.
[Seria un "Intel/Linux" y no un "GNU/Linux" ;P (chiste)]

En todo caso seria "GNU/Intel"

Ya que lo que estan haciendo es recompilando el nucleo, el kernel que es solo "LINUX", en cambio GNU son las demas aplicaciones como GCC.

JOAKO

9

JOAKO

03/03/2009 05:42

@TT

Estas muy confundido TT, cuando las extensiones son agregadas por un proyecto de SL, siempre son estándar o abiertos aunque sean sus especificaciones. Mientras que cuando lo hacen las empresas propietarias, es un secreto de estado y si lo copias, re comes un juicio...

TT

10

TT

03/03/2009 13:41

@JOAKO

Primero es que no, no son estándar a menos que se apruebe por un cómite reconocido. Lo otro es que son extensiones, repito, EXTENSIONES que siempre serán dependientes de un determinado software (en este caso de un compilador), y esas extensiones NO deben ser usadas si se quiere que el código sea compilable en diferentes compiladores (nada diferente al código que escribe específicamente para ser compilado en VS). Tú me dices que porque se puede ver el código entonces son especificaciones abiertas... la verdad es que no, esas extensiones de GCC pueden ser implementadas sin el código fuente disponible (otra cosa es que Intel y MS las vean innecesarias o piensan que lo que ellos ofrecen es mejor) y además no cumplen con la definición de especificación abierta, aunque claro todos sabemos que los amantes de Linux andan definiendo y redefiniendo las cosas.

Pero claro, las extensiones de GCC son buenas, las de Visual Studio o ICC son malas, muy malas (incluso si el software será solo para Windows y no importa que se compile en muchos compiladores (lo mismo que sucede con el kernel Linux solo que con GCC), las extensiones son diabólicas).

PD: Y por cierto, ¿qué es eso de "empresa propietaria"?, ¿otra definición que anda regando Stallman o qué?

Diego

11

Diego

05/03/2009 00:27

GCC vs los demas: GCC es multiplataforma, haz algo que compile con gcc y sera portable (aka vendible en mayores escenarios). No debes pagar nada. Si te molesta el codigo assembler que genera, podes hacerte friki del gcc de la misma forma que lo harias con cualquier otro compilador con ventanitas de configuracion, y optimizarlo a fondo, y si encontra un bug, hacer un bugreport. Uso Gcc hasta para microcontroladores, es genial. Hoy en dia no deberian existir compiladores propietarios, es una necesidad fundamental en el avance del software y una necesidad para AMD Intel y otros para vender sus plataformas. Son ellos los que deben pagar y desarrollar buenos compiladores, no nosotros. Que desarrollen extensiones para Intel o para AMD, nada los detiene.

@TT

0.32% en 666 googol de procesadores sigue siendo el 0.32% de optimización. Estamos hablando de convertir codigo humanamente leible a codigo de maquina. Si realmente quiere optimizar solamente el kernel en esos casos super especiales, entonces tienen que realizar un buen algoritmo que haga buen uso de todos los procesadores, teniendo en cuenta todos los programas que se ejecutan, y las actividades de cada uno. Se requeriria un kernel en cada maquina y una buena comunicacion entre kernels que no sature la red ni detenga los procesos. Que todos funcionen como uno y compartan dispositivos de hardware de manera eficiente. Que se los acceda desde una interfaz centralizada y segura. etc. etc. etc.

La optimizacion no esta en eliminar un par de variables, o un par de instrucciones, esta en la naturaleza del algoritmo y eso depende solamente del cerebro de sus desarrolladores, la capacidad del laboratorio para hacer pruebas y que finalmente todos acuerden en incluirlo en el kernel.

Saludetes. Diego

Nuevos comentarios deshabilitados o noticia archivada.