Oracle 发布 Unbreakable Enterprise Kernel 8

Oracle 发布了 Unbreakable Enterprise Kernel 8 (UEK R8) 的首个稳定版本,它是 Linux 内核的一个变体,专为在 Oracle Linux 发行版中使用而开发,可作为 Red Hat Enterprise Linux 标准内核包的替代品。该内核仅适用于 x86_64 和 ARM64 (aarch64) 架构。内核源代码(包括各个补丁的分解)已发布在 Oracle 的公共 Git 存储库中。

Unbreakable Enterprise Kernel 8 基于 Linux 内核 6.12(UEK R7 基于内核 5.4,RHEL 10 beta 基于内核 6.11),增强了新功能、优化和修复,经过测试可与 RHEL 上运行的大多数应用程序兼容,并针对与 Oracle 企业软件和硬件的使用进行了优化。为 Oracle Linux 8 准备了带有 UEK R9.5 内核的安装和 src 包(在类似版本的 RHEL、CentOS、Alma Linux 和 Rocky Linux 中使用此内核没有任何障碍)。

Unbreakable Enterprise Kernel 8 的主要新功能:

  • UEK 内核组件的打包方式已更改。内核模块已从基础内核镜像中分离出来,并放置在单独的软件包中:kernel-uek-modules-core(基本最小组件)、kernel-uek-modules(用于……) 服务器)、kernel-uek-modules-desktop、kernel-uek-modules-extra-netfilter、kernel-uek-modules-usb 和 kernel-uek-modules-wireless。相关的实用程序已从核心 kernel-uek-core 软件包移至单独的 kernel-uek-tools 软件包。包含禁止加载模块列表的配置文件已从“blacklist”(黑名单)重命名为“denylist”(拒绝列表),这是使用包容性术语的举措之一。
  • 对于 Oracle Cloud 中使用的 ARM Ampere 系统,已经创建了一个单独的内核构建 kernel-uek64k,其中基本内存页面大小已从 4 KB 增加到 64 KB。
  • 增加了对英特尔SGX2(软件保护扩展)提供的EDMM(Enclave动态内存管理)机制的硬件实现的支持,该机制允许您控制对单个enclave内存页面的访问,并动态地为enclave添加/删除内存页面。
  • 支持英特尔快速辅助技术 (QAT) 设备的英特尔 QAT 驱动程序已更新,可支持第四代英特尔至强处理器。
  • 添加了一个用于检测在执行原子指令时数据跨越 CPU 缓存的两条线而导致访问内存中未对齐数据时发生的分裂锁的系统。此类锁会导致严重的性能损失(比对单个缓存行中的数据进行原子操作慢 1000 个周期)。
  • 已经实现了一种缓解 Intel 和 AMD CPU 中的 Retbleed 漏洞的新方法,该方法使用调用深度跟踪,它不会像以前的 Retbleed 缓解措施那样降低性能。
  • 在 x86 系统上,可以同时激活辅助 CPU 核心,从而减少多核系统的内核启动时间。
  • 添加了内核命令行参数“ia32_emulation”,以在启动时启用或禁用为 x32-86 架构构建的内核中的 64 位仿真支持。
  • 默认情况下,使用 EEVDF(最早合格虚拟截止时间优先)任务调度程序而不是 CFS(完全公平调度程序)。在选择下一个要转移执行的进程时,新的调度程序会考虑那些收到的 CPU 资源不足或收到的 CPU 时间不公平的进程。在第一种情况下,向流程转移控制权是强制的,而在第二种情况下,则相反,转移被推迟。旧的 CFS 调度程序使用启发式和微调来确定哪些进程需要特别关注,而新的调度程序则更明确地跟踪它们并且不需要微调。 EEVDF 将减少 CFS 难以调度的任务的延迟。
  • DTrace 2.0动态调试系统仍在继续交付,已切换为使用eBPF内核子系统。 DTrace 2.0 在 eBPF 之上运行,类似于现有 Linux 跟踪工具在 eBPF 之上的工作方式。
  • KVM 虚拟机管理程序最多允许 4096 个虚拟 CPU (VCPU)。
  • 继续使用 KTLS,这是 TLS 协议的内核级实现。
  • 负责 /dev/random 设备的 RDRAND 伪随机数生成器的实现已更新,使用 BLAKE2s 哈希函数而不是 SHA1 进行熵混合操作。这一改变提高了伪随机数生成器的安全性。为了加快通过 getrandom() 系统调用生成随机数的速度,使用了 vDSO(虚拟动态共享对象)机制,该机制将系统调用处理程序从内核移动到用户空间,以避免上下文切换。
  • 增加了对 BIG TCP 扩展的支持,允许将最大 TCP 数据包大小增加到 4GB,以优化高速内部数据中心网络的运行。这种具有 16 位报头字段大小的数据包大小的增加是通过实施“巨型”数据包来实现的,其 IP 报头中的大小设置为 0,而实际大小在单独附加报头中的单独 32 位字段中传输。
  • 对于网络套接字,实现了 SO_RESERVE_MEM 选项,通过该选项可以为套接字保留一定量的内存,这些内存将始终可供该套接字使用,并且不会被拿走。使用此选项可以通过减少网络堆栈中的内存分配和返回操作的数量来提高性能,尤其是在系统出现内存不足的情况时。
  • fq(公平队列)数据包调度程序的性能得到了优化,在 tcp_rr(TCP 请求/响应)测试中,高负载下吞吐量提高了 5%,在 UDP 数据包无限制流量下吞吐量提高了 13%。
  • 内核网络结构已经重新组织,以提高处理器数据缓存的效率,从而提高了服务大量并行请求的系统上 TCP 堆栈的性能。
  • 增加了对 Oracle DBMS 中自动存储管理的 ASMLib 3 库的支持。
  • 已经开展了优化异步输入/输出机制 io_uring 的性能和提高其安全性的工作。为 XFS 和 Ext4 FS 添加了基于 io_uring 的优化,支持在多个线程中并行直接写入文件。
  • 改进了对 Btrfs 文件系统的支持。对于支持 trim/discard 的设备,默认启用“discard=async”挂载选项,允许以异步模式同时对所有 FS 执行这些操作。增加了对无需转换即可发送和接收压缩数据的支持。增加了对大于 64 KB 的块的写入支持。配额核算已得到简化。实现了对安装克隆设备的支持。改进了 NOCOW 模式下的写入检查(吞吐量提高了 9%)。添加了挂载选项“ignoremetacsums”和“ignoresuperflags”以忽略无效的元数据校验和和超级块标志。删除设备、平衡和重新分配块的任务以并行模式执行。
  • XFS 允许使用大于内存页面大小的块大小。为非常大的虚拟磁盘添加了大范围计数器。为文件内容添加了原子提交模式。提出了一种在线模式下检查(fsck)和恢复FS的实验实现方法。
  • NFS 默认启用 NFS 4.2 规范中定义的 READ_PLUS 操作,该操作用于更有效地从包含空白的文件中读取数据。
  • 内存管理系统已切换为使用folios数据结构(内存页folios)。作品集与复合页类似,但语义得到改善,工作组织更加清晰。
  • 内存映射操作采用枫树数据结构,该结构被认为是比红黑树结构更高效的替代方案。枫树是 B 树的一种变体,支持范围索引,并且专为高效利用缓存而设计。 现代处理器.
  • mmap 在单个 VMA(虚拟内存区域)级别实现锁,从而可以提高多线程应用程序的性能。
  • 添加了 ptdesc 数据结构,通过分离内存页的元数据和数据结构来优化内存页表的工作。

来源: opennet.ru

添加评论