La empresa Oracle ha publicado versiones estables de la distribución Oracle Linux 9 y del núcleo Unbreakable Enterprise Kernel 7 (UEK R7), diseñado para ser utilizado en la distribución Oracle Linux como una alternativa al paquete estándar que incluye el núcleo de Red Hat Enterprise Linux. La distribución Oracle Linux 9 se basa en el repositorio de paquetes de Red Hat Enterprise Linux 9 y es completamente compatible a nivel binario con este.
Se ofrecen imágenes ISO de instalación sin restricciones, de 8.6 GB y 840 MB, preparadas para las arquitecturas x86_64 y ARM64 (aarch64). Oracle Linux 9 ofrece acceso ilimitado y gratuito al repositorio yum con actualizaciones binarias de paquetes que corrigen errores (errata) y problemas de seguridad. También se han preparado repositorios de soporte separados con conjuntos de paquetes de Application Stream y CodeReady Builder.
Además del paquete del núcleo de RHEL (basado en el núcleo 5.14), Oracle Linux propone su propio núcleo Unbreakable Enterprise Kernel 7, basado en el núcleo Linux 5.15 y optimizado para operar con software y hardware industrial de Oracle. El código fuente del núcleo, incluyendo la división en parches separados, está disponible en el repositorio Git público de Oracle. El núcleo Unbreakable Enterprise Kernel se instala por defecto, se posiciona como una alternativa al paquete estándar que incluye el núcleo de RHEL y ofrece una serie de capacidades avanzadas, como la integración de DTrace y un mejor soporte para Btrfs. Aparte del núcleo adicional con funcionalidad, las versiones de Oracle Linux 9 y RHEL 9 son completamente idénticas (puede ver la lista de cambios en el anuncio de RHEL9).
Las novedades clave en el núcleo Unbreakable Enterprise Kernel 7 son:
- Mejorada la compatibilidad con la arquitectura Aarch64. El tamaño de las páginas de memoria en sistemas ARM de 64 bits ha sido reducido por defecto de 64 KB a 4 KB, lo que se alinea mejor con los volúmenes de memoria y tipos de carga de trabajo típicos en sistemas ARM.
- 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.
- Se han ampliado las capacidades del sistema de archivos Btrfs. Se ha añadido una implementación asincrónica de la operación DISCARD en Btrfs para marcar bloques liberados que ya no necesitan ser almacenados físicamente. La implementación asincrónica permite no esperar a que el dispositivo complete el DISCARD y ejecutar esta operación en segundo plano. Se han añadido nuevas opciones de montaje para simplificar la recuperación de datos de sistemas de archivos dañados: "rescue=ignorebadroots" para montar a pesar de los daños en algunos árboles raíz (extent, uuid, data reloc, device, csum, free space), "rescue=ignoredatacsums" para desactivar la verificación de sums de control para los datos y "rescue=all" para habilitar simultáneamente los modos ‘ignorebadroots’, ‘ignoredatacsums’ y ‘nologreplay’. Se han realizado optimizaciones sustanciales en el rendimiento relacionadas con la ejecución de operaciones fsync(). Se ha añadido soporte para fs-verity (verificación de autenticidad e integridad de archivos) y la correspondencia de identificadores de usuario.
- En XFS se ha implementado el soporte para operaciones DAX para el acceso directo al sistema de archivos eludiendo la caché de páginas, con el fin de evitar la doble caché. Se han añadido cambios que abordan los problemas de desbordamiento del tipo de dato de 32 bits time_t en el año 2038, incluyendo la propuesta de nuevas opciones de montaje bigtime e inobtcount.
- Se han realizado mejoras en el sistema de archivos OCFS2 (Oracle Cluster File System).
- Se ha añadido el sistema de archivos ZoneFS, que simplifica el trabajo de bajo nivel con dispositivos de almacenamiento zonificados. Por dispositivos zonificados se entiende aquellos que pueden ser discos magnéticos duros o SSD NVMe, cuya capacidad de almacenamiento se divide en zonas, compuestas por grupos de bloques o sectores, donde solo se permite la adición secuencial de datos con la actualización de todo el grupo de bloques. El sistema de archivos ZoneFS vincula cada zona en el dispositivo con un archivo separado, que se puede utilizar para almacenar datos en modo raw sin manipulación a nivel de sectores y bloques, es decir, permite a las aplicaciones utilizar la API de archivos en lugar de acceder directamente al dispositivo de bloques mediante ioctl.
- Se ha estabilizado el soporte para el protocolo VPN WireGuard.
- Se han ampliado las capacidades del subsistema eBPF. Se ha implementado el mecanismo CO-RE (Compile Once — Run Everywhere), que resuelve el problema de la portabilidad de los programas eBPF compilados y permite compilar el código de los programas eBPF una sola vez, utilizando un cargador universal especial que adapta el programa cargado al núcleo actual y a los tipos BTF (BPF Type Format). Se ha añadido el mecanismo "BPF trampoline", que prácticamente reduce a cero los costos de sobrecarga al transferir llamadas entre el núcleo y los programas BPF. Se ofrecen capacidades de acceso directo a las funcionalidades del núcleo desde los programas BPF y la posibilidad de suspender el controlador.
- Se ha integrado un detector de bloqueos divididos ("split lock"), que ocurre al acceder a datos desalineados en memoria porque, al ejecutar una instrucción atómica, los datos cruzan dos líneas de caché del CPU. El núcleo puede detectar sobre la marcha tales bloqueos, que conducen a una caída significativa del rendimiento, y emitir advertencias o enviar la señal SIGBUS a la aplicación que causó el bloqueo.
- Se ha asegurado el soporte para Multipath TCP (MPTCP), una extensión del protocolo TCP que permite establecer una conexión TCP con entrega de paquetes a través de múltiples rutas simultáneamente, utilizando diferentes interfaces de red vinculadas a distintas. direcciones IP.
- En el planificador de tareas se ha implementado el modo de programació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 determina el ámbito de confianza entre los procesos (por ejemplo, la pertenencia a un mismo usuario o contenedor). Al organizar la ejecución de código, el planificador puede garantizar que el uso compartido de un núcleo de CPU sea solo para procesos relacionados con un mismo propietario, lo que puede utilizarse para bloquear algunos ataques del tipo Spectre al prevenir la ejecución en un mismo hilo SMT (Hyper Threading) de tareas de confianza y no confianza.
- Para cgroups, se ha implementado un controlador de asignación de memoria slab (slab memory controller), que destaca por trasladar el seguimiento de slab del nivel de páginas de memoria al nivel de objetos del núcleo, lo que permite compartir páginas slab entre diferentes cgroups, en lugar de asignar cachés slab separadas para cada cgroup. El enfoque propuesto permite aumentar la eficiencia del uso de slab, reducir en un 30-45% el tamaño de la memoria utilizada para slab, disminuir significativamente el consumo total de memoria por parte del núcleo y reducir la fragmentación de la memoria.
- Se garantiza el suministro de datos de depuración en formato CTF (Compact Type Format), que proporciona un almacenamiento compacto de información sobre tipos de C, relaciones entre funciones y símbolos de depuración.
- Se ha interrumpido el suministro del módulo DRBD (Distributed Replicated Block Device) y del dispositivo /dev/raw (para acceso directo a archivos, se debe utilizar el flag O_DIRECT).
Fuente: opennet.ru
