仓库源文

.. Kenneth Lee 版权所有 2023

:Authors: Kenneth Lee :Version: 0.1 :Date: 2023-10-20 :Status: Draft

.. list-table::

6.4


大特性

Intel LAM特性使能

LAM, Linear Address Masking。就是在用户态可以把地址的高位用作其他用途。相当于 ARM的Top-Byte ignore或者PAuth特性,19年AMD也有一个upper address ignore特性,不 过没有推到Linux中。

Intel这次推进来的特性不包含最高位,叫LAM_U57和LAM_U48,分别掩掉62-57和62-48位。 这样应该是为了避免有符号数的判定算法出问题。这个Patch涉及的小修改挺多的,主要 是一堆的页表处理需要在这些bit上进行特殊处理。

用户态trace event接口

这个版本开始,可以在用户态放tracepoint了。接口是 ioctl(/sys/kernel/tracing/user_events_data, user_reg)。

两个Scalable并行优化

  1. 增加per-VMA的lock,在部分场景取代mm_struct的全局mmap_lock,提升Scalability。 Oracle,Google等多个组织提供的补丁。现在是和原来的功能共存的,通过 CONFIG_PER_VMA_LOCK配置项激活。

  2. 优化了调度算法,使用户和内核线程的切换在大型系统上有更高的Scalability。特性 的名字叫CONFIG_MMU_LAZY_TLB_REFCOUNT,大致的意思是如果内核线程在很多CPU上都 用,就尽量留着相关的TLB项,不要刷掉,从而保证用户进程切换不要动这部分TLB。 我原来比较好奇的是:这不是本来就是这样的吗?但考虑到部分平台内核和用户态用 同一个页表指针,也许进程退出的时候,要更新一下TLB,这也大概可以理解。这个等 要用的时候再来看吧。

其他有趣的东西

  1. PSI(Pressure Stall Information)支持用户态访问

  2. 支持更安全的KSM(Kernel Same-page Merge)接口,原来只有 madvice(MADV_MERGEABLE)接口,只能以进程内的地址空间为分割,现在加上了 prctl(PR_SET/GET_MEMORY_MERGE)接口。

  3. BPF特性继续加新特性,但我不关心。

  4. 关闭动态关闭SELinux的功能的功能,这是为安全加的小修改。

  5. rust一直在增加基础binding。

华为和海思的提交

  1. 陈祥和John合了一个支持SAS驱动支持poll的特性
  2. 有人用gmail邮箱和了一个机顶盒的随机数生成器驱动的补丁