Lanzamiento del núcleo de Linux 5.14

Después de dos meses de desarrollo, Linus Torvalds presentó el lanzamiento del núcleo Linux 5.14. Entre los cambios más destacados se encuentran: nuevas llamadas al sistema quotactl_fd() y memfd_secret(), eliminación de los controladores ide y raw, un nuevo controlador de prioridades de entrada/salida para cgroup, el modo de planificación de tareas SCHED_CORE, y la infraestructura para crear cargadores de programas BPF verificados.

La nueva versión incluye 15,883 correcciones de 2,002 desarrolladores, con un tamaño de parche de 69 MB (los cambios afectaron a 12,580 archivos, se añadieron 861,501 líneas de código y se eliminaron 321,654 líneas). Aproximadamente el 47% de todos los cambios presentados en 5.14 están relacionados con controladores de dispositivos, alrededor del 14% concierne a la actualización del código específico de arquitecturas de hardware, el 13% está relacionado con la pila de red, el 3% con sistemas de archivos y el 3% con subsistemas internos del núcleo.

Novedades principales:

  • Subsistema de disco, entrada/salida y sistemas de archivos
    • Para cgroup, se ha implementado un nuevo controlador de priorización de entrada/salida — rq-qos, que puede gestionar la prioridad de procesamiento de las solicitudes a dispositivos de bloque generadas por los miembros de cada cgroup. Se ha añadido soporte para el nuevo controlador de prioridad en el planificador de entrada/salida mq-deadline.
    • En el sistema de archivos ext4 se ha implementado un nuevo comando ioctl EXT4_IOC_CHECKPOINT, que forzosamente vuelca en disco todas las transacciones pendientes del registro y los búferes relacionados, así como reescribe la zona del registro utilizada en el almacenamiento. Este cambio se preparó en el marco de una iniciativa para prevenir fugas de información de los sistemas de archivos.
    • En Btrfs se han realizado optimizaciones de rendimiento: gracias a la eliminación del registro innecesario de atributos extendidos durante la ejecución de fsync, el rendimiento de las operaciones intensivas con atributos extendidos aumentó hasta un 17%. Además, al realizar operaciones de truncado que no afectan a los extensos, se desactivó la sincronización completa, lo que redujo el tiempo de ejecución de la operación en un 12%. Se ha añadido una configuración en sysfs para limitar la capacidad de entrada/salida durante la verificación del FS. Se han añadido llamadas ioctl para cancelar operaciones de cambio de tamaño y eliminación de dispositivos.
    • En XFS se ha rediseñado la implementación de la caché de búfer, que ahora utiliza la asignación de páginas de memoria en modo por lotes. Se ha mejorado la eficacia del caché.
    • En F2FS se ha añadido la opción para funcionar en modo de solo lectura y se ha implementado el modo de almacenamiento en caché de bloques comprimidos (compress_cache) para mejorar el rendimiento de lectura aleatoria. Se ha implementado el soporte para la compresión de archivos reflejados en memoria mediante la operación mmap(). Se ha propuesto una nueva opción de montaje nocompress para desactivar selectivamente la compresión de archivos según la máscara.
    • En el controlador exFAT se han realizado mejoras para la compatibilidad con el almacenamiento de algunas cámaras digitales.
    • Se ha añadido la llamada al sistema quotactl_fd(), que permite gestionar las cuotas no a través de un archivo de dispositivo especial, sino mediante la especificación de un descriptor de archivo asociado al sistema de archivos al que se aplica la cuota.
    • Se han eliminado del núcleo los controladores antiguos para dispositivos de bloques con interfaz IDE, los cuales han sido reemplazados hace tiempo por la subsistema libata.
    • Se ha eliminado del núcleo el controlador 'raw', que proporcionaba acceso no en búfer a dispositivos de bloques a través de la interfaz /dev/raw. Esta funcionalidad ha sido implementada desde hace mucho tiempo en aplicaciones mediante el flag O_DIRECT.
  • Memoria y servicios del sistema
    • En el planificador de tareas se ha implementado un nuevo modo de planificación SCHED_CORE, que permite gestionar qué procesos pueden ejecutarse conjuntamente en un mismo núcleo de CPU. A cada proceso se le puede asignar un identificador de cookie que define el ámbito de confianza entre procesos (por ejemplo, pertenencia a un mismo usuario o contenedor). Al organizar la ejecución del código, el planificador puede asegurar el uso compartido de un núcleo de CPU solo para procesos relacionados con un mismo propietario, lo que puede utilizarse para bloquear ciertos ataques de la clase Spectre al evitar la ejecución en un mismo hilo SMT (Hyper Threading) de tareas de confianza y no confiables.
    • Para cgroup se ha implementado el soporte de la operación kill, que permite finalizar todos los procesos vinculados a un grupo de una vez (enviar SIGKILL), mediante la escritura de "1" en el archivo virtual cgroup.kill.
    • Se han ampliado las capacidades relacionadas con la respuesta a la detección de bloqueos divididos («split lock»), que ocurren al acceder a datos desalineados en la memoria debido a que, al ejecutar una instrucción atómica, los datos cruzan dos líneas de caché de la CPU. Tales bloqueos conducen a una disminución significativa del rendimiento, por lo que anteriormente se ofrecía la opción de terminar forzosamente la aplicación que causaba el bloqueo. En la nueva versión, se ha añadido el parámetro de línea de comandos del núcleo «split_lock_detect=ratelimit:N», que permite establecer un límite sistémico en la intensidad de operaciones de bloqueo por segundo, después de lo cual cualquier proceso que se convierta en fuente de un bloqueo dividido será detenido forzosamente durante 20 ms en lugar de ser terminado.
    • En el controlador de grupo de control de ancho de banda CFS (CFS bandwidth controller), que define cuánto tiempo de CPU se puede asignar a cada cgroup, se ha implementado la capacidad de establecer límites restringidos por un tiempo de ejecución determinado, lo que permite regular mejor las cargas sensibles a la latencia. Por ejemplo, establecer el valor cpu.cfs_quota_us en 50000 y cpu.cfs_period_us en 100000 permitirá a un grupo de procesos gastar 50 ms de tiempo de CPU cada 100 ms.
    • Se ha añadido la infraestructura inicial para crear cargadores de programas BPF, lo que permitirá en el futuro permitir la carga solo de programas BPF firmados con una clave digital de confianza.
    • Se ha añadido una nueva operación futex FUTEX_LOCK_PI2, que utiliza un temporizador monótono para calcular el tiempo de espera, teniendo en cuenta el tiempo que el sistema ha pasado en estado de suspensión.
    • Para la arquitectura RISC-V, se ha implementado soporte para páginas de memoria grandes (Transparent Huge-Pages) y la posibilidad de aplicar el mecanismo KFENCE para la detección de errores en el manejo de la memoria.
    • En la llamada al sistema madvise(), se han añadido las banderas MADV_POPULATE_READ y MADV_POPULATE_WRITE para generar "page fault" en todas las páginas de memoria reflejadas para operaciones de lectura o escritura, sin realizar la lectura o escritura real (prefault). La aplicación de estas banderas puede ser útil para reducir las latencias en la ejecución del programa, al permitir la ejecución preventiva del manejador de "page fault" de una vez para todas las páginas no asignadas, sin esperar a que se acceda a ellas realmente.
    • En el sistema de pruebas unitarias kunit se ha añadido soporte para ejecutar pruebas en el entorno QEMU.
    • Se han añadido nuevos rastreadores: "osnoise" para rastrear las latencias en aplicaciones causadas por el manejo de interrupciones, y "timerlat" para proporcionar información detallada sobre las latencias al despertar por la señal del temporizador.
  • Virtualización y seguridad
    • Se ha añadido la llamada al sistema memfd_secret(), que permite crear un área de memoria privada en un espacio de direcciones aislado, visible solo para el proceso propietario, no reflejada en otros procesos y directamente inaccesible para el núcleo.
    • En el sistema de filtrado de llamadas al sistema seccomp, al trasladar los manejadores de bloqueo al espacio de usuario se ofrece la posibilidad de utilizar una operación atómica para crear un descriptor de archivo para la tarea aislada y devolverlo al manejar la llamada al sistema. La operación propuesta resuelve el problema de la interrupción del manejador en el espacio de usuario al recibir una señal.
    • Se ha añadido un nuevo mecanismo para gestionar la limitación de recursos en el espacio de nombres de identificadores de usuario, que vincula contadores rlimit individuales al usuario en el "user namespace". Este cambio resuelve el problema de la aplicación de contadores de recursos compartidos al ejecutar procesos de un solo usuario en diferentes contenedores.
    • En el hipervisor KVM Para sistemas ARM64, se ha añadido la posibilidad de utilizar en sistemas invitados la extensión MTE (MemTag, Memory Tagging Extension), que permite vincular etiquetas a cada operación de asignación de memoria y organizar la verificación de la correcta utilización de punteros para bloquear la explotación de vulnerabilidades causadas por el acceso a bloques de memoria ya liberados, desbordamientos de búfer, accesos antes de la inicialización y el uso fuera del contexto actual.
    • Las herramientas de autenticación de punteros (Pointer Authentication) proporcionadas por la plataforma ARM64 ahora pueden configurarse por separado para el núcleo y el espacio de usuario. La tecnología permite utilizar instrucciones especializadas de ARM64 para verificar direcciones de retorno mediante firmas digitales, que se almacenan en los bits superiores no utilizados del propio puntero.
    • Se ha añadido soporte para el uso de controladores de dispositivos PCI en User-mode Linux a través de un bus PCI virtual implementado por el controlador PCI-over-virtio.
    • Se ha agregado soporte para el dispositivo paravirtualizado virtio-iommu en sistemas x86, que permite enviar solicitudes IOMMU, como ATTACH, DETACH, MAP y UNMAP, sobre el transporte virtio sin emular tablas de páginas de memoria.
    • Para las CPU Intel, desde la familia Skylake hasta Coffee Lake, el uso de las extensiones Intel TSX (Transactional Synchronization Extensions) está deshabilitado por defecto. Estas extensiones proporcionan herramientas para mejorar el rendimiento de aplicaciones multihilo mediante la exclusión dinámica de operaciones de sincronización innecesarias. Las extensiones están deshabilitadas debido a la posibilidad de ataques Zombieload, que manipulan la filtración de información a través de canales secundarios que surgen del mecanismo de interrupción asincrónica de operaciones (TAA, TSX Asynchronous Abort).
  • Subsistema de red
    • Se ha continuado la integración del núcleo MPTCP (MultiPath TCP), una extensión del protocolo TCP para establecer conexiones TCP que entregan paquetes simultáneamente a través de múltiples rutas a través de diferentes interfaces de red, vinculadas a diferentes direcciones IP. En esta nueva versión se ha añadido un mecanismo para definir políticas de hash de tráfico personalizadas para IPv4 e IPv6 (multipath hash policy), que permite desde el espacio de usuario determinar qué campos en los paquetes, incluidos los encapsulados, se utilizarán para calcular el hash que determina la selección del camino para el paquete.
    • Se ha añadido soporte para sockets SOCK_SEQPACKET (transmisión de datagramas ordenada y confiable) en el transporte virtual virtio.
    • Se han ampliado las capacidades del mecanismo de sockets SO_REUSEPORT, que permite a varios sockets escuchantes conectarse a un solo puerto para recibir conexiones, distribuyendo las solicitudes entrantes entre todos los sockets conectados a través de SO_REUSEPORT, lo que simplifica la creación de aplicaciones de servidor multihilo. En la nueva versión, se han añadido herramientas para transferir el control a otro socket en caso de fallo al procesar una solicitud con el socket elegido originalmente (resuelve el problema de la pérdida de conexiones individuales al reiniciar servicios).
  • Hardware
    • El controlador amdgpu ha implementado soporte para las nuevas series de GPU AMD Radeon RX 6000, desarrolladas bajo los nombres en clave "Beige Goby" (Navi 24) y "Yellow Carp", además de mejorar el soporte para la GPU Aldebaran (gfx90a) y el APU Van Gogh. Se ha añadido la posibilidad de trabajar simultáneamente con varios paneles eDP. Para el APU Renoir, se ha implementado soporte para trabajar con búferes cifrados en la memoria de video (TMZ, Trusted Memory Zone). Se ha añadido soporte para la extracción en caliente de tarjetas gráficas (hot-unplug). Para las GPU Radeon RX 6000 (Navi 2x) y las antiguas GPU AMD, se ha habilitado por defecto el soporte para el mecanismo de ahorro de energía ASPM (Active State Power Management), que anteriormente solo estaba activado para las GPU Navi 1x, Vega y Polaris.
    • Se ha añadido soporte para memoria virtual compartida (SVM, shared virtual memory) para los chips AMD, basada en la subsistema HMM (Heterogeneous memory management), que permite utilizar dispositivos con sus propios bloques de gestión de memoria (MMU, memory management unit), los cuales pueden acceder a la memoria principal. Entre otras cosas, a través de HMM se puede organizar un espacio de direcciones compartido entre la GPU y la CPU, donde la GPU puede acceder a la memoria principal del proceso.
    • Se ha añadido soporte inicial para la tecnología AMD Smart Shift, que cambia dinámicamente los parámetros de consumo de energía entre la CPU y la GPU en laptops con chipset y tarjeta gráfica AMD para forzar el rendimiento durante juegos, edición de video y renderizado en 3D.
    • En el controlador i915 para las tarjetas gráficas Intel se ha incluido soporte para los chips Intel Alderlake P.
    • Se ha añadido el controlador drm/hyperv para el adaptador gráfico virtual Hyper-V.
    • Se ha añadido soporte para el ordenador todo en uno Raspberry Pi 400.
    • Se ha añadido el controlador dell-wmi-privacy para el soporte de los interruptores de hardware de la cámara y el micrófono suministrados en los laptops Dell.
    • Para los laptops Lenovo se ha añadido una interfaz WMI para cambiar los parámetros del BIOS a través de sysfs /sys/class/firmware-attributes/.
    • Se ha ampliado el soporte para dispositivos con interfaz USB4.
    • Se ha añadido soporte para tarjetas de sonido y códecs AmLogic SM1 TOACODEC, Intel AlderLake-M, NXP i.MX8, NXP TFA1, TDF9897, Rockchip RK817, Qualcomm Quinary MI2 y Texas Instruments TAS2505. Se ha mejorado el sonido en laptops HP y ASUS. Se han añadido parches para reducir la latencia antes de iniciar la reproducción de sonido en dispositivos con interfaz USB.

Fuente: opennet.ru

Compra un hosting fiable para sitios web con protección contra DDoS, servidores VPS VDS 🔥 Compra un hosting fiable para sitios web con protección contra DDoS, servidores VPS VDS | ProHoster