LWN:6.7合并窗口的第一部分!

Linux6.7合并窗口见证了大量开发进展,包括架构调整、futex2API引入、BPF功能扩展、文件系统改进、硬件支持增强等。bcachefs首次合并,Rust版本要求升级,网络优化和虚拟化支持也有所进步。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

关注了就能看到更多这么棒的文章哦~

The first half of the 6.7 merge window

By Jonathan Corbet
November 3, 2023
ChatGPT translation
https://lwn.net/Articles/949294/

自 6.7 合并窗口打开以来,截至本文写作时已有 9,842 个非合并的变更集(non-merge changeset)进入主线仓库。其中近三分之一都是跟整个 bcachefs 的开发历史有关,但即使不计算这部分,未来的这个版本仍然有大量的内容。请继续阅读以了解本开发周期迄今为止已经合并的最有趣的变化摘要。

架构相关

  • 可以使用 ia32_emulation 命令行参数在 x86-64 内核上启用或禁用 32 位仿真。这允许在不需要的地方关闭 32 位仿真,理论上减少了内核的攻击面,因为 32 位兼容接口测试不足,不如内核 API 的其余部分。并且此选项允许那些使用它的人继续打开该功能。 IA32_EMULATION_DEFAULT_DISABLED 配置选项控制是否默认启用 32 位仿真。

  • S390x 和 32 位 Arm 系统现在支持当前版本(cpuv4)BPF 指令。

  • 经过多年的讨论后,已删除对 ia64("Itanium")架构的支持。然而,并非每个人都对这个决定感到满意,Linus Torvalds 已经表示如果看到正确维护的话,可以在树外维护一年后就恢复 ia64 支持。

核心内核

  • 已合并futex2 API,提供了一种替代当前唯一的多路复用futex()系统调用的方法。新 API 还增加了在 NUMA 系统上获得更好性能和支持非 32 位大小的功能。[ 更新 :这些功能实际上并不是此次合并的一部分,将在将来的版本中包含;作者为提供错误的信息表示道歉。]

  • 现在可以使用binfmt_misc在非特权命名空间中添加新的二进制格式;有关更多信息请参见此提交。

  • 添加了一组用于工作队列(workqueue)的 Rust 绑定;此提交包含了一些它们的使用示例。

  • Cpusets现在有了一个新的“远程分区(remote partition)”模式,使一些配置任务更加容易;更多信息请参见此文档提交。

  • BPF 程序现在可以利用 per-CPU 的 kptrs;此日志提供了一些信息。

  • 添加了对 BPF 异常的支持(最好将其视为一种立即退出 BPF 程序的方式)。有关更多信息,请参见此文章和此日志。

  • io_uring 子系统现在支持一些新操作。IORING_OP_READ_MULTISHOT 将从文件描述符执行多次读取,直到缓冲区填满。 IORING_OP_WAITID是waitid()的异步版本。SOCKET_URING_OP_GETSOCKOPT和SOCKET_URING_OP_SETSOCKOPT实现了 getsockopt() 和 setsockopt() 。

  • Io_uring 还增加了对 futex 操作的支持,尽管目前只实现了 futex API 的子集。

文件系统和块设备 I/O

  • fscrypt子系统现在可以在小于文件系统块大小的单位中加密数据;此提交包含了关于此功能的一些文档。

  • Btrfs 文件系统添加了一个新的“stripe tree”数据结构;它最初用于在分区块设备(zoned block device)上实现 RAID0 和 RAID1,但预计最终将解决 Btrfs 中更高 RAID 级别的一些长期存在的问题。这篇树外文档提供了更多信息。

  • Btrfs 还添加了“简单的配额(simple quotas)”,解决了完全配额(full quota)支持带来的一些性能问题。简单的配额只跟踪在它们创建的子卷中的范围,可以使用更简单的计算方法,因此无法计算共享范围。该功能在内部没有文档,但此提交信提供了概述。

  • bcachefs 文件系统终于被合并,尽管目前标记为“实验性”。合并包含了近 2800 个提交,没有一个是添加文档的。关于这个文件系统的信息可以在bcachefs.org上找到。

  • 内核已经支持NVMe-TCP的TLS加密。

硬件支持

  • 时钟 :Cirrus Logic ep93xx 定时器,Amlogic S4 SoC PLL 和外围时钟控制器,TI TWL6032 时钟控制器,Qualcomm SM8550 摄像头时钟控制器和 Qualcomm SM4450 全局时钟控制器。

  • *图形*:JDI LPM102A188A DSI 面板,Raydium RM692E5 基于 DSI 的面板和 Solomon SSD132x OLED 显示器。

  • 其他 :Xilinx Versal DDR 内存控制器,Analog Devices MAX77503 调节器,Mitsumi MM8013 燃料计,Qualcomm PM8916 BMS-VM 燃料计,Qualcomm PM8916 线性电池充电器,Ampere Coresight 性能监控单元,Nuvoton NPCM BMC sdhci-pltfm 控制器和 Qualcomm QSEECOM 接口。

其他

  • Rust 1.73.0 现在是构建 Rust-for-Linux 代码所需的版本。

网络

  • 公平排队数据包调度程序增加了一些性能改进:“”该系列在密集的 tcp_rr 工作负载中带来了 5%的吞吐量提升,对于(非间隔的)UDP 数据包则提升了 13%。“”

  • TCP 协议现在可以在每个路由基础上可选地支持微秒级分辨率的时间戳;此日志包含了如何启用此功能的说明。

  • 有一种新形式的虚拟网络设备,其传输逻辑完全由 BPF 程序提供;此日志有更多信息。

  • TCP 身份验证选项(RFC 5925)现在得到了支持;它取代了较旧的基于 MD5 的身份验证机制。此提交包含有关 TCP-AO 如何工作以及如何使用它的文档。

虚拟化和容器

  • iommufd子系统现在可以执行 DMA 操作的脏跟踪。根据合并消息:“”这可用于生成有关在 VM 迁移过程中 DMA 活动中被脏化的内存的记录。像 qemu 这样的 VMM 将使用 IOMMU 脏位与 CPU 的脏日志结合起来,以确定要传输的内存。“”

内核内部变化

  • 新增了一个“轻量级队列(lightweight queue)”实现,是“一个 FIFO 单链队列,仅需要自旋锁进行出队操作,在进程上下文中进行。入队操作是原子的,没有自旋锁,可以在任何上下文中发生。”在源码中的 kerneldoc 注释之外没有文档。

  • 还新增了“objpool”,是“用于对象分配和回收的高性能队列的可扩展实现”。这个特性在此测试模块中有使用到。

在 linux-next 中仍有相当多的工作,其中大部分预计将在合并窗口关闭之前进入主线。这将在 11 月 12 日之前发生。请关注 LWN,以获取合并窗口关闭后的下半年总结。

全文完
LWN 文章遵循 CC BY-SA 4.0 许可协议。

欢迎分享、转载及基于现有协议再创作~

长按下面二维码关注,关注 LWN 深度文章以及开源社区的各种新近言论~

format,png

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值