Compilar o no compilar Kernel? [Tema RENDIMIENTO]

Hola!
Pues eso, que ahora me he interesado por el tema de compilar uno mismo el kernel de Linux, para aprovechar al máximo los recursos de la máquina.
La pregunta es, tanto se nota?

Por lo que tengo entendido, nosotros elegimos que modulos cargar o no cargar, y es ahí en donde se va a involucrar el rendimiento, si cargamos menos, que los que traen los kernel genericos para 64 bits (en mi caso) , pues irá algo más "rapido".

Alguien que compile kernel me puede aclarar?
Gracias y un saludo
nitrosito escribió:Hola!
Pues eso, que ahora me he interesado por el tema de compilar uno mismo el kernel de Linux, para aprovechar al máximo los recursos de la máquina.
La pregunta es, tanto se nota?

Por lo que tengo entendido, nosotros elegimos que modulos cargar o no cargar, y es ahí en donde se va a involucrar el rendimiento, si cargamos menos, que los que traen los kernel genericos para 64 bits (en mi caso) , pues irá algo más "rapido".

Alguien que compile kernel me puede aclarar?
Gracias y un saludo


Con los módulos harás que tu equipo se inicie en menos tiempo (tal vez unos 10 segundos...) y te ahorraras seguramente un par de megas, por lo demás no notarás ninguna mejoría.

Para ganar mas rendimiento hay que tocar las opciones del kernel... y sino sabes muy bien que tocar.. pues te llevarás algún susto al iniciar la máquina.

Una manera simple de ganar rendimiento es usar liquorix http://liquorix.net/
Tu usas ese kernel?

¿Qué es exactamente? Que han cogido el kernel base y lo han modificado? xDD
Si tu la estas usando...¿ Por que versión de kernel van?

Gracias y un saludo
Lo que más rendimiento saca es compilarlo para una arquitectura específica (por ejemplo, si tienes AMD, compilarlo para AMD...). Y luego ya si le trasteas te puedes ahorrar algunos MB de ram y tiempo de inicio.

Por otro lado, compensa tener versiones nuevas del kernel:
http://www.leanuxeros.com/hardware/linu ... eristicas/
Si yo ahora estoy usando el 3.7.0-7 , y bien va, pero quería ver si hay alguna forma de optimizar notablemente el sistema.

Aunque bueno si pongo xfce sin efectos eso si que es optimizar jaja
lo he usado alguna vez, y sobre wine si que notaba mejoría

Usan el kernel linux por defecto, simplemente compilado con una configuración diferente a la de por defecto y algun que otro parche

http://liquorix.net/sources/3.8/config.amd64

La ultima versión usa 3.8.13-1.

Si como ha dicho amchacon compilarlo para tu arquitectura específica también hace ganar rendimiento
Entiendo que recompilando se podria ganar algi más aun, ya que podrias compilar para tu arquitectura especifica (p7 o amd, dependiendo), pero ni idea de si se gana nada o menos.
Sinceramente, hoy en dia, con la potencia de los PCs existentes, no se hasta que punto merece la pena compilar el kernel y estar "perdiendo" tiempo recompilando de nuevo porque se te olvido tal o cual, o te equivocastes o ahora este modulo no me lo carga para tal programa o drives, etc.

Mi experiencia, es que no merece la pena perder ese tiempo para tu pc de casa :)
Porque no, no vas a notar una mejora brutal. Ni los juegos te van a ir mejor, ni tu ordenador va a volar.
A lo sumo lo que te han comentado "oh si, ahora mi pc arranca en 30 segundos menos, guau, ahora tengo libres 12 mb mas de ram de los 4gb que tengo, guau).
LorK escribió:Sinceramente, hoy en dia, con la potencia de los PCs existentes, no se hasta que punto merece la pena compilar el kernel y estar "perdiendo" tiempo recompilando de nuevo porque se te olvido tal o cual, o te equivocastes o ahora este modulo no me lo carga para tal programa o drives, etc.

Mi experiencia, es que no merece la pena perder ese tiempo para tu pc de casa :)
Porque no, no vas a notar una mejora brutal. Ni los juegos te van a ir mejor, ni tu ordenador va a volar.
A lo sumo lo que te han comentado "oh si, ahora mi pc arranca en 30 segundos menos, guau, ahora tengo libres 12 mb mas de ram de los 4gb que tengo, guau).

Y si usas un ordenador mononúcleo de 512 MB de ram? (como es mi caso).
Pues depende del uso que le vayas a dar. Que siendo para un pc domestico, no sabria decirte exactamente, pero sigo pensando lo mismo. El esfuerzo no merece la pena por la pequeña diferencia.

Entiendo que llevaras una distro acorde a las caracteristicas del pc. Ahi si que vas a notar diferencia mas que en compilar kernel (relacion esfuerzo tiempo -diferencia rendimiento).
Desde mi experiencia te diré que no compensa compilar el kernel cada dos por tres para ganar dos segundos de arranque XD
Encima como cambies de versión 3.x a 3.y prepárate para perder mitad de la configuración por el camino. ratataaaa
Lo mejor es usar parches como liquorix, como dicen más arriba, o los parches de Con Kolivas entre los que está BFS. Este último llevo usándolo ya varios años y puedo asegurar que es de lo mejor que puedes probar.Si quieres más información te dejo un enlace a la wiki de arch. Si usas Ubuntu creo recordar que hay un ppa.
En cualquier caso si quieres rendimiento esto se reduce a lo de siempre, ver que programas se están ejecutando, deshabilitar servicios/demonios que no uses, etc.
Si sólo quieres que tu pc encienda más rápido échale un ojo a e4rat.

Saludos.
no conocía e4rat! gracias!
Si compilas para una arquitectura como ya te dijeron, si notaras un incremento de rendimiento, yo lo he notado mas en temas de emuladores y doy fe que si se nota la fluidez.

Te dejo un tema que hice hace mucho para una pagina
http://www.taringa.net/posts/linux/8599653/Compilar-kernel-en-Ubuntu-Linux.html

Tenia pensado hacer una actualización a ese post con mas mejores que he ido descubriendo a medida que ha pasado el tiempo, pero con eso es mas que suficiente, para tu empezar.


Aprende a manejar el tema de los flags para un procesador en concreto y que opciones son mejores, para obtener mas rendimiento. Antes de compilar el kernel, en la ventana terminal en la que estés, agrega esta opciones: export CFLAGS="-march=native -mtune=native" -- export CXXFLAGS="$CFLAGS"

Las dos -- son separaciones.

También como dijeron por ahí, hay un truco para saber cuales son los módulos que usa tu equipo y así tener un kernel mas reducido, pero es un tema un poco mas avanzado.

Saludos.
Luego esta gentoo, con que todo es compilado. Alli si el rendimiento se nota.
No se yo, usando Gentoo en un i5 con 8Gb de RAM la verdad es que la diferencia con otra distro ligera como puede ser Arch casi ni se nota.
El sistema carga mas rapido, eso si: asumo que sera porque solo cargo los drivers que necesito.

Pero diferencia entre compilado vs binario no noto casi ninguna.
Yo tengo una distro Debian y tengo mi kernel a mi manera y la verdad es que si que hay una mejora de rendimiento configurado para mi core i7.
1985a escribió:Si compilas para una arquitectura como ya te dijeron, si notaras un incremento de rendimiento, yo lo he notado mas en temas de emuladores y doy fe que si se nota la fluidez.

Te dejo un tema que hice hace mucho para una pagina
http://www.taringa.net/posts/linux/8599653/Compilar-kernel-en-Ubuntu-Linux.html

Tenia pensado hacer una actualización a ese post con mas mejores que he ido descubriendo a medida que ha pasado el tiempo, pero con eso es mas que suficiente, para tu empezar.


Aprende a manejar el tema de los flags para un procesador en concreto y que opciones son mejores, para obtener mas rendimiento. Antes de compilar el kernel, en la ventana terminal en la que estés, agrega esta opciones: export CFLAGS="-march=native -mtune=native" -- export CXXFLAGS="$CFLAGS"

Las dos -- son separaciones.

También como dijeron por ahí, hay un truco para saber cuales son los módulos que usa tu equipo y así tener un kernel mas reducido, pero es un tema un poco mas avanzado.

Saludos.

Lo coroboro, no hay color en la diferencia.
Y si usas un ordenador mononúcleo de 512 MB de ram? (como es mi caso).

Lubuntu.
Yo siempre fui de compilarlo todo, años con Gentoo y tal, ahora creo que con las maquinas de ahora, las optimizaciones sacan una ventaja mínima en todo. Con un pentium4 tener una gentoo se notaba mucho, ahora es perder el tiempo y sufrir de masoquismo.

Lo del kernel este me llama mucho pero me asusta comerme fallos cuando ahora mismo la debian me va maravillosa, quitado de lo que pregunte en otro post.
amchacon escribió:
Lo coroboro, no hay color en la diferencia.


Tan sencillo como probar una distro livecd de esas, tipo firewall, que estan mayormente configuradas para i386 y probar con una optimizada para tu sistema.

Yo coroboro que si noto mucha diferencia, ya que siempre lo hago aparte de los emuladores, en el caso de servidor, saco mucha ventaja.
En rendimiento puedes llegar a sacar bastante, ya no solo con flags especificas y aligerandolo sino ya con compiladores especificos, el problema es que en lineas generales cuanto mas rendimiento quieras sacar mucho mas vas a tener que toquetear y pelearte.
Personalmente he tenido el kernel compilado bajo icc(el compilador de intel) y si, cuando funcionaba volaba pero o dejas el sistema monolitico o vas a pasar mas tiempo arreglando errores que funcionando(intel tiene withepapapers para ver las guias principales, pero son un pelin escuetos)

Lo dicho puedes aumentar el rendimiento del kernel una burrada, si son trabajos que por ejemplo mueven mucha memoria con el ICC y las instruciones que tiene para los micros nuevos tranquilamente puedes doblar el rendimiento, lo que si preparate a estar días para hacer que funcione.

A mi manera de verlo lo que ganas en rendimiento no compensa lo que pierdes en actualizaciones y comodidad, solo es cuestion de usar un linux que te deje usar kernels algo toqueteados pero que ya te los den así, sino volvemos a las mismas
A ver, es evidente que se nota, pero también se a de valorar las horas que tienes que darle para estar compilando, y los fallos que te comes cada dos por tres, véase con gentoo, con FreeBSD aun, pero te falta una cantidad abismal de programario y aun encima te comes fallos, aunque menos que en gentoo. Lo que me cuesta entender que es que no existan versiones de distros como debian o arch para los principales procesadores, i3/i5/i7/AMD lo que sea.
Para uso domestico no merece la pena (es mi opinión).

Saludos
ZeTaKa escribió:A ver, es evidente que se nota, pero también se a de valorar las horas que tienes que darle para estar compilando, y los fallos que te comes cada dos por tres, véase con gentoo, con FreeBSD aun, pero te falta una cantidad abismal de programario y aun encima te comes fallos, aunque menos que en gentoo. Lo que me cuesta entender que es que no existan versiones de distros como debian o arch para los principales procesadores, i3/i5/i7/AMD lo que sea.

Existe alguna distribución comercial que lo hace(red flag inux lo hacia)y también grupos que sacaban el kernel ya preparado para el icc, pero el principal problema es que el kernel está pensado en todo momento para gcc que para eso es un compilador tb libre, sería extremadamente raro que algo del kernel alguna vez estuviera pensado no para gcc y el icc aunque su compatibilidad es altisima no es compatible totalmente con gcc(y eso que si nos ponemos técnicos es mas cercano al ansi que el propio gcc)
Yo lo uso para estudiar (Estudio ASIR)
Sobretodo virtualización (Virtualbox, KVM).

Yo creo que tampoco me va a merecer la pena.

Gracias a todos y un saludo
ZeTaKa escribió:A ver, es evidente que se nota, pero también se a de valorar las horas que tienes que darle para estar compilando, y los fallos que te comes cada dos por tres, véase con gentoo, con FreeBSD aun, pero te falta una cantidad abismal de programario y aun encima te comes fallos, aunque menos que en gentoo. Lo que me cuesta entender que es que no existan versiones de distros como debian o arch para los principales procesadores, i3/i5/i7/AMD lo que sea.


Estoy de acuerdo que se nota, en mi caso que uso Debian, pues sólo he compilado el núcleo y alguna que otra cosa mas, y simplemente compilando el núcleo para un i7 se nota en varios aspectos. Así que una Gentoo o directamente LFS... compilar todo... por narices te tiene que dar mayor rendimiento. Son horas, sí, pero eso depende de que te guste y tengas tiempo para tenerlo así.

Yo también hecho de menos alguna distro preparada para los procesadores modernos de Intel.

PD: vídeo compilando LFS http://www.youtube.com/watch?v=ljSeyK-4fIk :)
Si quieren saber el tiempo que se toma el equipo en compilar el kernel o lo que sea, solo pongan antes de toda la linea de compilación "time" sin las comillas.

Con una compilación en mi equipo actual E8400 con DDR3 y algunos 200 módulos del kernel, se toma como 10 minutos en compilar.
26 respuestas