Si el liferea tarda mucho en arrancar…


$ eatmydata liferea

Liferea es un lector de feeds (como google reader, pero en aplicación de escritorio) libre que cumple su cometido. La verdad es que no me parece la aplicación definitiva para leer rss pero funciona.

Eso si, tiene un error enormemente molesto y es lo lento que es cuando arranca, sincroniza feeds o marcas toda una carpeta como leída.

Simplificando un poco, lo que está pasando es que el objetivo principal de los sistemas de ficheros modernos es evitar la pérdida accidental de información, de modo que se sacrifica rendimiento (y la duración del disco duro) ante problemas hipotéticos como el de que se vaya la corriente y el ordenador se apague de manera brusca. Por defecto, sqlite, que es la base de datos que emplea Liferea, pide muy a menudo al sistema operativo que se asegure de que la información que gestiona el programa está guardada en el disco duro. Es decir, cuando un programa quiere guardar algo en el disco duro, pide al sistema operativo que lo guarde, pero esto no tiene porque suceder de manera inmediata (se dice que la escritura es asíncrona). El sistema operativo puede mantenerlo en la RAM hasta que considera que es el momento idóneo de escribirlo en disco. Pero las aplicaciones también tienen la opción de forzar al sistema operativo a que los datos sean escritos (sincronizar), y está opción de forzar es lo que usa liferea tan a menudo.

Como este problema no es exclusivo de liferea si no que sucede en muchas aplicaciones, un desarrollador de debian, ha escrito un programa llamado eatmydata que permite desactivar las funciones de sincronización del sistema operativo para aquellos programas que nos interesen. De modo que si un programa ejecutado bajo el paraguas de eatmydata pide forzar el sincronizado, no sucederá nada, esa orden será ignorada. En general esto no es peligroso, pero hay que tener cuidado de cuando se usa y no hacerlo nunca con aplicaciones críticas. Con liferea haciendo copias de seguridad de vez en cuando no hay problema. Para instalar eatmydata llega con:

sudo apt-get install eatmydata

y para ejecutar un programa bajo eatmydata

eatmydata nombre_del_programa

Comentarios

Andrés dice:

Gracias por la investigación! Esto era algo que echaba en falta y nunca me puse a ver por qué era. Tengo que verlo con calma porque parece que los que usamos versiones de Ubuntu viejas igual no lo tenemos por defecto (al menos no lo he encontrado en los repos por defecto de maverick, la 10.10): http://packages.ubuntu.com/search?keywords=eatmydata

fpuga dice:

Hay una versión DIY de eatmydata. Mira los comentarios #35, #36 y #37 del bug

Andrés dice:

De momento me he abierto el repo backport de mi versión de Ubuntu y ahí lo tengo, parece que todo bien y ha arrancado volando!

Andrés dice:

Hace unos días que he actualizado a la Ubuntu 12.04 por defecto y parece que liferea va perfectamente, sin necesidad de tirar del eatmydata.

Deja una respuesta