关注了就能看到更多这么棒的文章哦~
The first half of the 5.14 merge window
By Jonathan Corbet
July 2, 2021
DeepL assisted translation
https://lwn.net/Articles/861248/
目前为止,在 5.14 开发周期中只合入了不到 5000 个 non-merge changeset。这还不到 linux-next 中仍在排队的 patch 数量的一半,所以可以说这个合并窗口的开始阶段进展的速度有点慢。尽管如此,还是有相当多的重大修改已经合入了进来。
到目前为止,一些比较有趣的变化如下:
Architecture-specific
Arm64 的指针认证(pointer authentication)现在针对内核和用户空间来分别配置了。
x86 的 split-lock detection 设计目标是用来将那些跨越 cacheline 的原子操作进程 kill 掉,因为这些操作会严重影响性能。5.14 内核增加了一个新的命令行参数(split_lock_detect=ratelimit:N),可以设置一个速率上限,单位是用每秒发生的 lock 操作的次数。如果超过了这个限制(这里是统计整个系统中的次数),那么今后触发了这类 split lock 操作的进程就会被强制 sleep 20ms,而不用再被 kill 掉。
Core kernel
新增一个 futex 操作,FUTEX_LOCK_PI2,它使用单调递增时钟(monotoic)来计算 timeout,而不是使用 realtime clock。
core scheduling 功能用来控制哪些进程可以共享同一个 CPU core,已经被合入 mainline 了。core scheduling 可以作为防御某些 Spectre 漏洞的措施,但在其他一些场景也有用处。
burstable CFS bandwidth controller 也合入 mainline 了。此功能允许那些突发性的(bursty)workload 在某些条件下可以短暂地超出其 CPU 时间上限。
BPF program loader 的初版基础设施代码已经被合入。这项工作最终要达到的目的是可以让内核只加载那些由可信密钥来签名的 BPF program。
Filesystems and block I/O
新增了一个 I/O priority controller,用来供 cgroup 里管理每个 cgroup 中的成员进程所产生的 block I/O request(包括 writeback)的优先级。这个提交(https://git.kernel.org/linus/556910e39249)里包含了一些关于这个功能的文档。此外也更新了 mq-deadline I/O scheduler 来支持这些优先级。
Hardware support
硬件监控。MPS MP2888 脉宽调制器,Sensiron SHT4x 湿度和温度传感器,Flex PIM4328 电源接口模块,以及 Delta DPS920AB 电源。
多媒体。索尼 IMX208 图像传感器和 Atmel 扩展图像传感器控制器。
Miscellaneous 杂项。Stormlink SL3516 加密卸载器,PolarFire SoC(MPFS)mailbox 控制器,联想基于 WMI 的系统管理控制器,以及英特尔 SkyLake ACPI INT3472 相机电源控制器。
网络。英特尔 M.2 WWAN IPC-over-shared-memory 控制器,Ingenic 以太网控制器,Loongson PCI DWMACs,Sparx5 网络交换机,以及 Mellanox BlueField 千兆以太网接口。
稳压器。Richtek RT6160 BuckBoost 和 RT6245 稳压器,联发科 MT6359 电源管理 IC,Silergy SY7636A 稳压器,以及 Maxim 8893 稳压器。
移除:终于,移除了旧的 IDE block driver;而 libata 子系统用来控制所有这些旋转磁盘 IDE 设备。
Networking
精心设计了一个新的机制,允许自定义 multipath IP 网络流量的 hash policy 的配置;详情请见此提交(https://git.kernel.org/linus/22ba9d0d6c0d)。
网络层差点就支持了 NVMe/TCP offload adapter 适配器;详情见此提交(https://git.kernel.org/linus/5ff5622ea1f1)。不幸的是,合入的代码并没有存在很长时间;在 NVMe 开发者的要求下,它被 revert 掉了,因为开发者们觉得代码还没有完全做好合入的充分准备。
virtio 这个虚拟传输层(virtual transport)已经支持了 SOCK_SEQPACKET (在 socket() man page 里有简要描述)。
改进了 SO_REUSEPORT socket 机制,应用程序可以对故障出现之后的处理方式进行更多地控制,避免误判一些连接失败的情况。
Security-related
seccomp()的用户空间处理程序 handler 有了一个新的操作方式,用来为 sandboxed task 创建一个文件描述符,并在系统调用处理完成后把该文件描述符返回回去。所有这一切都是在单个原子操作中完成的。这是对四月份提到的 signal 处理问题(https://lwn.net/Articles/851813/ )的部分解决方案。
新增一个机制在 user namespace 之内更好地控制 resource limit 资源限制。
Virtualization and containers
KVM 现在支持了 guest OS 中的 Arm64 memory tagging extension。
Internal kernel changes
之前介绍的 DISCONTIGMEM memory model 已经被移除了,因为没有体系架构还在使用它了。
5.14 合并窗口可望持续到 7 月 11 日,尽管总是有可能提前关闭的。当然,等合并窗口关闭之后 LWN 会再发表另一篇文章来介绍后续这部分的改动,敬请关注。
全文完
LWN 文章遵循 CC BY-SA 4.0 许可协议。
欢迎分享、转载及基于现有协议再创作~
长按下面二维码关注,关注 LWN 深度文章以及开源社区的各种新近言论~