内核版本 Linux 7.2

经过两个月的开发,Linus Torvalds 发布了内核。 Linux 7.2. 其中最显著的变化包括:USB4STREAM 数据流机制、btrfs、xfs 和 ext4 性能优化、继续移除 i486 CPU 支持代码、创建嵌套 SCHED_EXT 调度器的功能、减少交换子系统中的内存消耗、加速未命名管道、KVM 中对 Intel MBEC 和 AMD GMET 扩展的支持、移除 AppleTalk 协议、AMDGPU 驱动程序中对 HDMI 2.1 FRL 的初步支持。

内核 7.2(1、2、3)的主要新功能:

  • 磁盘子系统、I/O 和文件系统
    • 在 iomap 机制中,iomap_iter() 函数中对已完成迭代的 memset 函数的额外调用已被移除,这在高速 NVMe 驱动器上进行高 I/O 强度测试时,在使用 ext4 和 xfs 文件系统进行的测试中,每秒输入/输出操作数 (IOPS) 增加了 5%。
    • XFS 已被宣布稳定,可支持分区存储设备(将块或扇区分组为区域,只允许按顺序向其中添加数据,并更新整个块组)。
    • Btrfs 现在默认支持大文件(folio),从而降低开销并提升密集型顺序 I/O 操作的性能。此外,还新增了对超大文件(最大 2 MB)的实验性支持。新增了一个 ioctl 函数 GET_CSUMS,用于在用户空间检索校验和信息,例如供 mkfs 工具和重复数据删除优化使用。顺序写入性能提升了 15%,直接 I/O 性能提升了 59%。
    • Ext4 文件系统的“快速提交”机制经过重大重新设计,以消除争用和死锁。新增了通过 /proc/fs/ext4/*/fc_info 导出 inode 快照统计信息的功能。目录哈希计算性能得到了优化(255 个字符的目录名速度几乎翻倍,64 个字符的目录名速度提升 27%,32 个字符的目录名速度提升 11%)。
    • F2FS 现在支持 fserror 错误返回,允许用户空间监控文件系统问题。中断处理所花费的时间也减少了。
    • 设备映射器 (DM) 中新增了 dm-inlinecrypt 处理程序,用于使用具有内联加密功能的硬件设备对块设备进行透明加密和解密。
    • 已提供有关向内核添加新文件系统的文档。
    • 在 NFS 中,默认块大小已增加到 4 MB(适用于至少配备 16 GB 内存的系统)(您可以使用 `/proc/fs/nfsd/max_block_size` 手动更改块大小)。此外,还添加了目录委派支持,允许在一段时间内对给定目录执行操作,而无需检查目录状态是否发生变化。 服务器.
    • SMB 服务器现在支持以压缩形式存储的文件,以及在网络传输过程中进行数据压缩。
    • 新的 NTFS 实现(ntfsplus)增加了对符号链接的支持。 Windows 并保证正确处理多种类型的元数据损坏。
    • 用于缓存 EROFS(增强型只读文件系统)数据的 fscache 后端已于两年前弃用,现已移除。
    • Ceph FS 现在支持手动重置客户端会话。
    • 9P 文件系统经过优化,提高了项目构建等场景下的性能。
    • 用于获取文件系统大小写敏感性信息的标志已添加到 file_getattr() 系统调用中。FS_XFLAG_CASEFOLD 标志表示文件名检查不区分大小写,而 FS_XFLAG_CASENONPRESERVING 标志表示创建新文件名时不保留大小写信息。这些标志可用于不区分大小写的 NFS 客户端。
    • openat2() 系统调用新增了 O_EMPTYPATH 标志,允许传递空文件路径。在这种情况下,要打开的文件的路径将根据传递的文件描述符确定。
    • openat2() 系统调用中已添加了 OPENAT2_REGULAR 标志,该标志仅允许打开常规文件(如果尝试打开套接字、管道或设备等特殊文件,则会返回 EFTYPE 错误)。
  • 内存和系统服务
    • USB4STREAM 机制用于在通过 USB4 端口连接的计算机之间传输数据。新增的 /dev/tbstreamX 设备允许您使用标准的 read() 和 write() 函数来读写数据,类似于读写文件。例如,在一台主机上,您可以使用命令“echo hello > /dev/tbstream0”发送信息,而在另一台主机上,您可以使用命令“cat /dev/tbstream0”读取信息。USB4STREAM 机制可以与通过 USB4 线缆(thunderbolt_net)建立网络连接的功能结合使用,也可以单独用于在不支持网络套接字的应用程序之间传输数据。
    • 第二轮移除对 i486 处理器支持的更改已完成。超过 13 行与不带浮点运算单元 (FPU) 的处理器相关的浮点运算单元模拟代码已被移除。由于这些硬件操作的模拟代码已被移除,因此对不带 CX8(比较并交换 8 字节)和 TSC(任务调度程序中使用的 CPU 周期计数器)硬件操作的 i486 处理器的支持也已被移除。
    • 已宣布对 OLPC XO-1 计算机中使用的 AMD Geode 处理器的支持已停止。
    • 新增了对英特尔 TDX(可信域扩展)实现更新的支持,TDX 是一种用于加密客户机系统 RAM 的机制。TDX 以特殊软件运行时模块的形式实现,在启动过程中由 BIOS 从闪存传输到 RAM。内核现在具备管理此模块的功能,可以在运行中的系统上将其替换为更新版本,而无需重启。
    • 我们实现了一个新的 GPU 资源分配调度器(公平 GPU 调度器)。它用于确定 GPU 使用进程提交的工作在 GPU 上的执行顺序。与传统的 FIDO 队列处理 GPU 请求不同,新的调度器采用基于完全公平调度器 (CFS) 任务调度器的公平资源分配机制,该机制使用带有下一进程转换时间的启动计划。新调度器最显著的效果体现在并行执行大量使用 GPU 的交互式任务时。在内核 7.2 发布前的最后一刻,由于需要调试回归问题(该问题会导致在 Proton 中运行某些游戏时性能下降和 GPU 利用率达到 100%),公平 GPU 调度器被禁用,旧的 FIFO 调度器被恢复。
    • eBPF 子系统变更:新增了将单个 BPF 程序附加到多个跟踪点的功能。附加到跟踪点的 BPF 程序现在可以访问用户空间组件的内存,并能正确处理未分配的内存页(缺页)。bpf() 系统调用现在支持标准属性(log_buf、log_size、log_level 和 log_true_size),从而允许在所有 BPF 命令之间统一传输元数据,而不仅限于 BPF_PROG_LOAD、BPF_BTF_LOAD 和 BPF_MAP_CREATE。已取消向 BPF 函数传递参数数量不得超过 5 个的限制。新增了安全访问 bpf_arena 共享内存的功能,无需担心访问未分配的内存页(缺页)。已实现新版本的 BPF 哈希映射结构,支持动态调整大小。
    • 已优化“/proc/interrupts”输出(包含中断统计信息)的生成,并更新了用于存储中断计数器的结构,同时添加了缓存功能。
    • libselinux 中使用的“/proc/filesystems”文件的生成速度已加快。
    • 任务调度器现在支持跨 CPU 核心的负载均衡,并会考虑处理器内部缓存的状态。调度器现在会尝试将使用共享资源(例如单个进程内的线程)的进程分组,以便共享同一个高级缓存,从而提高在缓存中找到所需数据的概率,进而提升数据访问效率。
    • SCHED_EXT 机制允许使用 BPF 创建 CPU 调度器,并且继续实现了创建嵌套调度器(子调度器)的功能,从而允许每个 cgroup 使用自己的任务调度器。
    • 继续从 Rust-for- 分支迁移更改Linux与使用 Rust 作为第二语言开发驱动程序和内核模块相关(Rust 支持默认情况下未启用,并且 Rust 不作为强制性内核构建依赖项)。内核中的 Rust 支持已针对 s390 架构实现。“zerocopy” 包已包含在内,该包为“不安全”模式下的代码提供快速内存原语。
    • 构建内核所需的 LLVM 工具集的最低版本已提高到 17.0.1。
    • 内核源代码附带的极简 C 库 nolibc Linux 并为基本系统调用提供框架,支持 OpenRISC 和 32 位 PA-RISC 架构。
    • 交换子系统经过优化,通过消除存储静态元数据时的开销以及在使用 tome 时统一匿名内存和共享内存,提高了性能并降低了子系统自身的内存消耗。内存减少效果显著;例如,挂载 1 TB 的交换分区可减少约 512 MB 的内存消耗。
    • 内存驱逐机制的性能得到了提升,该机制会在系统压力过大时删除内存或将其移动到交换空间以释放内存。在某些工作负载下,例如使用 YCSB(雅虎云服务基准测试)测试 MongoDB 时,性能提升高达 30%。
    • “make sbom”命令已添加到构建系统中,用于生成反映当前内核构建中使用的组件、库和依赖项的SBOM(软件物料清单)列表,以及从代码文件中的SPDX头文件中获取的许可证信息。
    • 未命名管道的实现已针对锁的处理进行了优化(内存分配操作移至锁的范围之外),这使得未命名管道的吞吐量提高了 21-48%,延迟降低了 17-33%。
  • 虚拟化和安全
    • slab 分配器现在支持使用分配令牌,该功能已在 Clang 22 编译器中实现。分配令牌允许为内存分配操作提供唯一标识符,并允许对不同类型的对象进行单独分配,从而增加缓冲区溢出漏洞被利用的难度(通过单独分配,一种类型对象的缓冲区溢出不容易被利用来破坏其他类型的对象)。
    • AF_ALG 机制曾被用于 Copy Fail 漏洞以修改页面缓存中的数据,该机制已被弃用,并将在未来的版本中移除。AF_ALG 为内核 Crypto API 中的加密计算启用硬件加速器,但其使用场景较为特殊。在内核 7.2 中,AF_ALG 已移除对异步 I/O、旧版驱动程序以及 skcipher 和 aead 实现中的零拷贝机制的支持。目前仅保留了加密算法的软件实现,并且移除了对内核 Crypto API 中硬件加密加速器的支持,因为 AF_ALG 会显著扩大攻击面,但与用户空间加密实现相比,性能并无提升。AF_ALG 曾用于 Cryptsetup 工具包,但其支持已在最近的 2.8.7 版本中移除。
    • IMA(完整性测量架构)机制允许外部服务验证内核子系统的状态以确保其真实性,现在已补充支持将包含测量结果的内部表导出到用户空间,并从内核缓冲区中删除这些表以节省内存。
    • Landlock 模块为非特权程序提供了限制内核对象使用的方法。 Linux (文件层次结构、网络套接字、ioctl 等),增加了对 UDP 套接字访问控制的支持,以及选择性地禁用将对象锁定信息输出到日志的功能,以防止日志中充斥无关信息。
    • 内核已弃用 `strncpy()` 函数,该函数用于从输入字符串复制指定数量的字节。使用 `strncpy()` 会带来错误风险,例如字符串末尾缺少空字符或使用零填充。建议使用 `strscpy()` 和 `strscpy_pad()` 函数来复制以空字符结尾的字符串,以及使用 `strtomem_pad()`、`memcpy_and_pad()` 和 `memcpy()` 函数来复制已知固定长度的字符串。内核弃用 `strncpy()` 的工作始于 2020 年,共涉及 70 位开发者的 362 次提交。
    • 在虚拟机管理程序中 KVM 新增对 Intel MBEC(基于模式的执行控制)和 AMD GMET(客户机模式执行陷阱)扩展的支持,这两项扩展允许在内存转换表中分别处理客户机系统中内核空间和用户空间的执行权限。此前,Intel 和 AMD 的硬件虚拟化扩展仅允许使用单个比特将内存页标记为可执行,内核空间和用户空间权限的分离则在虚拟机管理程序级别通过软件实现。使用 MBEC 和 GMET 可以消除虚拟机管理程序端的权限检查,并显著减少从客户机系统到 VMexit 虚拟机管理程序的资源密集型控制传输。
  • 网络子系统
    • TCP-AO(TCP 认证选项,RFC 5925)扩展已迁移到新的 libcrypto 加密库,从而简化了代码并提高了性能。TCP-AO 能够使用 MAC(消息认证码)代码验证 TCP 报头,采用更现代的 HMAC-SHA-1-96 和 AES-128-CMAC-96 算法,取代了之前依赖于过时 MD5 算法的 TCP-MD5 选项。
    • 多路径 TCP (MPTCP) 连接支持的子流数量已从 8 个增加到 64 个。
    • 继续努力减少内核网络协议栈中 rtnl_lock 全局锁的使用。
    • 内核已移除 AppleTalk 协议栈的实现,该协议栈自 1985 年以来一直用于苹果电脑,并在 20 世纪 90 年代被其他协议栈取代。 TCP/IP此外,与 PPPoATM 无关的 ATM 数据传输技术组件、基于 ISA 和 PCMCIA 总线的 ARCnet 网络接口、带 PCMCIA 接口的蓝牙适配器、Chelsea TLS 加速器、用于将 TLS 与 sockmap 集成的代码以及对 cfg80211/mac80211 无线协议栈中 5/10 MHz 频段的支持均已被移除。由于存在未解决的阻塞性问题且缺乏维护人员,基于 TCP 卸载引擎的特定 TLS 处理加速实现已被移除(保留了更常见的 TLS 卸载实现)。与 64 位系统上的 32 位 x_tables 兼容的代码已被禁用,并计划移除。
    • PPPoE驱动程序现在支持GRO(通用接收卸载)和GSO(通用分段卸载)机制,用于硬件加速数据包重组和分段。使用GRO和GSO可显著提高入站流量吞吐量。例如,在配置了地址转换器的MediaTek MT7621设备上,最大吞吐量从130 Mbit/s提高到630 Mbit/s。
  • Оборудование
    • AMDGPU驱动程序现已初步支持HDMI 2.1 FRL(固定速率链路)技术,能够以4K/120Hz和8K/60Hz的分辨率传输未压缩视频。由于HDMI论坛的许可要求,开源驱动程序此前一直难以实现对HDMI 2.1的支持,但AMD现在已获得了类似的实现方案。
    • i915驱动程序现在支持设置显示控制器的背景颜色。pin_params.needs_low_address参数已实现。
    • 基于英特尔 Xe 架构的 GPU 的 Xe DRM(直接渲染管理器)驱动程序开发工作仍在继续,该架构应用于英特尔 Arc 系列显卡和集成显卡,最早可追溯到 Tiger Lake 处理器。目前已初步支持 CRI(Crescent Island)平台。此外,还为 Xe3p dGPU 平台实现了系统控制器。
    • Nouveau 驱动程序解决了 NVIDIA GA100 GPU 的问题。
    • v3d 驱动程序已更新,增加了管理 Raspberry Pi 板上 v3D GPU 功耗的功能。
    • 我们持续为配备 GSP 固件的 NVIDIA GPU 集成 Nova 驱动程序组件,这些 GPU 自基于 Turing 微架构的 NVIDIA GeForce RTX 2000 系列以来便开始使用 GSP 固件。该驱动程序使用 Rust 编写。目前已新增对 NVIDIA GA100、Hopper 和 Blackwell 系列 GPU 的支持。
    • 新增对以下 ARM 板、SoC 和设备的支持:Apple t8122 (M3)、Motorola Edge 30、Nothing Phone 3a、Google Pixel 3a XL、Qualcomm Dragonwing IPQ9650、Huawei Hawi、ZTE zx297520v3、Renesas R-Car M3Le、ASPEED AST27xx、Cortina Gemini、NXP i.MX6/8/9、NXP LX2160A、TI K3 AM62x。

与此同时,拉丁美洲自由软件基金会创建了一个完全自由的内核 7.2 版本—— Linux-libre 7.2-gnu 版本已清理固件和驱动程序中包含的非自由组件或制造商限制范围的代码段。7.2 版本包含针对新的 rt722-sdca 和 tac5xx2 驱动程序的 blob 清理。amdgpu、nova core、qcom iris、q6v5、iwlwifi、amdxnda、adreno、r8152 和 mt792x 驱动程序的清理代码已更新。固件加载接口已调整。ARM 芯片的设备树 (dts) 文件中的 blob 名称已清理。

来源: opennet.ru

为具有 DDoS 保护、VPS VDS 服务器的站点购买可靠的主机 🔥 购买具备 DDoS 防护的可靠网站托管服务,包括 VPS 和 VDS 服务器 | ProHoster