# Optimizar Kernel para Desktop

## chonzow

Lo que aquí pregunto es por mera curiosidad y en función de mejorar mi experiencia con Gentoo, lo digo para que no pierdan tiempo en leer si es que no cuentan con mucho de sobra. Por otro lado aclaro que desde hace meses que dedico algunos minutos diarios a buscar info en internet que me aclare el asunto, pero encontré poca y muy dispersa.

Al grano. Una cosa que aprendí de tanto compilar el kernel es que nunca se obtiene un gran aumento del rendimiento del equipo si se lo compara con el núcleo genérico de una distro común y silvestre. Pese a esto a mi me gusta sacar el máximo provecho de cada parte del sistema, y por eso que intento optimizarlo lo más posible para las tareas que realizo en casa, que no son muy distintas a las del resto de los usuarios de internet: Navegar, leer feeds y correo, ver pelìculos  , escuchar mùsica, convertir y editar vídeos para ver en el DVD de casa, descargar y editar fotos digitales, jugar con wine y cedega, y trabajar con ZendIDE y un pequeño servidor LAMP para hacer pruebas. 

Bien, tengo tres computadoras con Gentoo, un Duron, un athlon-2000 y un athlon-xp, y estas son las opciones activadas  que imagino, dando por sentado que los drivers escogidos son los correctos, afectan el rendimiento del sistema:

Procesador K7

Low-Latency

Preempt the Big Kernel Lock

Timer Frequency 1000Hz

MTRRs

Temporizadores: HPET Timer Support RTC Class RTC Interrupt TSC (Time Stamp Counter) APIC

I/O SCHEDULER por defecto: CFQ 

DMA Engine 

High-Memory support (menos en el duron): tengo 1 Giga en los athlones, y pensé que esos 104 megas extra (sin High memory detecta 896) compensan el pequeño overhead que supuestamente produce esa opción. 

Mis preguntas son sencillas: 

¿Conocen alguna opción mágica que mejore el rendimiento? 

¿Alguien usa Voluntary Preemption en lugar de Low latency en su maquina de escritorio? ¿Por qué?

Gracias.

----------

## Cereza

 *chonzow wrote:*   

> ¿Conocen alguna opción mágica que mejore el rendimiento?

 

Comprar un ordenador mejor... :P No hay opciones mágicas que hagan que tu PC corra el doble, como los agujeros de velocidad en el capó del coche del señor Simpson. Y si la hubiera, ten por seguro que vendría activada por defecto.

Respecto a optimizar el kernel para desktop, servidor o lo que sea, siempre se puede hacer una cosa, que es configurarlo a manita y desactivar el soporte de todo aquello que no quieras/necesites, es tedioso, pero es la única forma de que quede exactamente como quieres. Con todo y con eso la diferencia que vas a notar a nivel de usuario es simplemente irrisoria, como parece que ya sabes. 

Por otra parte, no podriamos decirte exactamente qué opciones del kernel necesitas para realizar las tareas que comentas, dependen totalmente de tu hardware.

Saludos.

----------

## ekz

 *Cereza wrote:*   

> 
> 
> Respecto a optimizar el kernel para desktop, servidor o lo que sea, siempre se puede hacer una cosa, que es configurarlo a manita y desactivar el soporte de todo aquello que no quieras/necesites, es tedioso, pero es la única forma de que quede exactamente como quieres. 

 

Añadir que si quieres "limpiar" tu kernel de cosas que no necesites, configura uno "desde los scratchs", si usas un kernel .24, este hilo me ayudó en su momento, eso sí hay que armarse de paciencia y reiniciar un par de veces hasta que quede todo tal como queremos.

 *Cereza wrote:*   

> 
> 
> Con todo y con eso la diferencia que vas a notar a nivel de usuario es simplemente irrisoria, como parece que ya sabes. 
> 
> 

 

Nada más cierto.

Saludos!

----------

## chonzow

Tengo deshabilitado todo el soporte que no necesito. Y aquello que preciso muy de vez en cuando "soporte smbfs, fat y loop" son módulos que cargo manualmente cuando la situación lo amerita. 

 *Quote:*   

> Comprar un ordenador mejor...  No hay opciones mágicas que hagan que tu PC corra el doble,

 

Cierto, pero yo preguntaba por alguna opción mágica que aumentara el rendimiento en 0,1% o incluso menos. Todo suma.   :Very Happy: 

 *Quote:*   

> 
> 
> Respecto a optimizar el kernel para desktop, servidor o lo que sea, siempre se puede hacer una cosa, que es configurarlo a manita y desactivar el soporte de todo aquello que no quieras/necesites, es tedioso, pero es la única forma de que quede exactamente como quieres. Con todo y con eso la diferencia que vas a notar a nivel de usuario es simplemente irrisoria, como parece que ya sabes. 

 

¿Te refieres a hacerlo sin partir de ninguna configuraciónp previa? Así lo hago cada vez que instalo un nuevo kernel, como casulamente ocurrio ayer con las gentoo sources 2.6.24-r7. 

Una cosa que noté al leer el hilo que me pasaste es que desde que tengo activada:

General setup  --->

    [*] Fair group CPU scheduler

También tengo activado High Resolution Timer Support y desactivado "Single-depth WCHAN output".

Gracias.

----------

## Inodoro_Pereyra

Ya que todo suma, pasate a baselayout2 y openrc si todavía no lo hiciste, se ganan unos míseros 6 o 7 mb de ram  :Very Happy: 

Cflags? Me imagino que si estás exprimiendo el kernel, por ese lado no hay nada mas que hacer ya, cierto?

Salud!

----------

## chonzow

Veo que openrc está enmascarado (estoy en stable), pero voy a migrar de todos modos porque se ve "nice", ademas de que parece muy sencillo. Incluso Gentoo.org tiene una GUIA en completo spanish:

http://www.gentoo.org/doc/es/openrc-migration.xml

Pero me dejaste pensando el asunto de los CFLAGS. Es que cuando compilo el kernel no tengo seteadas la variables de entorno CFLAGS y CXXFLAGS   :Shocked:  ¿Eso afecta el kernel?   :Embarassed:  Pensé que bastaba con escoger el procesador en la interfaz de configuraciòn ncurses para que se pasara march al compilador. De todas maneras no pierdo nada recompilando bajo estas circunstancias, así que lo voy a hacer.

Como sea tengo para divertirme.  :Very Happy: 

Gracias.

----------

## Inodoro_Pereyra

 *chonzow wrote:*   

> Veo que openrc está enmascarado (estoy en stable), pero voy a migrar de todos modos porque se ve "nice", ademas de que parece muy sencillo. Incluso Gentoo.org tiene una GUIA en completo spanish:
> 
> http://www.gentoo.org/doc/es/openrc-migration.xml
> 
> Pero me dejaste pensando el asunto de los CFLAGS. Es que cuando compilo el kernel no tengo seteadas la variables de entorno CFLAGS y CXXFLAGS   ¿Eso afecta el kernel?   Pensé que bastaba con escoger el procesador en la interfaz de configuraciòn ncurses para que se pasara march al compilador. De todas maneras no pierdo nada recompilando bajo estas circunstancias, así que lo voy a hacer.
> ...

 

Que buena pregunta, no? La lógica me dice que no afecta al kernel, a ver si alguien mas experimentado sabe al respecto... 

Me refería a las variables en make.conf...

Si vas por baselayout2, otra cosa que se gana, es velocidad en el booteo... Se nota mucho sobre todo en hardware medio viejito... Ese duron que tenés por ahi, por ejemplo, candidato a baselayout2 y openrc.

Salud!

----------

## gringo

 *Quote:*   

> Pensé que bastaba con escoger el procesador en la interfaz de configuraciòn ncurses para que se pasara march al compilador

 

activa en el makefile el modo "verbose" y verás como pasa march correctamente al compilador - andar añadiendo flags al kernel realmente no le veo sentido y mucho menos cuando ni se sabe que hacen los flags en cuestión y cuando hablamos de una pieza crítica como puede ser el kernel.

 *Quote:*   

> Si vas por baselayout2, otra cosa que se gana, es velocidad en el booteo

 

en una máquina lenta se nota bastante, si tienes una máquina mas bien reciente me temo que no vas a notar mucha diferencia.

Lo que si parece que funciona mas o menos bien ahora es la carga en paralelo en openrc, iba siendo hora  :Smile: 

saluetes

----------

## chonzow

Acabo de migrar las tres maquinas a OpenRC. Al hacer el etc-update toda la configuración se paso exitosamente a los nuevos ficheros salvo por el nombre del host, la variable TIMEZONE y los datos de localización. El único problema real que tuve fue que el fichero /etc/X11/xorg.conf se "desconfiguró" (en las 3) y no levantaba el servidor X, cosa que no entiendo. De todas maneras solo fue cuestión de poner todo en orden nuevamente. 

OpenRC va un pelín mas rápido en el arranque y, como dicen arriba, sobretodo en el Duron. Luego pruebo arrancar con los procesos en paralelo. 

 *Quote:*   

> activa en el makefile el modo "verbose" y verás como pasa march correctamente al compilador - andar añadiendo flags al kernel realmente no le veo sentido y mucho menos cuando ni se sabe que hacen los flags en cuestión y cuando hablamos de una pieza crítica como puede ser el kernel. 

 

Me sigue quedando la duda de si march se pasa por estar seteada como CFLAG o porque se escogió el procesador en el fichero de configuración del kernel. Si fuera por $CFLAG deberían pasarse los otros flags distintos de O2 (que se usa por defecto), como fomit-frame-pointer y pipe. Voy a probar esto luego para ver que tal. 

Jejeje, Gentoo Rulez más que ninguno ¡Si señor!   :Evil or Very Mad: 

----------

## Inodoro_Pereyra

No se me ocurrió que alguien no estuviera usando el arranque de servicios en paralelo... En mi caso si que se notó y bastante en mis pc mas antiguas la diferencia de velocidad en el arranque, pero con parallel_startup activado.

Salud!

***EDITO*** Siguiendo la onda "exprimir al máximo lo que hay": Me imagino que estarás usando distcc en tus tres pc cierto? (te cambia la vida)  :Very Happy: 

----------

## esculapio

Hay opciones kernel hacking para activar como Use 4Kb for kernel stacks instead of 8Kb  :Cool: 

----------

## Cereza

 *esculapio wrote:*   

> Hay opciones kernel hacking para activar como Use 4Kb for kernel stacks instead of 8Kb 8)

 

Ahora si que corre el doble  :lol:

----------

## chonzow

 *Inodoro_Pereyra wrote:*   

> No se me ocurrió que alguien no estuviera usando el arranque de servicios en paralelo... En mi caso si que se notó y bastante en mis pc mas antiguas la diferencia de velocidad en el arranque, pero con parallel_startup activado. 

 

Es que antes (con otras distros) tuve problemas con la carga en paralelo, entonces empecé a desconfiar.

Además mi maquina bootea una vez por semana, salvo cuando recompilo el kernel.

Salud!

 *Inodoro_Pereyra wrote:*   

> 
> 
> ***EDITO*** Siguiendo la onda "exprimir al máximo lo que hay": Me imagino que estarás usando distcc en tus tres pc cierto? (te cambia la vida) 

 

Se nota mucho, pero ahora no lo puedo usar porque las otras maquinas son usadas por mis hermanos y tienen otros sistemas además de Gentoo, entonces dependo de que este último esté cargado en RAM. Lo que noto que me ayuda mucho es CCACHE, basta 1 Giga para darse cuenta pero con 2 o 3 es mejor, dependiendo de lo que se vaya a compilar.

Otra cosa que quiero hacer es montar /var/portage/tmp es un sistema de ficheros temporal, eso sí, en cuanto le ponga otro giga de RAM.

 *esculapio wrote:*   

> Hay opciones kernel hacking para activar como Use 4Kb for kernel stacks instead of 8Kb"

 

MMmmm, tengo desactivado todo el kernel hacking, pero no me imagino como puede darle un plus de rendimiento. 

 *Cereza wrote:*   

> Ahora si que corre el doble 

 

Ya no necesito quad core.   :Evil or Very Mad: 

----------

## Inodoro_Pereyra

Así que tus hermanos usan la pc también? Te referirás a windows cierto? Siempre podés usar distcc contra una pc corriendo windows también. Combinado con ccache, mejor aún. 

Es de esas cosas que hay que dejar activadas por defecto, es lo suficientemente inteligente como para compilar localmente cuando no puede conectar alguno de los hosts implicados y se le puede tocar el nivel de nice para que no moleste si la pc está en uso... Ya dije que te cambia la vida?

Salud!

----------

## chonzow

 :Embarassed:   Y si, Windows, Debian y Gentoo es lo que hay en cada máquina. Voy a ponerme con eso de distcc y luego les cuento. 

Puse la carga en paralelo y hasta ahora no tuve problemas. Estoy rebooteando seguido solo para ver como lo hace.

Una última cosa ¿Desfragmentar la RAM es útil? ¿Se puede? 

Saludos.

----------

