La empresa Oracle ha presentado la primera versión estable del Unbreakable Enterprise Kernel 8 (UEK R8), una variante del núcleo Linux que se desarrolla para su uso en la distribución Oracle Linux como alternativa al paquete estándar con núcleo de Red Hat Enterprise Linux. El núcleo está disponible solo para las arquitecturas x86_64 y ARM64 (aarch64). El código fuente del núcleo, incluida la división en parches separados, se ha publicado en el repositorio público de Git de Oracle.
El paquete Unbreakable Enterprise Kernel 8 se basa en el núcleo Linux 6.12 (la versión UEK R7 se basaba en el núcleo 5.4 y en la versión beta de RHEL 10 se ofrecía el núcleo 6.11), que se complementa con nuevas funcionalidades, optimizaciones y correcciones, y se ha verificado su compatibilidad con la mayoría de las aplicaciones que funcionan en RHEL, además de estar optimizado para trabajar con el software y hardware industrial de Oracle. Los paquetes de instalación y src del núcleo UEK R8 se han preparado para Oracle Linux 9.5 (no hay obstáculos para usar este núcleo en versiones equivalentes de RHEL, CentOS, Alma Linux y Rocky Linux).
Novedades clave del Unbreakable Enterprise Kernel 8:
- Se ha cambiado la división de los componentes del núcleo UEK en paquetes separados. Los módulos del núcleo se han separado de la imagen base del núcleo y se han trasladado a colecciones que se entregan en paquetes individuales: kernel-uek-modules-core (mínimo esencial), kernel-uek-modules (para servidores), kernel-uek-modules-desktop, kernel-uek-modules-extra-netfilter, kernel-uek-modules-usb y kernel-uek-modules-wireless. Las utilidades complementarias se han separado del paquete base kernel-uek-core en un paquete independiente kernel-uek-tools. Los archivos de configuración con la lista de módulos prohibidos para cargar se han renombrado de 'blacklist' a 'denylist' en un esfuerzo por utilizar una terminología inclusiva.
- Para los sistemas ARM Ampere, utilizados en Oracle Cloud, se ha creado una compilación separada del núcleo kernel-uek64k, cuyo tamaño base de las páginas de memoria se ha incrementado de 4 a 64 KB.
- Se ha añadido soporte para la implementación de hardware de Intel SGX2 (Software Guard Extensions) del mecanismo EDMM (Enclave Dynamic Memory Management), que permite gestionar el acceso a páginas de memoria de enclave individuales y agregar/eliminar dinámicamente páginas de memoria para el enclave.
- En el controlador Intel QAT, con soporte para dispositivos Intel Quick Assist Technology (QAT), se ha añadido soporte para la cuarta generación de procesadores Intel Xeon.
- Se ha añadido un sistema para detectar bloqueos de separación («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. Dichos bloqueos conducen a una caída significativa en el rendimiento (1000 ciclos más lentos que una operación atómica con datos que caen en una sola línea de caché).
- Se ha implementado un nuevo método de protección contra la vulnerabilidad Retbleed en CPUs Intel y AMD, utilizando el seguimiento de la profundidad de llamada, lo que no ralentiza tanto el funcionamiento como la protección anterior contra Retbleed.
- En sistemas x86 se ha habilitado la activación simultánea de núcleos secundarios de la CPU, lo que ha permitido reducir el tiempo de arranque del núcleo en sistemas con un gran número de núcleos.
- Se ha añadido un parámetro en la línea de comandos del núcleo «ia32_emulation», que permite activar y desactivar el soporte para la emulación del modo de 32 bits durante la fase de arranque en núcleos construidos para la arquitectura x86-64.
- Por defecto, se ha sustituido el planificador CFS (Completely Fair Scheduler) por el planificador EEVDF (Earliest Eligible Virtual Deadline First). A la hora de seleccionar el siguiente proceso para cederle la ejecución, el nuevo planificador considera los procesos que no han recibido suficientes recursos de CPU o que han recibido injustificadamente demasiado tiempo de CPU. En el primer caso, se forza el traspaso de control al proceso, y en el segundo, se pospone. El antiguo planificador CFS utilizaba heurísticas y ajustes finos para determinar los procesos que requerían atención, mientras que el nuevo planificador los rastrea de manera más explícita y no requiere ajustes finos. EEVDF permitirá reducir las latencias en la ejecución de tareas que el CFS tenía problemas para programar.
- Se ha continuado con la entrega del sistema de depuración dinámica DTrace 2.0, que ha sido migrado para usar la subsistema del núcleo eBPF. DTrace 2.0 funciona sobre eBPF, de manera similar a como lo hacen las herramientas de trazado existentes en Linux.
- En el hipervisor KVM se permite utilizar hasta 4096 CPUs virtuales (VCPU).
- Se ha continuado utilizando KTLS, la implementación del protocolo TLS a nivel del núcleo.
- Se ha actualizado la implementación del generador de números aleatorios RDRAND, responsable del funcionamiento del dispositivo /dev/random, que ha sido adaptado para utilizar la función hash BLAKE2s en lugar de SHA1 para las operaciones de mezcla de entropía. Este cambio ha mejorado la seguridad del generador de números aleatorios. Para acelerar la obtención de números aleatorios a través de la llamada al sistema getrandom(), se ha utilizado el mecanismo vDSO (virtual dynamic shared object), que traslada el manejador de la llamada al sistema del núcleo al espacio del usuario para evitar cambios de contexto.
- Se ha añadido soporte para la extensión BIG TCP, que permite aumentar el tamaño máximo del paquete TCP a 4GB para optimizar el funcionamiento de redes internas de alta velocidad en centros de datos. Este aumento en el tamaño del paquete, con un tamaño de campo de encabezado de 16 bits, se logra mediante la implementación de paquetes 'jumbo', cuyo tamaño en el encabezado IP se establece en 0 y el tamaño real se proporciona en un campo separado de 32 bits en un encabezado adjunto.
- Para los sockets de red se ha implementado la opción SO_RESERVE_MEM, que permite reservar una cantidad específica de memoria para el socket, que siempre permanecerá disponible y no será retirada. El uso de esta opción permite mejorar el rendimiento al reducir en la pila de red las operaciones de asignación y liberación de memoria, especialmente ante condiciones de escasez de memoria en el sistema.
- Se ha optimizado el rendimiento del planificador de paquetes fq (Fair Queuing), lo que ha permitido aumentar la capacidad de procesamiento en un 5% en pruebas con altas cargas en tcp_rr (TCP Request/Response) y en un 13% en flujos UDP sin restricciones.
- Se ha reestructurado las estructuras de red del núcleo para mejorar la eficiencia del almacenamiento en caché de datos por parte del procesador, lo que ha incrementado el rendimiento del stack TCP en sistemas que manejan un gran número de solicitudes concurrentes.
- Se ha añadido soporte para la biblioteca ASMLib 3 para la gestión automática del almacenamiento en la base de datos Oracle.
- Se han realizado trabajos para optimizar el rendimiento y aumentar la seguridad del mecanismo de entrada/salida asíncrono io_uring. Se han añadido optimizaciones basadas en io_uring para los sistemas de archivos XFS y Ext4, que permiten la escritura directa paralela en archivos desde múltiples hilos.
- Se ha mejorado el soporte para el sistema de archivos Btrfs. Para los dispositivos que soportan trim/discard, se ha activado de forma predeterminada la opción de montaje "discard=async", lo que permite ejecutar estas operaciones de forma inmediata para todos los sistemas de archivos de manera asíncrona. Se ha añadido soporte para el envío y recepción de datos comprimidos sin transformación. Se ha añadido soporte para la escritura en bloques mayores de 64 KB. Se ha simplificado la gestión de cuotas. Se ha implementado el soporte para el montaje de dispositivos clonados. Se han mejorado las comprobaciones de escritura en modo NOCOW (la capacidad de procesamiento ha aumentado en un 9%). Se han añadido las opciones de montaje "ignoremetacsums" e "ignoresuperflags" para ignorar sumas de comprobación incorrectas de metadatos y banderas de superbloque. Se garantiza la ejecución de tareas para eliminar dispositivos, equilibrar y redistribuir bloques en modo paralelo.
- En el sistema de archivos XFS se ha permitido el uso de un tamaño de bloque mayor que el tamaño de la página de memoria. Se han añadido grandes contadores de extensiones para discos virtuales muy grandes. Se ha añadido un modo de confirmación atómica (commit) para el contenido de archivos. Se ha propuesto una implementación experimental de comprobación (fsck) y recuperación del sistema de archivos en modo online.
- En NFS se ha activado de forma predeterminada el uso de la operación READ_PLUS, definida en la especificación NFS 4.2 y utilizada para la lectura más eficiente de datos de archivos que contienen espacios vacíos.
- El sistema de gestión de memoria ha sido trasladado al uso de la estructura de datos folios (folios de páginas de memoria). Los folios son similares a las páginas de memoria combinadas (compound pages), pero se diferencian por una semántica mejorada y una organización más clara de la operación.
- Para las operaciones de mapeo de memoria se ha utilizado la estructura de datos "maple tree", que se presenta como un reemplazo más eficiente de la estructura "red-black tree". El maple tree es una variante del B-tree, que soporta la indexación por rangos de valores y está diseñado para un uso eficiente de la caché. de procesadores modernos.
- En mmap se han implementado bloqueos a nivel de VMA (Área de Memoria Virtual), lo que permite aumentar el rendimiento de aplicaciones multihilo.
- Se ha añadido la estructura de datos ptdesc, que optimiza el trabajo con tablas de páginas de memoria mediante la separación de las estructuras de metadatos y datos para las páginas de memoria.
Fuente: opennet.ru
