Linux 6.0 内核版本

经过两个月的开发,Linus Torvalds 发布了 Linux 6.0 内核。 版本号的重大改变是出于美观的原因,也是为了缓解系列中积累大量问题带来的不适而采取的正式步骤(Linus 开玩笑说改变分支号的原因更有可能是他手指不够了)和脚趾来计算版本号)。 最显着的变化包括:XFS 中对异步缓冲写入的支持、ublk 块驱动程序、任务调度程序的优化、验证内核正确操作的机制、对 ARIA 块密码的支持。

内核6.0的主要创新:

  • 磁盘子系统、I/O 和文件系统
    • XFS 文件系统使用 io_uring 机制添加了对异步缓冲写入的支持。 使用fio工具进行的性能测试(1线程,4kB块大小,600秒,顺序写入)显示每秒输入/输出操作(IOPS)从77k增加到209k,数据传输速度从314MB/s增加到854MB/s,延迟从 9600ns 下降到 120ns(80 倍)。
    • Btrfs 文件系统为“发送”命令实现了协议的第二个版本,该命令实现了对附加元数据的支持、以更大的块(超过 64K)发送数据并以压缩形式传输盘区。 由于同时读取多达 3 个扇区,直接读取操作的性能显着提高(高达 256 倍)。 通过减少延迟元素的保留元数据,减少锁定争用并加快元数据检查。
    • 新的 ioctl 操作 EXT4_IOC_GETFSUUID 和 EXT4_IC_SETFSUUID 已添加到 ext4 文件系统中,以检索或设置存储在超级块中的 UUID。
    • F2FS 文件系统提供低内存消耗模式,可优化 RAM 量较小的设备上的操作,并允许您以降低性能为代价来减少内存消耗。
    • 添加了对 NVMe 驱动器身份验证的支持。
    • NFSv4 服务器对活动客户端的数量进行限制,系统中每 GB RAM 设置为 1024 个有效客户端。
    • CIFS客户端实现提高了多通道传输模式下的性能。
    • fanotify FS 中的事件跟踪子系统已添加新标志 FAN_MARK_IGNORE 以忽略特定事件。
    • 在 Overlayfs FS 中,当通过用户 ID 映射安装在 FS 之上时,可以提供对 POSIX 兼容访问控制列表的正确支持。
    • 添加了 ublk 块驱动程序,它将特定逻辑移动到用户空间中后台进程的一侧并使用 io_uring 子系统。
  • 内存和系统服务
    • DAMON(数据访问监控)子系统添加了新功能,不仅可以监控用户空间对 RAM 的进程访问,还可以影响内存管理。 特别是,提出了一个新模块“LRU_SORT”,它提供了 LRU(最近最少使用)列表的重新分组,以提高某些内存页面的优先级。
    • 创建新内存区域的能力已通过 CXL(计算快速链接)总线的功能实现,该总线用于组织 CPU 和内存设备之间的高速交互。 CXL 允许您连接外部存储设备提供的新存储区域,并将其用作额外的物理地址空间资源,以扩展系统的随机存取存储器 (DDR) 或永久存储器 (PMEM)。
    • 解决了 AMD Zen 处理器的性能问题,该问题是由 20 年前为解决某些芯片组中的硬件问题而添加的代码引起的(添加了额外的 WAIT 指令以减慢处理器速度,以便芯片组有时间进入空闲状态)。 这一更改导致频繁在空闲和繁忙状态之间交替的工作负载下性能下降。 例如,禁用该解决方法后,平均 tbench 测试分数从 32191 MB/s 增加到 33805 MB/s。
    • 具有启发式的代码已从任务调度程序中删除,确保将进程迁移到负载最少的 CPU,同时考虑到能源消耗的预测增益。 开发人员得出的结论是,启发式方法不够有用,只要这种迁移可能会导致较低的功耗(例如,当目标 CPU 处于较低功耗层时),则更容易删除它并迁移进程,而无需进行额外的评估。 禁用启发式会导致执行密集型任务时功耗降低,例如在视频解码测试中,功耗降低了 5.6%。
    • 大型系统上 CPU 核心之间的任务分配已得到优化,从而提高了某些类型工作负载的性能。
    • io_uring 异步 I/O 接口提供了一个新标志 IORING_RECV_MULTISHOT,它允许您将多重模式与 recv() 系统调用一起使用,以同时从同一网络套接字执行多个读取操作。 io_uring 还支持无中间缓冲的网络传输(零复制)。
    • 实现了将连接到 uprobe 的 BPF 程序置于睡眠状态的功能。 BPF 还添加了一个新的迭代器 ksym 用于处理内核符号表。
    • sysfs 中用于访问 UEFI 引导变量的过时“efivars”接口已被删除(efivarfs 虚拟 FS 现在普遍用于访问 EFI 数据)。
    • perf 实用程序提供了新的报告,用于分析锁冲突以及处理器执行内核组件所花费的时间。
    • CONFIG_CC_OPTIMIZE_FOR_PERFORMANCE_O3 设置已被删除,这允许内核在“-O3”优化模式下构建。 值得注意的是,可以通过在汇编期间传递标志来进行优化模式的实验(“make KCFLAGS=-O3”),并且向 Kconfig 添加设置需要可重复的性能分析,表明“-O3”模式中使用的循环展开给出了与“-O2”优化级别相比的优势。
    • 添加了 debugfs 接口,用于获取有关各个“内存收缩器”(内存不足时调用的处理程序,并打包内核数据结构以减少内存消耗)的操作信息。
    • 对于OpenRISC和LoongArch架构,实现了对PCI总线的支持。
    • 对于 RISC-V 架构,已实现“Zicbom”扩展来管理具有非缓存一致性的 DMA 的设备。
  • 虚拟化和安全
    • 添加了 RV(运行时验证)验证机制,以验证高可靠系统上的正确操作,保证不会出现故障。 验证是在运行时通过将处理程序附加到跟踪点来执行的,这些跟踪点根据定义系统预期行为的机器的预定参考确定性模型检查实际执行进度。 在运行时使用模型进行验证被定位为一种更轻量级且易于实现的方法,用于确认关键系统上执行的正确性,补充了经典的可靠性验证方法。 RV 的优点之一是能够提供严格的验证,而无需使用建模语言单独实现整个系统,以及对不可预见事件的灵活响应。
    • 用于管理基于 Intel SGX2(Software Guard eXtensions)技术的 enclave 的集成内核组件,该技术允许应用程序在隔离的加密内存区域中执行代码,而系统的其余部分对此的访问受到限制。 Intel SGX2 技术在 Intel Ice Lake 和 Gemini Lake 芯片中受支持,与 Intel SGX1 的不同之处在于用于 enclave 动态内存管理的附加指令。
    • 对于 x86 架构,已经实现了通过引导加载程序设置传输伪随机数生成器种子的功能。
    • SafeSetID LSM 模块现在能够管理通过 setgroups() 调用所做的更改。 SafeSetID 允许系统服务安全地管理用户,而无需升级权限 (CAP_SETUID) 且无需获得 root 权限。
    • 添加了对 ARIA 分组密码的支持。
    • 基于 BPF 的安全管理模块提供了将处理程序附加到各个进程和进程组 (cgroup) 的能力。
    • 添加了一种带有看门狗实现的机制,可以根据监视 vCPU 活动来检测来宾系统的挂起。
  • 网络子系统
    • 用于生成和检查 SYN cookie 的处理程序已添加到 BPF 子系统中。 还添加了一组用于访问和更改连接状态的函数 (kfunc)。
    • 无线堆栈增加了对 WiFi 7 规范中定义的 MLO(多链路操作)机制的支持,允许设备使用不同的频段和通道同时接收和发送数据,例如,在设备之间同时建立多个通信通道。客户端设备的接入点。
    • 内核内置的 TLS 协议的性能得到了改进。
    • 添加了内核命令行选项“hostname=”,以允许在启动过程的早期、用户空间组件启动之前设置主机名。
  • Оборудование
    • i915 (Intel) 驱动程序提供对 Intel Arc (DG2/Alchemist) A750 和 A770 独立显卡的支持。 已提议初步实现对 Intel Ponte Vecchio (Xe-HPC) 和 Meteor Lake GPU 的支持。 支持英特尔 Raptor Lake 平台的工作仍在继续。
    • amdgpu 驱动程序继续为 AMD RDNA3 (RX 7000) 和 CDNA (Instinct) 平台提供支持。
    • Nouveau 驱动程序重新设计了 NVIDIA nv50 GPU 显示引擎的支持代码。
    • 为 LogiCVC 屏幕添加了新的logicvc DRM 驱动程序。
    • v3d 驱动程序(适用于 Broadcom Video Core GPU)支持 Raspberry Pi 4 板。
    • 向 msm 驱动程序添加了对 Qualcomm Adreno 619 GPU 的支持。
    • 向 Panfrost 驱动程序添加了对 ARM Mali Valhall GPU 的支持。
    • 添加了对 Lenovo ThinkPad X8s 笔记本电脑中使用的 Qualcomm Snapdragon 3cx Gen13 处理器的初始支持。
    • 添加了适用于 AMD Raphael (Ryzen 7000)、AMD Jadeite、Intel Meteor Lake 和 Mediatek MT8186 平台的声音驱动程序。
    • 添加了对 Intel Habana Gaudi 2 机器学习加速器的支持。
    • 添加了对 ARM SoC Allwinner H616、NXP i.MX93、Sunplus SP7021、Nuvoton NPCM8XX、Marvell Prestera 98DX2530、Google Chameleon v3 的支持。

与此同时,拉丁美洲自由软件基金会形成了完全自由的内核 6.0 版本 - Linux-libre 6.0-gnu,清除了包含非自由组件或代码段的固件和驱动程序元素,其范围为受制造商限制。 新版本禁止在 CS35L41 HD 音频驱动程序和 STM32G0 微控制器的 UCSI 驱动程序中使用 blob。 高通和联发科芯片的 DTS 文件已清理。 MediaTek MT76 驱动程序中禁用 blob 的功能已重新设计。 更新了 AMDGPU、Adreno、Tegra VIC、Netronome NFP 和 Habanalabs Gaudi2 驱动程序和子系统中的斑点清理代码。 停止清理 VXGE 驱动程序,该驱动程序已从内核中删除。

来源: opennet.ru

添加评论