Mejorando el tiempo de carga de Linux

Ayer estuve experimentando con formas de mejorar el tiempo de booteo de Linux.

No es ninguna novedad decir que Linux se tarda en bootear, y también se toma harto tiempo en levantar la sesión (GNOME/KDE) y en levantar algunas aplicaciones como OpenOffice.

Los resultados que tengo son preliminares. Pero he logrado bajar el tiempo de inicio de GNOME de 36 a 20 segundos (incluyendo xcompmgr+jhbuild), y el de OpenOffice de 20 a solo 5 segundos.

En cuanto a GNOME, los tiempos se pueden mejorar aun mas, pero modificando las aplicaciones. Según lo que he visto hay algunos componentes que cargan demasiados archivos.

Por ejemplo gnome-panel carga un montón de iconos que no parecen ser necesarios para iniciar la sesión. En mis mediciones, gnome-panel carga casi 1000 archivos desde /usr/share, mientras que Nautilus carga alrededor de 350.

Mientras no se corrijan esas aplicaciones, se puede mejorar el tiempo de inicio de la sesión a nivel de percepción. Es decir, hacerlo parecer mas rápido, pero en realidad no lo es.

Cuando se bootea el sistema, comienza a iniciar una serie de servicios. En el caso de Fedora Core, X/gdm solamente se carga una vez que todo el sistema esta arriba. Esto incluye servicios como ssh, httpd y otros que no son necesarios para iniciar una sesión. Pasa mucho tiempo desde que el usuario ve GRUB hasta que ve una pantalla de login.

El primer paso entonces es crear un script de inicio para gdm y eliminarlo de /etc/inittab. Una vez creado, hacemos que todos los servicios que X no necesite, se carguen después de gdm. De esta forma, tendremos un login apenas sea posible.

La técnica complementaria consiste en precargar archivos, esto se puede hacer con una utilidad que incluye Fedora llamada readahead.

Esta utilidad viene configurada en forma genérica, que no siempre se adapta a las necesidades propias. En la forma en que viene configurado, hace que el tiempo de booteo sea mucho mas largo. Lo ideal seria aprovechar los tiempos muertos. Por ejemplo, el momento en que el usuario esta ingresando su login, o el momento en que la sesión ya esta arriba.

Estoy realizando pruebas precargando archivos en 3 etapas. La primera comienza antes de cargar los servicios, apenas parte el sistema. Con nice se puede dar baja prioridad para que no vaya entorpeciendo la carga del resto de los componentes. Una vez iniciado gdm, se comienza la carga de los archivos necesarios para la sesión de gnome, mientras el usuario ingresa su login. Es aquí en donde influyen los casi 1500 archivos que se deben precargar y que perfectamente se podrían reducir a unos 400.

La tercera etapa es la carga de archivos después de iniciar la sesión. Aquí se pueden cargar las bibliotecas de openoffice o epiphany, mientras el usuario esta pensando en que hacer. En resumen (tiempos entre paréntesis) :

  1. (t=b) Se inicia el booteo
  2. (t=b+10) Se inicia INIT
  3. (t=b+20) Precarga de X y sus bibliotecas en background (nice -n 19)
  4. El sistema carga los servicios necesarios para el login (network, xfs, etc)
  5. (t=b+30) Se inicia gdm en background
  6. (t=b+47) Se inicia la carga de archivos de sesión en background, pero programado para comenzar después de terminar la carga de gdm (sleep 12 en mi caso hace el trabajo)
  7. Se continua cargando los otros servicios (ssh, httpd, etc) en background
  8. (t=b+45) Apenas aparece el login, el usuario puede ingresar sus datos
  9. (t=s) Se inicia la sesión (precargada)
  10. (t=s+20) Apenas termina la carga de la sesión, se inicia la precarga de aplicaciones como openoffice en background. Esto se puede programar via gnome-session-properties
  11. (t=o) Usuario carga OpenOffice
  12. (t=o+5) OpenOffice se carga completamente

El método completo lo publicare apenas lo tenga refinado. Para los inquietos. Fedora viene con scripts para las primeras 2 precargas, solo hay que ajustar /etc/readahead.early.files y /etc/readahead.files. Como saber que archivos se necesitan? Con una buena dosis de strace -e trace=open, greps y cuts 😉 Para la tercera precarga, solo basta un script que llame a /usr/sbin/readahead con una lista de archivos obtenida de openoffice, epiphany, etc.

Daniela y la araña de rincón

ACTUALIZACIÓN: Víctor Gallardo me ha enviado un relato de su experiencia con la araña de rincón.

Antes de alarmarlos, les puedo decir que Daniela ya esta bien y hoy a las 11:00 pudo salir del hospital.

Como varios ya saben, el viernes Daniela fue picada por una araña de rincón alrededor de las 5AM. A pesar del dolor, nos aviso a las 7AM y claramente era una picada de araña de rincón, se puede distinguir porque la piel se pone de un color obscuro en esa area y hay irritación alrededor. Pueden ver algunas fotos aqui

La llevamos inmediatamente al hospital, y ahí le hicieron exámenes de sangre para ver de que tipo de picadura se trataba. Hay dos tipos: cutánea y visceral. La cutánea solo tiene consecuencias a nivel de la piel y fue el tipo de herida en este caso, afortunadamente.

La visceral es mas grave y puede causar la muerte si no se trata en un plazo de 6 horas posterior a la picada. Cabe hacer notar que en el Hospital de Quilpué no tienen el antídoto, lo tienen que traer de Santiago.

Ahora, el antídoto no es la panacea, no esta comprobada su efectividad y tiene varias complicaciones. La aplicación del antídoto solo se hace bajo la aprobación de los padres, porque hay distintas reacciones del cuerpo contra él.

Cuando la herida es visceral lo que sucede es que la sangre pierde algunos de sus componentes y comienza a afectar los riñones. Una vez que los riñones son afectados, se produce una falla multisistémica, es por eso que el tiempo es critico. Los síntomas de una herida visceral son nauseas, fiebre y sangre en la orina. Información mas precisa aqui y aqui

Para prevenir todos estos problemas es muy importante evitar dar las condiciones para que estas arañas anden cerca. Revisamos en la casa, en los lugares en donde uno nunca mira y encontramos varios lugares aptos para que aparezcan arañas, por ejemplo en las uniones entre la muralla y el techo. Ahí encontramos telas de araña y arañitas chicas.

En el comercio venden un veneno, no recuerdo el nombre exacto, pero dice Raid Max y sale una araña, dice que «mata en el acto», pero no es tan así. Lo pusimos a prueba con 3 arañas que encontramos (una tamaño grande y otras dos chiquititas). La grande se demoro como 30 segundos en morir, y eso que la bañe practicamente. Las chicas estaban en el techo y solamente aspiraron lo que había rociado cerca de ellas, se demoraron un par de minutos para «suicidarse» desde el techo 😉

Quiero agradecer a todos los que se han preocupado con lo sucedido, y espero sirva de experiencia al resto, ya que es una amenaza siempre presente.

Un poco de alegria

Hoy celebraremos el cumpleaños de Kuarita!!! . Esta demás decir que esperamos celebrar juntos muuuuchos cumpelaños mas. Menos mal que Daniela se pudo venir hoy a la casa, sino hubiese sido bastante triste. Por casualidad esta de cumpleaños el mismo día que mi amigo Max Celedon, así que comenzamos celebrando ayer en su casa con un exquisito asado.

Otra noticia buena, están publicando este blog en Planeta GNOME Hispano . Hace tiempo les había enviado un email pero pensaba que no lo habían tomado en cuenta.


Victor Gallardo me ha enviado un relato de su experiencia con una mordedura mas grave. Es un gran aporte a este articulo y le agradezco su gentileza de compartir su vivencia.

A continuación, el relato de Victor que transcribo textualmente:

El día 18 de Mayo de 2006 -aproximadamente 21:45 hrs.- experimenté la mordedura de una araña de rincón, que me produjo eliminación de plaquetas (317.000 [x mm3] a 251.000 [x mm3], anemia, anisocitosis + y leve aumento de la ecogenicidad del parénquima hepático.

Se adjunta fotografía que muestra la necrosis de 1,5[cm] de radio con una aureola azul grisácea, a dos minutos de haber recibido la mordedura.

El objeto de esta historia es contarle mi vivencia, ¿cómo reconocer la araña de rincón?, señalarle donde habita y en caso de experimentarla, ¿qué hacer en caso de ser mordido por una de ella?, sugerencias para reducir su letal veneno y aconsejarle –sobre todo- no perder la “FE EN DIOS”.

Mi vivencia es la sgte.:

  • 18.MAY.06, 21:45 Hrs.: De regreso en mi excasa de Ancud –después de 8 horas ausente-, mudé la chaqueta que vestía por una que estaba colgada en perchero de sombreros, diariamente ocupada.
  • 21:46 Hrs.: Experimento un gran punzaso en el pliegue del antebrazo izquierdo, que al ser mas doloroso, me refriego y comienza a disminuir.
  • 21:47 Hrs.: Ya sin dolor… me recuerdo del punzaso y me levanto la manga de la camisa para visualizar lo que me había picado, encontrándome con una mancha negra de 1,5 [cm] de radio y aureola azul grisácea.
  • 21:47 Hrs.: Inmediatamente, sobre la mancha negra, apliqué GEL HELADO y esta acción frenó la diseminación del veneno.
  • 21:57 – 23:30 Hrs. aprox.: Me traslado desde el Serv. Urgencia Hospital Ancud a Pto. Montt. Con los resultados de exámenes de sangre y orina en este último hospital, me detectan hematíes en el riñón y me diagnostican “loxoscelosis cutánea visceral”. Comienza tratamiento con antihistamínicos y corticoides a la vena. No hay antídoto en Hospitales de Ancud y Pto. Montt.
  • 19 al 24.MAY.06: Tratamiento oral con antihistamínicos y corticoides.
  • 19.MAY.06: Al comprender –que aún cuando con el tratamiento médico recibido- existe la posibilidad de morir, me encomiendo a “DIOS” y a “San Expedito”, casualmente recibida su estampita (imagen) este día.
  • 25.MAY.06: Comienza inexplicablemente a desaparecer mancha negra en el pliegue del antebrazo izquierdo. Interpretando personalmente que es un “milagro”.
  • 30.MAY.06: Experimento dilatación al Colón, debido a los fuertes antihistamínicos y corticoides.
  • 16.JUN.06: Resultado de examen de sangre; C.K. Total (destrucción celular)= 503 U/L (confirmado). Valores referenciales normales en hombres: 24 – 190 U/L.
  • 07.JUL.06: Me cambié de casa. La nueva casa se pintó con pintura antiaraña de rincón de Sherwin Williams. Compré una potente aspiradora y diariamente se aspira cada rincón de la casa.

Definitivamente mis prioridades en la vida han cambiado en cuanto a la importancia del dinero, trabajo, calidad y espacio de vida hacia mi hija de 5 años y esposa.
La Fe en “DIOS” y “San Expedito” son fuertes y verdaderas.
Gracias por el tiempo que ha dedicado en leer esta vivencia.

Ancud, 07 de Julio de 2006
Víctor A. Gallardo Márquez
GERENTE GENERAL
«HIDROGAS» CHILOÉ LTDA.
«LOBOSTOP» S.A.
www.lobostop.cl

German Poo en Television… otra vez

Si, el mismísimo German. Claro que no estuvo en el estudio ni nunca lo ha estado, pero es como tercera vez que aparece en TVNauta. Esperamos tenerlo algún día si es que viene por la V Región.

Ayer mostré algunas aplicaciones de entretenimiento para Linux, específicamente mplayer, xmms, zsnes y gaim. Como justo pille a German online aproveche de hacer la pequeña demo con el hehe.

El programa estuvo bastante apretado de tiempo así que no alcance a mostrar Planeta GNOME Chile, queda pendiente para la próxima semana.

TV-Out / VGA-Out

No he avanzado mucho porque no he tenido tiempo libre esta semana. Es decir, he tenido tiempo libre pero lo he dedicado a otras cosas.

No recordaba mucho como usar IDA, ni menos sabia si se podía llegar y leer la BIOS desde Linux. Afortunadamente basto crear los archivos de «dump» usando dd y /dev/mem, el hint me lo dio una persona que me contacto por el driver de neomagic para el xserver de fd.o, para darle soporte de TV-Out (ya lo incluyeron en mplayer). Una vez conocido, el procedimiento es obvio. Para obtener la BIOS de la tarjeta de video:

dd if=/dev/mem of=vbios.rom bs=1k skip=768 count=48

Ya que la BIOS de Video comienza en 0xC0000. Para obtener el vector de interrupciones

dd if=/dev/mem of=vint.rom bs=1k count=1

He comenzado a mirar el código y es bastante saltarín así que cuesta un poco seguirlo.

La otra salida, que es VGA, tiene algún problema de hardware, ya que en XP (!) se ve igual que en Linux, recuerdo que cuando Max fue al canal no tuvo ningún problema, así que algo debe haber pasado en el equipo. Al menos ya se que no es necesario seguir probando modelines con la Corio que es bastante cansador.