20 de enero de 2014

Las novedades de Linux 3.13

Ya se ha anunciado la versión 3.13 de Linux. Entre las novedades de esta versión destacan nftables, el sucesor de iptables, un rediseño de la capa de bloques optimizado para SSDs de alto rendimiento, un framework para establecer límites de consumo energético en dispositivos Intel RAPL, mejora del rendimiento de squashfs, gestión energética en dispositivos AMD Radeon activada por defecto, mejor rendimiento en sistemas NUMA, mejor rendimiento en cargas donde se utilicen "hugepages", TCP Fast Open activado por defecto, soporte para pagos NFC y soporte para el protocolo High-availability Seamless Redundancy. 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.


· Capa de bloques escalable, diseñada para dispositivos SSD de alto rendimiento
Durante décadas, los discos duros tradicionales han determinado el diseño de las partes de los sistemas operativos que comunican a las aplicaciones con los dispositivos de almacenamiento. Con las nuevas generaciones de discos de estado sólido, SSD, esos requisitos antiguos ya no tienen validez. La capa de bloques de Linux estaba diseñada con un sólo bloqueo que protegía la cola de peticiones de ES, este diseño puede conseguir un ratio de 800.000 operaciones de ES por segundo, al margen de cuántos cores se utilizasen para hacer ES. Esto era más que suficiente para los discos magnéticos tradicionales, cuyo ratio en accesos aleatorios no pasa de varios cientos de ES/s, pero no es suficiente para los discos SSD más modernos, que alcanzan un ratio de 1 millón, y mejoran con rapidez en cada nueva generación. Tampoco es un diseño apropiado para el mundo multicore actual.

Esta versión incluye un rediseño de la capa de bloques de Linux, que pasa a estar basada en dos niveles de colas: Un nivel de colas por-cada-CPU para enviar ES, que posteriormente pasan a un segundo nivel de colas de envío hacia el hardware. El mapeado entre las colas de envío y las colas de hardware puede ser 1:1 o M:N, dependiendo del hardware y la configuración. La experimentación ha demostrado que este diseño puede alcanzar varios millones de operaciones ES/s, pudiendo de este modo aprovechar las nuevas capacidades de los dispositivos SSD NVM-Express o PCI-E, y también las CPUs multicore, al mismo tiempo que se mantienen la interfaz y ventajas de una capa de bloques.

· nftables, el sucesor de iptables
iptables tiene una serie de limitaciones tanto a nivel funcional como de diseño: problemas con la actualización de reglas o duplicación de código, que causan problemas al mantenimiento del código y a los usuarios. nftables es un nuevo sistema de filtrado de paquetes que resuelve esos problemas, manteniendo al mismo tiempo compatibilidad para los usuarios de iptables.

El núcleo del diseño de nftables es una pseudo-máquina virtual simple inspirada en BPF. Una nueva utilidad interpreta las reglas proporcionadas por el usuario, las compila a un pseudo-bytecode y transfiere el resultado al kernel. Este sistema puede reemplazar miles de líneas de código, ya que el conjunto de instrucciones del bytecode permite expresar los selectores de paquetes para todos los protocolos. Dado que la utilidad en espacio de usuario interpreta los protocolos y los traduce a ese bytecode, ya no es necesario incorporar en el kernel extensiones específicas para nuevos protocolos, lo cual significa que los usuarios no tendrán que actualizar el kernel para conseguir soporte para nuevos protocolos y matches, sólo será necesario actualizar la utilidad. Hay también una nueva librería para las utilidades que necesiten interactuar con el cortafuegos.

nftables proporciona compatibilidad con iptables. Hay nuevas utilidades iptables/iptables que traducen reglas de iptables al nuevo bytecode, y es posible también usar e introducir nuevos módulos xtables. Como bonus, estas nuevas utilidades proporcionan características que eran imposibles con el antiguo diseño: notificaciones para cambios en las tablas y cadenas, mejor soporte para actualizaciones incrementales de reglas, y la habilidad para activar/desactivar cadenas de cada tabla. Hay un una pequeña guía de la nueva utilidad y su sintaxis aquí. Página del poyecto: http://netfilter.org/projects/nftables/


· Radeon: soporte de gestión energética activado por defecto, cambio automático de GPU, soporte de Radeon R9 290X 'Hawaii'
 · Gestión energética activada por defecto: Linux 3.11 añadió soporte de gestión energética para dispositivos AMD Radeon. La gestión energética mejora el consumo energético, que es crítico para los dispositivos alimentados por baterías, pero es también un requisito para conseguir alto rendimiento, ya que permite reprogramar la velocidad de reloj a estados más potentes en algunas GPUs y APUs que se inician por defecto en estados menos potentes.

Este soporte tenía que activarse con un parámetro en el módulo. En esta versión, la gestión energética está activada por defecto para buena parte del hardware AMD Radeon: BTC asics, SI asics, SUMO/PALM APUs, evergreen asics, r7xx asics y hawaii.

 · Cambio automático de GPU: El soporte para cambio automático de GPUs se introdujo en Linux 3.12. Esta versión añade soporte para esta característica en hardware AMD Radeon.

 · Soporte de R9290X 'Hawaii': Esta versión añade soporte para los dispositivos R9 290X "Hawaii"

· Framework para la limitación de consumo energética
Esta versión añade un framework que permite configurar límites de consumo de energía en los dispositivos que soporten esa funcionalidad. Ha sido diseñado pensando en el mecanismo Intel RAPL (Running Average Power Limit), disponible en los últimos procesadores de Intel (Sandy Bridge y posteriores, otros muchos dispositivos añadirán soporte posteriormente). Este framework proporciona una interfaz consistente entre el kernel y el espacio de usuario para exponer sus mecanismos de configuración con uniformidad.

· Soporte para la arquitectura Intel Many Integrated Core
Esta versión añade soporte para la arquitectura Intel Many Integrated Core o MIC, una arquitectura que incorpora parte del trabajo realizado anteriormente en la arquitectura Larrabee, el proyecto Teraflops Research Chip, y el procesadorIntel Single-chip Cloud Computer. El superordenador más potente del mundo, el Tianhe-2 del Centro Nacional de Supercomputación en Guangzhou, China, utiliza esta arquitectura para conseguir 33.86 PetaFLOPS.

La familia MIC de coprocesadores en formato PCIe ejecuta un sistema operativo Linux de 64 bits. El driver gestiona el estado del sistema operativo en la tarjeta y establece comunicación entre el equipo y la tarjeta. Más información sobre la familia de dispositivos Intel Mic y sobre el sistema operativo y herramientas para MIC están disponibles aquí. Esta versión soporta los dispositivos Intel MIC X100, e incluye un demonio en espacio de usuario de ejemplo.

· Mejora del rendimiento en sistemas NUMA
Los sistemas multiprocesador modernos (ejemplo, x86) suelen tener sistemas de memoria NUMA ("non-uniform memory access"). En estos sistemas, el rendimiento de un proceso puede ser diferente dependiendo de si el rango de memoria al que accede está conectado a la CPU local o a otra CPU. Dado que el rendimiento depende de la localidad de los accesos a la memoria, es importante que el sistema operativo programe un proceso para que se ejecute en la misma CPU donde está conectada la memoria a la que accederá.

La manera que Linux tenía de tratar estas situaciones era deficiente. En Linux 3.8 se incluyó una nueva fundación para el soporte de NUMA que permitiría añadir políticas NUMA más inteligentes en el futuro. Esta versión incluye varias de esas políticas, y puede gestionar casos tales como los de procesos que comparten páginas de memoria, o los que utilizan hugepages transparentes. Se han añadido nuevas sysctls para activar o desactivar y configurar este soporte (ver documentación aquí).

· Mejora de la escalabilidad del acceso a la tabla de páginas en cargas con hugepage
Linux mantiene información sobre cada página de memoria en una estructura de datos llamada tabla de páginas. En las situaciones en que se utilizan hugepages, el bloqueo utilizado para proteger algunas partes de la tabla se ha convertido en un punto de contención. Esta versión incluye bloqueos más eficientes para esas partes de la estructura, mejorando la escalabilidad del acceso a la tabla de páginas en las cargas con hugepage y muchos procesos.

· Mejora del rendimiento de squashfs
Squashfs, el sistema de sólo lectura utilizado por la mayoría de distribuciones live, instaladores y algunas distros embebidas, ha incorporado mejoras que aumentan notablemente el rendimiento en cargas donde estén envueltas varias lecturas paralelas. Uno de ellas es la descompresión directa de los datos en el caché de páginas, lo cual evita una copia de los datos y elimina el bloqueo utilizado para proteger al búfer intermedio. El otro es el soporte de la descompresión multihilo.

· TCP Fast Open activado por defecto
TCP Fast Open es una optimización del proceso de establecimiento una conexión TCP que permite eliminar un viaje de ida y vuelta de ciertos tipos de conversaciones TCP, lo cual puede mejorar el tiempo de carga de páginas web. En Linux 3.6 y Linux 3.7 se añadió soporte para esta característica, que requiere soporte de espacio de usuario. En esta versión, el soporte de TCP Fast Open está activado por defecto.

· Soporte de pagos NFC
Esta versión añade soporte para el Secure Element. Una API netlink permite activar, desactivar y descubrir los elementos seguros NFC. Con ayuda de espacio de usuario, esto permite soportar pagos NFC, que son útiles para implementar transacciones financieras. Sólo el driver pn544 soporta esta API de momento.

· Soporte para el protocolo High-Availability Seamless Redundancy
El protocolo High-availability Seamless Redundancy (HSR) es un protocolo de redundancia para Ethernet. Proporcional redundancia y tolerancia a fallos para dichas redes. Requiere una topología de red especial donde todos los nodos estén conectados a un anillo (y cada nodo tenga dos interfaces de red físicas). Está orientado a aplicaciones que requieren alta disponibilidad y tiempo de reacción muy corto.

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

9 comentarios:

  1. Anónimo8:29 a. m.

    "nftables, el sucesor de nftables"
    Creo que es el sucesor de iptables ;)

    ResponderEliminar
    Respuestas
    1. Parece que va a ser así. O al menos, es lo que se comenta.

      Eliminar
  2. Hola q tal como siempre muy buen post. Solo quería decirte que ssd significa dispositivos de estado sólido. Erróneamente se habla de discos, pero no son estos cómo tal. Supongo que ya lo sabias y se te ha de ver olvidado.

    Saludos.

    ResponderEliminar
  3. Anónimo12:17 p. m.

    Muchas gracias por tu artículo.
    Pocas veces se puede leer sobre las novedades del kernel, en castellano, de forma tan llana y a la vez tan completa.

    Gran trabajo y un cordial saludo.

    ResponderEliminar
  4. Anónimo1:58 p. m.

    Muy buena descripcion de las novedades para el kernel 3.13.

    ¿para cuando un adelanto del 3.14 que parece que trae cosas interesantes (nuevo scheduler para tiempo real)?

    ResponderEliminar
  5. Desde hace un pregunto cuanta sera la diferencia entre un kernel windows-nt en la version windwos 7 u 8 con respecto a las constantes mejoras que tiene el kernel linux. No creo que por mas que actualizamos windows se actualice si kernel o se mejore, la verdad no lo se. De suceder esto es increíble la ventaja que tenemos de usar un kernel linux (a pesar de algún que otro driver o hardware).
    No conocía tu labor de traducir todo tan bien, me obligas a venir por aqui de ves en cuando. Muchas gracias por tu trabajo. saludos desde el sur.

    ResponderEliminar
  6. Anónimo5:10 a. m.

    A favoritos, gracias por tu trabajo con la traducción, sobre todo de las partes más tecnicas que a veces son dificiles de entender del original.

    ResponderEliminar
  7. Anónimo4:17 p. m.

    Muchas gracias por los resúmenes, este es uno de los posts que más ansiosamente espero y leo con un café :-)

    ResponderEliminar