31 de marzo de 2016

Las novedades de Linux 4.2

(Nota: aunque con un retraso enorme de medio año, aquí va este post)

Ya se ha anunciado la versión 4.2 de Linux. Esta versión añade el driver amdgpu para GPUs de AMD, un driver virtio para la virtualización de GPU, la nueva API gráfica "atomic modesetting" ya es estable, soporte para usar más de un módulo de seguridad al mismo tiempo, una implementación de spinlock más rápida y escalable, soporte de control de writeback dentro de los cgroups, y la reintroducción del soporte para la arquitectura H3/800. 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.


· Nuevo driver amdgpu para hardware AMD Radeon moderno

Esta versión incluye el driver amdgpu, un nuevo driver para asics AMD VI+. Actualmente soporta Tonga, Iceland y Carrizo, y también contiene una opción para soportar experimentalmente partes CI. Toda la funcionalidad importante está soportada. La gestión energética funciona en Carrizo, pero todavía está en desarrollo para Tonga e Iceland.

Este driver es un punto de partida de cero de AMD para centrar en él su nueva estrategia de apuesta por el software libre: Su propósito es que el único driver para gráficos AMD sea éste; la funcionalidad privativa que existe actualmente en el driver Catalyst será portada al driver o se ejecutará como un binario que se ejecute en espacio de usuario e interactúe con el driver.

· Driver virtio para GPUs
Los drivers virtio son "falsos" drivers diseñados para hacer la comunicación entre huéspedes y anfitriones de virtualización más eficiente. Emular el hardware real es complejo e ineficiente, estos drivers en cambio son conscientes de estar ejecutándose en entornos virtualizados, y ofrecen canales para el intercambio de datos simples y rápidos.

En esta versión se incluye un driver para GPUs virtuales. Puede ser utilizado en máquinas virtuales de QEMU. Por ahora sólo soporta kernel-modesetting; el driver modesetting de X.org es capaz de gestionar el dispositivo perfectamente, y también está disponible el framebuffer para fbcon. Los parches para el soporte en QEMU están siendo revisados. La versión inicial sólo tiene soporta para 2D; el soporte 3D requiere más trabajo en QEMU y será añadido más tarde.

· La API atomic modesetting activada por defecto

Esta versión por fin completa la nueva API atomic modesetting, y la activa por defecto (hasta ahora era experimental y requería ser activada manualmente). Esta API es necesaria para implementar mejor los sistemas gráficos modernos; para más detalles sobre esta API y por qué es necesaria, se recomienda leer estos artículos de LWN: Atomic mode setting design overview, parte 1, y parte 2

· Apilado de módulos de seguridad

Hay varios módulos de seguridad disponibles en Linux, pero sólo se puede usar uno al mismo tiempo. Durante muchísimo tiempo, ha habido desarrolladores que han querido poder utilizar más de un módulo de seguridad al mismo tiempo ("stacking", es decir "apilando" otro módulo tras el primero). Esta versión añade soporte para el "apilado" de módulos de seguridad. Para más detalles, léase Progress in security module stacking

· Una nueva implementación de spinlocks

Esta versión añade soporte en la arquitectura x86 para un nuevo tipo de spinlocks basados en una cola. Esta nueva implementación es capaz de reemplazar la actual implementación por defecto de spinlocks basado en "tickets", sin incrementar el tamaño de la estructura de datos del spinlock.

Este nuevo spinlock tiene un rendimiento ligeramente lejor que el "ticket" en caso de que no haya contención, y su rendimiento puede ser mucho mejor cuando hay contención moderada o alta. Es especialmente útil para máquinas NUMA con al menos 2 sockets; aunque incluso con sólo 2 sockets puede haber mejoras significativas, dependiendo del trabajo a realizar. También puede mejorar el rendimiento de un test de estrés intensivo de E/S e interrupciones hasta un 20%. Para más detalles, leer MCS locks and qspinlocks.

· Soporte de control de writeback dentro de un cgroup

Linux es capaz de limitar a los procesos que están intentando escribir muchas páginas de memoria al disco (writeback). Pero este control es global, y no permite un control personalizado en los cgroups. Esta versión añade soporte para control de writeback a los procesos de un cgroup. Para más detalles, ver Writeback and control groups

· Reintroducción de la arquitectura H8/300

Linux añadió soporte para la arquitectura H8/300 en Linux 2.5.68. Pero fue eliminada en Linux 3.13 por falta de mantenimiento.

En esta versión, se ha vuelto a implementar el soporte para esta arquitectura.



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

1 comentario: