El retorno de Tux en Linux 2.6.30

Linus Torvalds oficialmente ha anunciado la versión 2.6.30 del kernel de Linux.  Sólo han pasado tres meses desde el release anterior y la cantidad de cambios es impresionante.  Linus dice:

Estoy seguro que olvidamos algo, y sé que hay algunas regresiones pendientes.  Al mismo tiempo, necesitamos la cobertura de un release y en general se ve bastante bien.  Hemos solucionado algunas regresiones en los últimos días, y siempre hay un 2.6.30.x

También agrega que en la documentación oficial algo importante no fue mencionado:

Una cosa que parece no haber sido mencionada es que al parecer estaríamos listos con la re-estructuración del manejo de interrupciones para suspender/resumir, y esto nos lleva a un nuevo orden mundial.  Aunque sospecho que un montón de detalles cambiarán, por supuesto.

El sitio H-Open realizó un exhaustivo análisis de los cambios más importantes, tenemos desde cambios que se quedaron pendientes de ser incluidos oficialmente en 2.6.29 hasta nuevos drivers y sistemas de archivo.

La siguiente es una selección que hemos realizado de lo que encontraremos en esta versión, y que seguramente veremos en las distribuciones que serán lanzadas a fines de año como es el caso de Ubuntu 9.10 en Octubre junto a  Fedora 12 y openSUSE 11.2 en Noviembre.

Mejoras en ext3 y ext4

Se realizaron cambios al sistema de archivos ext4 para prevenir el riesgo de inconsistencias.  Estos cambios hacen que el rendimiento se vea afectado mínimamente en pro de tener un sistema más robusto.

Por otra parte, en ext3 hay dos formas de escribir en el sistema de archivos, una es escribir los datos apenas se necesite, de a pedacitos (data=ordered), y otra es acumular datos en memoria para escribirlos como un sólo bloque grande (data=writeback).  El primer caso requiere acceder más veces al disco, lo que provoca tiempo perdido esperando que el disco termine de grabar.  Es lento pero seguro, ya que los datos se escriben lo antes posible para no perderlos en caso de un corte de energía.  El segundo caso es una especie de caché de escritura, no pierde tiempo en esperas pero en caso de corte de energía se pierden los datos que estaban en memoria y no se escribieron en el disco. En esta versión se incluye un nuevo modo que es un punto intermedio entre ambos casos, es seguro pero no tan rápido como writeback.

Otro cambio es el manejo del famoso atributo atime o access time: Cuando se accede un archivo, se modifica su fecha de acceso lo que obliga a escribir en el disco cada vez que se lee un archivo.  Por mucho tiempo, los power users desactivaban la escritura de este atributo para mejorar el rendimiento de las lecturas.  Dado que ahora son pocas las aplicaciones que necesitan tener un valor exacto en ese campo, se ha modificado el sistema para escribirlo sólo una vez al día con la opción de habilitar el comportamiento anterior de alta precisión sólo si es necesario.

Sistema de archivos NILFS2

En un sistema de archivos común y corriente las operaciones de lectura son apoyadas por caché’s de lectura en memoria, es decir, cuando se necesita un bloque, se leen varios bloques del disco y se dejan en memoria, y cuando se necesita otro bloque en vez de ir a buscarlo nuevamente al disco, se toma de memoria en caso de que se haya leído previamente.

Para operaciones de escritura no hay muchas opciones, dado que se tiene que sacrificar rendimiento por seguridad como lo explicamos anteriormente.  Por otra parte al escribir un archivo se tiene que modificar varias partes del disco.

NILFS2 o New Implementation of a Log-structured File System se trata de un sistema de archivos que opera en base a registros históricos.  Cada vez que se modifica el sistema de archivos se escribe como un registro de cambio, a continuación del cambio anterior.  Por lo tanto en un sistema basado en registros históricos, la escritura se realiza en un solo lugar y no requiere esperar a que el dispositivo busque otros lugares donde escribir, mejorando notablemente el rendimiento de escritura.   Por otra parte, esta técnica permite en cualquier momento obtener rápidamente una versión anterior del sistema de archivos en modo de sólo lectura para respaldar o para recuperar un archivo eliminado accidentalmente sin afectar al resto del sistema que continúa con sus operaciones normales.

Otra ventaja de usar un sistema de archivos basado en registros históricos es que es muy rápido de recuperar en caso de corte de energía a diferencia de un sistema de archivos tradicional con soporte de journal (ext3, ext4, ntfs, etc).  Simplemente se busca el último registro histórico consistente y se monta como lectura/escritura a partir de ese momento.

Boot Fast Stupid!

En esta versión se integraron los últimos cambios pendientes para mejorar el tiempo de inicio desde el punto de vista del kernel.  Este es el tiempo desde que se carga el kernel hasta que se inicia el proceso init que desencadena la carga de servicios y la inicialización de subsistemas.

Uno de los problemas casi inevitables en este tramo es la inicialización de los dispositivos.  Algunos se demoran bastante en dar señales de vida, y en casos como unidades ópticas o discos duros incluso hay que esperar a que se pongan en movimiento.

La técnica aplicada para evitar estas demoras es bastante sencilla en el papel, pero difícil de implementar en un sistema tan complejo.  El cambio consiste en inicializar los dispositivos de forma asíncrona, esto quiere decir que en vez de esperar a que el dispositivo responda, éste se inicializa y en forma posterior se obtiene el resultado, de esta forma se pueden inicializar varios dispositivos o subsistemas en forma paralela.

Nuevos y mejores drivers

Como es costumbre, muchos drivers han sido mejorados en esta versión, y también hay primerizos.  En la lista de cambios se ve soporte mejorado (o nuevo) para varios dispositivos inalámbricos, tarjetas de captura de video, mejoras en soporte de video ATI R600/R700 (gestión de memoria y kernel mode setting DRM para proveer aceleración 2D y xvideo), tv-out en los nuevos chipsets de intel, etc.

Otros cambios son: optimizaciones para discos SSD, inclusión de ALSA 1.0.20, mejoras en hibernación y virtualización.

Ah! y lo olvidaba ¡Vuelve Tux!.

Link : Fine tuning – What’s new in Linux 2.6.30 (The H Open Source)