LWN:5.15 合并窗口第一部分!

Linux News搬运工

共 4346字,需浏览 9分钟

 ·

2021-09-17 02:51

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

5.15 Merge window, part 1

By Jonathan Corbet
September 2, 2021
DeepL assisted translation
https://lwn.net/Articles/867821/

撰写文本之时,已经有 3,440 个 non-merge changeset 合入了 mainline 仓库,这些是正在进行的 5.15 开发周期一部分。仅仅只有 3,440 个 patch,看起来开头的进展比较慢,不过已经包含了很多重要的新功能。请继续阅读来看看 5.15 合并周期前半部分情况如何。

Architecture-specific

  • s390 架构支持了 KFENCE 和 KASAN KCSAN 开发工具。

Core kernel

  • 终于可以将整个 control group 加入 SCHED_IDLE 这个 scheduling class 之中了。之前只能逐个 task 来进行设置。这样设置之后,整个 cgroup 中的进程都只在 CPU 没有其他工作要做的时候才会得以执行了,不过其中的各个 task 还是会有相对权重可以调整。

  • 经过了 17 年这么长的开发之后,realtime reemption locking (实时抢占锁)代码终于被合入了。这个工作 开始于 2004 年,已经对 kernel 中的核心代码进行了许多显著改动。在这个最新功能合入之后,用来实现确定时间的实时响应的 sleepable lock 也终于加入了内核(尽管只有在 kernel 是打开了 REALTIME config 选项的时候)。这个 merge log 中描述了这个改动带来的主要影响。

  • io_uring 子系统现在可以 支持 直接指定用固定的 file table 位置来打开文件,而不需要使用文件描述符了。这样可以对某些场景的性能带来显著提高,并且这也是对 Unix 传统的使用文件描述符来打开文件的方式的一次重大改变。

  • io_uring 中还新增了一个新的 "BIO recycling" 机制,可以用来避免一些内部 memory 管理方面的额外开销。据称能让 io_uring 的每秒持续 I/O 操作性能表现提升 10%。

  • io_uring 终于支持了 mkdirat()symlinkat(), 以及 linkat() 这几个系统调用。

  • BPF program 现在可以支持对 timer event 的 request 和 respond 了。timer API 文档很少,相关的信息可以参考 this commit 以及 this one,此外还有一个 test program 中带有一个例子。

  • Core scheduler 对 scheduling on asymmetric systems 的支持已经合入了。还有一部分代码是能让 Arm 处理器可以利用这个功能的,可能会在 merge window 的后续日子里得到合入。

Filesystems and block I/O

  • fanotify API 新增了一个选项, FAN_REPORT_PIDFD, 用来在 event metadata 里面返回一个 pidfd。这个功能(需要特权才能执行)可以在避免竞争的情况下确认是否有进程访问到了所监控的文件。

  • 关于 hole-punching 的一些fix 应该可以避免一类可能会导致文件损坏的微妙 race condition。

  • mandatory file locking 功能已经多年处于 deprecated(即将废弃的状态了)。它功能有问题,并且很少有人用(如果说真的还有人在用的话)。在 5.15 中彻底移除了对 mandatory locking 的支持。

  • LightNVM subsystem 提供了对固态存储设备(SSD 之类)的直接访问,不再需要一个 emulation layer,不过这个功能也被移除了。根据 相关的 commit message, LightNVM 很早以前就被那些更加新的 NVMe 标准取代了,不再有需要。

  • kernel 终于有了一个内核内部的支持 SMB 文件系统这组协议的 server。相关的 merge message 中提到:

    ksmbd 是一个实现了 SMB3 协议 server 端功能的 kernel module。目标是希望能提供更好的性能,并且是 GPLv2 的 SMB server,还希望有更好的租约处理(分布式 caching)。更长远的目标是希望能更快地增添新功能(比如增加 RDMA 也就是 "smbdirect",以及新出现的对此协议加密和签名功能的改进),也就是希望在这个更小、更优化的 kernel server 里面比起使用 Samba 来说能更加容易地进行开发。

    Samba 项目涵盖的功能还是更加多(包括工具,安全服务,LDAP,Active Directory Domain Controller,以及跨平台的文件服务能支持更多场景),不过 Samba 中的用户空间的 file server 已经被证明对于一些 Linux 场景来说很难优化,包括运行在小型设备上。

    目标并不是要取代 Samba,而是能对其扩展,从而针对 Linux 可以提供更好的优化,同时也计划在可能的情况下要跟 Samba 用户空间工具、库等很好地集成起来。已经进行的跟 Samba team 的合作已经确保了配置文件以及 xattrs 在 kernel 和 user space server 这两种方案中使用了兼容的格式。

  • Btrfs 文件系统支持了 fs-verity 文件完整性检验功能以及 ID-mapped mounts.

  • move_mount() 系统调用 (在 this article 中有介绍) 得到了扩展,允许对一个现存的 sharing grouph 增加一个 mount。这个相对比较新的少见功能事实上解决了 Checkpoint/Restore in Userspace 开发者们碰到的许多问题。参见 this commit 来了解更多。

Hardware support

  • Miscellaneous: Richtek RTQ6752 TFT LCD voltage regulators, Richtek RTQ2134 SubPMIC regulators, Rockchip serial flash controllers, Arm SMCCC random-number generators, and Aquacomputer D5 Next watercooling pumps.

  • Networking: MediaTek Gigabit Ethernet PHYs, MHI WWAN MBIM interfaces, and LiteX Ethernet interfaces.

  • Power supply: ChromeOS EC based peripheral chargers and Mediatek MT6360 chargers.

  • Virtual: Virtio I2C adapters.

Networking

Security-related

  • prctl() 新增了一个配置,名为 PR_SPEC_L1D_FLUSH。如果某个进程打开了这个选项,那么 kernel 就会在每次进程从 CPU 调度出去的时候都会进行 L1D (L1 data cache)的 flush 操作。这样就可以预防一些潜在的 speculative-execution 漏洞窃取 L1D cache 中的数据,但是会明显地降低性能。注意,这个功能并不阻止恶意进程运行在同一个 CPU 上的 SMT sibling processor 上,这种情况必须要 core scheduling 这样的功能来阻止。新增的这个 prctl() 功能可以被管理员禁用掉,参见 this documentation patch 来了解更多。

  • device mapper 利用 kernel 的 integrity measurement architecure 支持了远程证明(remote attestation)。参见 Documentation/admin-guide/device-mapper/dm-ima.rst 了解详情。

如果进度正常的话,5.15 合并窗口期预计会持续开放到 9 月 12 日。LWN 会在后半部分合并窗口期结束之后马上来完成总结。看起来本次开发周期还是会有很多工作等着 pull。

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

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

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



浏览 34
点赞
评论
收藏
分享

手机扫一扫分享

分享
举报
评论
图片
表情
推荐
点赞
评论
收藏
分享

手机扫一扫分享

分享
举报