LWN:5.8内核合并窗口第一部分!

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

5.8 Merge window, part 1

By Jonathan Corbet
June 5, 2020

原文来自:https://lwn.net/Articles/822077/

5.8合并窗口打开之后,已经有超过7,500个改动合入mainline了,不包括那些merge节点。这个数字能在这4天内达到,已经算是很多了。早期的pull请求主要都是来自networking和graphics tree,不过也有许多其他内容。读下去可以了解这个开发周期中上半场的总结。

Architecture-specific

  • Arm64架构代码已经合入了Branch-target identification 和shadow call stacks (见此文:https://lwn.net/Articles/804982/) 。这两个都是用于安全加固的功能,希望可以让Arm64系统更加不容易被攻破。其中shadow call stack的支持很快应该在其他架构上也能支持。

Core kernel
  • 新增faccessat2() 系统调用,终于把POSIX标准里一直要求的flags参数加进来了。此时在Linux系统中faccessat()的支持是完全靠C library里面模拟处理了flags参数。而faccessat()加入后就可以在kernel层面得到支持了。

  • Memory control group增加了一个新的控制开关,即memory.swap.high,这个开关设置后可以让那些使用了过多swap空间的进程慢下来。参见这个commit:https://git.kernel.org/linus/4b82ab4f2883

  • io_uring子系统支持了tee()系统调用

  • setns()系统调用支持pidfd作为参数,这样它就可以指定多个namespace类型了。调用setns()的进程被移入这些可用的namespace时会是个原子操作。

  • BPF iterator机制合入了,可以利用kernel的dump机制把数据结构dump到user space。4月份的文章介绍过:https://lwn.net/Articles/818714/

  • 新增了一个ring buffer用来跟BPF program进行数据通讯。目的是改进perf ring buffer并且允许buffer在多个CPU之间共享。参见:https://git.kernel.org/linus/97abb2b39682

  • padata机制现在可以支持multi-threaded任务的负载均衡了。参见https://git.kernel.org/linus/97abb2b39682

  • 内核的swappiness设置开关是用来平衡file-backed page和匿名页的回收的。此前一直不倾向于swap匿名页。不过对于fast I/O设备来说,swap会比文件系统访问要更加快,因此其实可能优先进行swapping反而是更高效的策略。

    现在swappiness值可以设置的数值能达到200,从而可以设置得更加偏向这个方向。参见https://git.kernel.org/linus/c843966c556d

Filesystems and block I/O
  • block layer合入了inline encryption的底层支持代码。Inline encryption是一个硬件机制,可以对block storage device和CPU之间交换的数据利用CPU提供的一个秘钥来进行加解密。参见https://git.kernel.org/linus/54b259f68de5

  • statx()中新增了STATX_ATTR_DAX这个flag,表示此文件目前正在被DAX机制直接访问。同时有个文档patch来解释文件系统在DAX情况下行为如何。本次合并窗口内预计会有更多DAX相关的改动。

Hardware support
  • Graphics: Leadtek LTK050H3146W panels, Northwest Logic MIPI DSI host controllers, Chrontel CH7033 video encoders, Visionox RM69299 panels, and ASUS Z00T TM5P5 NT35596 panels.

  • Hardware monitoring: Maxim MAX16601 voltage regulators, AMD RAPL MSR-based energy sensors, Gateworks System Controller analog-to-digital converters, and Baikal-T1 process, voltage, and temperature sensors.

  • Interrupt control: Loongson3 HyperTransport interrupt vector controllers, Loongson PCH programmable interrupt controllers, and Loongson PCH MSI controllers.

  • Media: Rockchip video decoders and OmniVision OV2740 sensors. The "atomisp" driver has also been resurrected in the staging tree and seen vast amounts of cleanup work.

  • Miscellaneous: AMD SPI controllers, Maxim 77826 regulators, Arm CryptoCell true random number generators, Amlogic Meson SDHC host controllers, Freescale eSDHC ColdFire controllers, and Loongson PCI controllers,

  • Networking: Broadcom BCM54140 PHYs, Qualcomm IPQ4019 MDIO interfaces, MediaTek STAR Ethernet MACs, Realtek 8723DE PCI wireless network adapters, and MediaTek MT7915E wireless interfaces.

Miscellaneous
  • 启动参数增加了一个intrdmem=的参数。可以指定RAM里面的初始disk image。参见https://git.kernel.org/linus/694cfd87b0c8

Networking
  • bridge代码现在可以支持media redundancy protocol, 这样一串Ethernet交换机(switch)中有一个损坏的情况下也能正常工作。参见:https://git.kernel.org/linus/45c9cbec425c

  • traffic-control子系统里面新增"gate"动作,可以要求把特定的网络包只有在特定的时间窗口里才可以传递给系统。这个功能尚未有文档记录,参见https://git.kernel.org/linus/a51c328df310

  • 有一些网络设备可以对连接的网线进行测试。kernel和ethtool工具现在也支持这个功能(当然需要硬件支持才行)。

  • multiprotocol label switching路由算法在此前的IPv4基础上也增加了IPv6支持。

  • RFC 8229获得了支持,它描述了key-exchange和IPSec packet的封装。

Security-related
  • 新增CAP_PERFMON capability 。拥有这个能力的进程可以利用perf event子系统来进行性能监控。

  • 新增CAP_BPF capability,把此前CAP_SYS_ADMIN下面管控的一些BPF操作接管起来。大多数BPF operation可能还需要申请CAP_PERFMON(用在tracing场景)或者CAP_NET_ADMIN。https://git.kernel.org/linus/a17b53c4a4b5 这里有一个简要的综述,介绍了各种operation需要什么capability。

Internal kernel changes
  • "pstore" 机制,用来在系统panic的时候暂存一些系统信息。给它新增了一个新的后端,可以把数据保存到block device了。参见https://git.kernel.org/linus/649304c936cd

  • 新增了一个read-copy-update (RCU)变体,名为“RCU rude”。它只会在context switch的时间点来检查grace period。对这个名字感到迷惑的话,可以查看https://git.kernel.org/linus/c84aad765406, 这里解释了:"It forces IPIs and context switches on all online CPUs, including idle ones, so use with caution".

  • 在RCU-tasks子系统中新增了一个"RCU tasks trace"变体,主要用在tracing和BPF program的场景,参见https://git.kernel.org/linus/d5f177d35c24

  • 从realtime preemption tree里把“Local locks”拿了过来。这种lock机制是用来替代那些在单个CPU上disable preemption或者interrupt的代码。好处是可以提供更好的实时性,也可以保证lock处理正确。参见 https://git.kernel.org/linus/91710728d172

  • 管理file readahead的API有很大变化,参见https://lwn.net/ml/linux-kernel/20200414150233.24495-1-willy@infradead.org/

  • kgdb这个kernel debugger现在可以跟boot console并存了,这样就可以在启动流程中更早地进行debug了。参见这个commit https://git.kernel.org/linus/220995622da5 以及文档patch https://git.kernel.org/linus/f71fc3bc7b32

  • 新增了一个buffer-allocation API,用于方便编写XDP network driver。文档是完全没有的,不过倒是可以在commit中看到相关的API https://git.kernel.org/linus/2b43470add8c

5.8合并窗口预计会持续到6月14日,在那之后,预计5.8正式发布要到8月初了。请静待LWN提供的后半部分总结。

全文完

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

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

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

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值