21 de marzo de 2012

Las novedades de Linux 3.3

Perdón por el retraso. Ya se ha anunciado la disponibilidad de la versión 3.3 del kernel Linux. Como principal novedad, la inclusión del código del proyecto Android. También hay otras novedades, como una nueva arquitectura (TI C6X), mejora del balanceado y la habilidad de cambiar de modo RAID en Btrfs, y varias mejoras de red: Una implementación de un switch por software (Open vSwitch) para casos con virtualización, una alternativa más rápida y escalable al driver "bonding", un límite configurable a la cola de transmisión de las tarjetas de red para luchar contra el "bufferbloat", un "control group" para controlar la prioridad del tráfico de red, y otro cgroup para límitar el tamaño de los búferes TCP de cad proceso. También se han incluido drivers nuevos y muchas otras mejoras y pequeños cambios. La lista completa de cambios, en inglés, puede encontrarse aquí, como siempre.

1. Inclusión de Android: Los sistemas basados en Android utilizan el núcleo Linux, pero con algunas modificaciones y añadidos propios. Durante mucho tiempo el código de esas variaciones no ha sido incluido en el repositorio principal, debido a desacuerdos entre los desarrolladores de ambos proyectos. Afortunadamente, tras varios años las asperezas están siendo limadas. Varios subsistemas de Android han sido incluidas en esta versión, y se incluirán más en el futuro. Esto hará las cosas más fáciles para todo el mundo, incluyendo la comunidad Android que hace mods personalizados, o las distribuciones Linux que quieran añadir soporte para programas Android.

2. Btrfs: 'restriping' entre diferentes niveles RAID, mejora del proceso de balanceo, mejores herramientas de depuración:

 · Mejora del proceso de balanceo, restriping RAID

En Btrfs, la operación de "balanceo" consiste en reescribir todos los datos del sistema de archivo, haciéndolos pasar de nuevo por los asignadores de bloques y de "trozos" de disco (chunks). Esta operación es necesaria en algunos casosa. Por ejemplo, si se añade un nuevo disco, se necesita un balanceo para redistribuir los datos existentes a ese disco. Este balanceo, sin embargo, funciona siempre para todo el sistema de archivos, y puede tardar varios horas, y no soporta cambio de un perfil RAID a otro.

En esta versión la implementación de balanceo ha sido reescrita. Btfrs puede pausar una operación de balanceo, y posteriormente volver a retomarla donde se dejó. Puede observarse el progreso. También puede hacer "restriping" entre diferentes niveles RAID, es decir, cambiar entre un modo RAID y otro. También permite filtrar la operación de balanceo para que sólo afecte a datos o a metadatos. También permite balancear exclusivamente los grupos de bloques que estén casi vacíos. Las utilidades están disponibles en la rama "parser" de btrfs-progrs.

 · Mejor depuración

Btrfs tiene una nueva herramienta de depuración, "integrity check", orientada a desarrolladores. Esta herramienta consiste en escanear cada bloque escrito, y examinarlo para comprobar que las referencias son correctas y consistentes, y que no se está escribiendo nada que pudiera dejar al sistema de archivos en un estado de inconsistencia tras un corte de corriente. Esta herramienta -que tiene unos costes de rendimiento muy altos y no está recomendada para usuarios normales- ayudará a los desarrolladores a encontrar fallos con más rapidez.


3. Open vSwitch: Open vSwitch es una implementación de software de un switch de red. Este proyecto ha existido durante varios años, y ahora se incorpora al núcleo principal. Linux ya tiene un switch virtual (el "bridge"), pero Open vSwitch está diseñado para escenarios más complejos, particularmente para entornos de virtualización (lea el documento "Why Open vSwitch?"

Open vSwitch soporta las interfaces de gestión estándar (sFlow, Netflow, RSPAN, CLI), y está abierto a ser extendido y controlado utilizando Openflow  y el protocolo de gestión OVSDB, y está diseñado para ser compatible con los chipsets de switching modernos.Ver openvswitch.org para más información.

4. Mejor vinculación (bonding) de interfaces de red: teaming: Esta versión añade un nuevo driver de red llamado "teaming", cuyo objetivo es ser un reemplazo rápido, escalable, y limpio del driver "bonding". Esta funcionalidad suele utilizarse para vincular dos tarjetas de red y así incrementar el ancho de banda máximo y proporcionar redundancia. En esto momentos están disponibles los modos round-robin y active-backup. La librería de espacio de usuario, junto con un par de aplicaciones de demostración, está disponible en github.com/jpirko/libteam.

5. Luchando contra el bufferbloat: byte queue limit: "Bufferbloat" es un término utilizado para describir los problemas de latencia y tasa de transferencia causados por el excesivo buffering en las diferentes capas de una conexión de red. Se están desarrollando algunas herramientas para ayudar a aliviar esos problemas, y esta característica es uno de ellos.

El "byte queue limite" es un límite configurable de datos que se pone a la cola de envío de paquetes de una tarjeta de red. Como resultado, uno puede tunear cosas como que los paquetes de alta prioridad sean atendidos con una latencia razonable sin tener que vaciar la cola cuando existen datos para enviar. La configuración de estos límites se hace en el directorio de sysfs tx-n de cada tarjeta de red.

6. Límites de buffer TCP controlados con cgroup: Se introduce la capacidad de controlar la memoria utilizada por los buffers del protocolo TCP mediante cgroups (grupos de procesos).

7. cgroup para el control de prioridad de red: El cgroup para el control de prioridad de red permite al administrador configurar la prioridad del tráfico de red para los procesos que son miembros del grupo. En teoría, una aplicación podría configurar la prioridad mediante la opción de socket SO_PRIORITY. Esto, sin embargo, no es siempre posible. Este cgroup permite al administrador asignar un proceso a un grupo y obligarle a seguir la configuración definida. Documentación en Documentation/cgroups/net_prio.txt

8. Mejor redimensionado en vivo de Ext4: Se ha añadido una nueva ioctl y código que permite redimensionar un sistema de archivos Ext4 con mayor rapidez y seguridad. El nuevo redimensionado permite al kernel hacer todo el trabajo, como crear bitmaps y tablas de inodos, puede soportar características como flex_bg y BLOCK_UNINIT, y es mucho más rápido.

9. Nueva arquitectura: TI C6X: La familia de arquitecturas que funcionan en Linux ha aumentado aun más con la incorporación del soporte para Texas Instrument C6X. Esta arquitectura soporta procesadores de la familia C64X de uno y varios cores DSP, sin MMU. Esta arquitectura es VLIW, y tiene un conjunto de instrucciones diseñado para aplicaciones DSP. Para más detalles, vea esta página web de TI. La página del proyecto es linux-c6x.org.

10. Soporte para inicio desde EFI: En esta versión se incluye un objeto EFI que permite que una imagen bzImage x86 sea cargada y ejecutada directamente como una aplicación EFI. Tanto los cargadores BIOS y EFI pueden cargar la misma imagen, permitiendo de ese modo utilizar la misma imagen para ambos casos.



Y eso es todo. La lista completa de cambios en inglés, aquí.

2 comentarios:

  1. No hace falta que pidas perdón por el retraso, faltaría más.

    Que nosotros estemos ansiosos por leer las novedades del kernel de Linux salidas de tu teclado no hace que te tengas que dar más prisa.

    Y, como siempre, la entrada excelente.

    ResponderEliminar
  2. Anónimo12:21 p. m.

    Muchas gracias, como siempre, por tu trabajo.

    ResponderEliminar