24 de octubre de 2011

Las novedades de Linux 3.1

Ya se ha anunciado la disponibilidad de la versión 3.1 del kernel Linux. Novedades: soporte para el procesador de software libre OpenRISC, mejor rendimiento del proceso de escritura de memoria a disco, mayor velocidad del asignador de memoria "slab", una nueva implementación de iSCSI, soporte para chips NFD "Near-Field Communication" para pagos mediante teléfonos, gestión de bloques estropeados en la capa de RAID por software, barreras activadas por defecto en Ext3, un controlador para el Wii Remote, una herramienta "cpupowerutils" para la gestión de energía, y muchos otros drivers y pequeños cambios. La lista completa de cambios, en inglés, puede encontrarse aquí, como siempre.

· Nueva arquitectura: OpenRISC: OpenRISC es una CPU de "código abierto" que es parte del proyecto OpenCores. El objetivo es crear una plataforma de computación completamente libre y disponible bajo licencia (L)GPL, así como un conjunto completo de herramientas de desarrollo, librerías, soporte de sistemas operativos y aplicaciones igualmente libres. La implementación incluida en esta versión es la familia de procesadores de 32 bits OpenRISC 1000 (or1k). Hay más detalles sobre este procesador en esta página.

· Regulación dinámica del writeback: "Writeback" es el proceso de escribir datos de la RAM al disco, y regular en este contexto significa bloquear procesos temporalmente para evitar que creen nuevos datos que escribir, hasta que los datos actuales hayan sido escritos en el disco. El código de writeback era subóptimo, porque en ciertas situaciones forzaba a varios procesos a escribir sus datos al disco simultáneamente, lo cual creaba patrones de escritura aleatoria que no son buenos para el rendimiento. El nuevo código evita esas situaciones, lo cual ayuda a crear patrones de escritura más lineales. El nuevo código también intenta detectar el ancho de banda del disco, un dato que es utilizado para mejorar las heurísticas que deciden qué procesos deben ser bloqueados. El acoplamiento entre sistemas de archivo y el sistema de writeback también ha sido mejorado, y se ha solucionado un problema de escalabilidad.

· Barreras activadas por defecto en Ext3: Los discos duros tienen un buffer de memoria donde se almacenan las instrucciones y datos enviados por el SO. El software interno de los discos modernos cambia el orden de las instrucciones para mejorar el rendimiento, lo cual significa que las instrucciones pueden o no pueden escribirse al disco en el mismo orden en el que el SO las envió. Esto rompe las reglas que el SO necesita para implementar cosas como journaling o COW, de manera que los discos proporcionan una instrucción "vaciado de cache" que no puede ser reordenada y que ordena escribir el buffer a disco. En el mundo de Linux, cuando un sistema de archivos envía esa instrucción, se le llama "barrera". Sistemas de archivos como Ext4, XFS o Btrfs activan el uso de barreras por defecto; Ext3 las soporta pero hasta esta versión no han sido activadas por defecto: las garantías de seguridad de los datos son más altas, pero el impacto en el rendimiento de Ext3 es muy notorio, y se consideró que era una regresión de rendimiento inaceptable para muchos usuarios. Sin embargo, distribuciones como Red Hat activan el uso de barreras en Ext3 desde hace mucho tiempo, y ahora el valor por defecto para Linux también ha sido cambiado.


En otras palabras: Si usas Ext3 y notas una regresión en el rendimiento con esta nueva versión, intenta desactivar las barreras (opción de montaje "barriers=0").

· Soporte de chips NFC (Near-Field Communication): Los chips Near-field communication permiten comunicación inalámbrica simple entre dos dispositivos situados a unos pocos centímetros de distancia. Fueron coinventados por NXP Semiconductors y Sony en 2002, y pueden encontrarse en varios teléfonos ya disponibles en el mercado, y muchos otros están planeando añadir soporte.

Se espera que los chips NFC se conviertan en el sistema de pago por teléfono más utilizado en EEUU en los próximos años: los compradores que tienen la información de su tarjeta de crédito almacenada en sus teléfonos NFC pueden pagar pasando sus teléfonos cerca del lector, en lugar de utilizar la tarjeta de crédito. Un teléfono con NFC podría servir como DNI o tarjeta de identificación. Podría pasarse el teléfono cerca de un chip NFC para conseguir información en un museo, o en una tienda. También puede utilizarse para compartir vídeos, canciones, o fotos.

Esta versión de Linux añade un subsistema NFC y la familia de sockets NFC.

· Mejoras de rendimiento en el asignador de memoria slab: En esta versión, el asignador de memoria slab utilizado por defecto ("slub") utilizará operaciones sin bloqueos en ciertas rutas en las arquitecturas que soporten la instrucción cmpxchg. En particular, ha mejorado considerablemente el rendimiento de la parte de slub que se encarga de liberar memoria de los slabs

· Mejoras de escalabilidad en el VFS: Al igual que en versiones anteriores, hay una nueva ronda de mejoras de escalabilidad:

 · El contador inode_stat.nr_unused se ha convertido a variables per-cpu.

 · La lista global LRU de inodos no usados se ha convertido a una lista por cada superbloque.
 · Como consecuencia del punto anterior, se elimina el semáforo iprune_sem.
 · Se elimina el semáforo i_alloc_sem y se reemplaza su funcionalidad con un sistema más simple.
 · Escalabilidad en el montaje de sistemas de archivos que no tienen punto de montaje (sockfs y pipefs)
 · Evitar tomar el cerrojo inode_hash_locken tuberías y sockets

· Nueva implementación iSCSI: La anterior implementación iSCSI del kernel, SCST, queda obsoleta ante la inclusión del "target" SCSI de Linux-iSCSI.org, una implementación de iSCSI (RFC-3720). Más información aquí.

· cpupowerutils: cpupowerutils es un nuevo proyecto derivado de cpufrequtils y extendido con otras características, como una herramienta de monitorización de hardware. ¿Por qué una nueva herramienta? Así lo justifica el anuncio:

"El tuneado en las CPUs del consumo de energía vs rendimiento ya no consiste en cambiar de frecuencia. Características como los estados de sueño profundo, el cambio de frecuencia tradicional, y las frecuencias "turbo" ocultas dependen íntimamente las unas de las otras. Las dos primeras sólo existen en arquitecturas como PPC, Itanium y ARM, la otra sólo en x86. En x86 la APU (CPU+GPU) sólo funcionará del modo más eficiente si ambos tienen una gestión energética adecuada. Los usuarios y desarrolladores quieren tener una sola herramienta para observar su sistema y monitorizar y depurar los problemas de gestión de energía". cpupowerutils es esa herramienta.

· Raid por Software: gestión de bloques estropeados: La capa MD ("Múltiples Dispositivos", también conocida como "raid por software") tiene en esta versión capacidad de gestionar bloques estropeados: los bloques estropeados se añadirán a una lista, y el sistema intentará no utilizarlos. Esta característica necesitará una versión de mdadm actualizada.

· Personalidad para reportar números de versión 2.6.x: Algunos programas dejaron de funcionar con Linux 3.0. Algunos de ellos son binarios sin fuentes (por ejemplo, programas de gestión de software de cierto vendedor de impresoras). La variable sys.platform en Python también devuelve "linux3" en 3.0, lo cual rompe las cosas que estaban comprobando sys.platform=="linux2". Para solucionar este problema, se ha añadido una personalidad UNAME26 que reporta versiones 2.6.x.

· Soporte de controlador de Wii: Se ha añadido un driver para el Wii Remote.

Estas son las novedades principales de este kernel. Como siempre, pueden encontrar la lista completa, y en inglés, en esta página.

6 comentarios:

  1. Anónimo9:42 a. m.

    Título: Las novedades de Linux 3.1

    Empieza el texto: Ya se ha anunciado la disponibilidad de la versión 3.0 del kernel Linux.

    No sé... cual es la versión ;)

    ResponderEliminar
  2. Lo he cambiado, gracias por el aviso.

    ResponderEliminar
  3. Anónimo11:44 p. m.

    Muy bueno.

    Por cierto en "Soporte de chips NFD..." la D debería de ser una C.

    Gracias. ;-)

    ResponderEliminar
  4. Gracias por este resumen. A los catetillos del kernel nos viene muy bien para enterarnos de qué significan las novedades.

    ResponderEliminar
  5. Un detallito sin importancia, pero que me ha dado al ojo enseguida.

    Donde dices "Soporte de chips NFD" debería ser en realidad "Soporte de chips NFC" :)

    Muchas gracias por tus entradas en el blog (en especial las de novedades del kernel Linux), son muy instructivas.

    Saludos.
    Iñaki.

    ResponderEliminar
  6. hola,
    primero de todo felicidades por el blog, hay artículos realmente interesantes ;)

    respeto a la evolución de los kernel de linux, hace un par de meses asistí a una charla sobre ipv6, comentaban que los sistemas linux no se llevaban muy bien con el tema de asignación de ipv6, en otros sistemas operativos, cuando se hace una asignación de ipv6 se asigna una ip basada en la mac o otra(s) privadas para navegar sin dejar el registro de tu mac en la red. ¿sabes si hay algun avance en este tema?

    muchas gracias!

    ResponderEliminar