2 de mayo de 2017

Las novedades de Linux 4.11

Ya se ha anunciado la versión 4.11 de Linux. Esta versión añade soporte para cambiar el planificador de E/S en vivo en la capa de bloques multiqueue, soporte de journalling en la implementación RAID5 MD que permite cerrar el "write hole", una implementación de swap más escalable para el swap ubicado in SSDs, una nueva llamada al sistema que resuelve deficiencias de la actual interfaz stat(), una nueva herramienta perf ftrace que actúa como un frontend para la interfaz ftrace, soporte para dispositivos de almacenamiento que siguen la especificación OPAL, soporte para el protocolo Shared Memory Communications-RDMA protocol definido en el RFC7609 y búfers persistentes para la consola VGA. 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. 



· Soporte para cambiar el planificador de E/S en vivo en la capa de bloques multiqueue

Es bien sabido que la capa de bloques de Linux tiene diferentes planificadores de E/S (deadline, cfq, noop, etc), con diferentes características cada uno, y los usuarios pueden cambiar entre uno y otro en vivo. En Linux 3.13, la capa de bloques añadió un nuevo diseño multicola, diseñada para el hardware moderno (SSD, NVMe). Sin embargo, este nuevo diseño multicola no incluía el soporte para planificadores de E/S. Esta versión resuelve ese problema con la inclusión de soporte de planificadores de E/S en el soporte multicola de la capa de bloques. También se ha incluído un port del planificador deadline (otros serán añadidos en el futuro). 


· Swapping escalable para SSDs

Los dispositivos de almacenamiento como SSDs hacen que el uso de swap más atractivo, no sólo como una manera de lidiar con el exceso de uso de memoria, sino también como una técnica de mejora de rendimiento. Por ejemplo, los proveedores de servicios de nubes pueden hacer overcommit de memoria más agresivamente y meter más VMs en una plataforma con el swap ubicado en un dispositivo de almacenamiento rápido. Sin embargo, la implementación de swap fue diseñada para los discos duros tradicionales, para los que el rendimiento y la latencia del swap no era tan importante. Esta versión mejora la implementación de swap para hacerla más escalable, y por lo tanto más adecuada para ser utilizada con dispositivos de almacenamiento modernos. 


· Journaling en RAID5 para cerrar el write hole

Basada en el trabajo que empezó en Linux 4.4, esta versión añade soporte de journaling para RAID4/5/6 en la capa MD (no confundir con el RAID de btrfs). Cuando se configura un dispositivo de journaling (típicamente NVRAM o SSD), el "write hole" de RAID5 desaparece - un crash durante el modo degradado no puede causar corrupción. 


· statx(2), una alternativa moderna para stat(2)

Debido a varias carencias en la llamada al sistema stat(2) (tal y como no estar preparada para el problema y2038 o no funcionar bien con los sistemas de archivo de red), se ha estado trabajando durante años en una nueva llamada al sistema, y el resultado final ha sido statx(2), una nueva llamada que ha sido añadida en esta versión. Para más información: statx() v3. 


· Nueva herramienta de perf, perf ftrace

Perf ha añadido una nueva herramienta: perf ftrace. Esta herramienta pretende ser un simple front-end para la interfaz ftrace. En esta versión, perf ftrace sólamente soporta dos trazadores, function_graph y function (por defecto function_graph; pueden configurarse otros con la opción de configuración ftrace.tracer). En esta versión solamente se soporta el trazado de un sólo proceso, y la herramienta sólo lee el archivo trace_pipe y lo escribe a stdout. En el futuro se añadirán otras características. 


· Soporte para dispositivos de almacenamiento OPAL

La Especificación de almacenamiento OPAL es un conjunto de especificaciones para dispositivos de almacenamiento que mejora su seguridad. Por ejemplo, define una manera de cifrar los datos para que personas no autorizadas no puedan acceder a los datos. Es decir, es una especificación para discos auto-cifrados. Esta versión añade soporte de OPAL con controladores NVMe.


· Soporte para el protocolo SMC-R (RFC7609)

Esta versión añade la implementación inicial del protocolo "Shared Memory Communications-RDMA" (SMC-R) tal y como está definido en el RFC7609. SMC-R es un protocolo de IBM que proporciona capacidades RDMA sobre RoCE de manera transparente para aplicaciones que usan sockets TCP. SMC-R no pretende reemplazar TCP, introduce una familia de protocolos PF_SMC. Las aplicaciones no requieren modificaciones más allá de especificar el uso de la nueva familia de sockets AF_SMC; las aplicaciones que no han sido modificadas incluso pueden ser utilizadas con ayuda de preloading de una librería.


· Búfers persistentes para las consolas VGA

No se trata de una característica importante, especialmente para los usuarios de tmux/screen, pero probablemente fastidioso para otros: esta versión añade soporte opcional para que el historial de scrollback de las consolas no se borre cuando se cambia de una a otra.

Y eso es todo. Como siempre, pueden encontrar la lista completa, y en inglés, en esta página