发布时间 |
2023-06-25 |
4.24. 6.4
4.24.1. 大特性
4.24.1.1. 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上进行特殊处理。
4.24.1.2. 用户态trace event接口
这个版本开始,可以在用户态放tracepoint了。接口是ioctl(/sys/kernel/tracing/user_events_data, user_reg)。
4.24.1.3. 两个Scalable并行优化
增加per-VMA的lock,在部分场景取代mm_struct的全局mmap_lock,提升Scalability。Oracle,Google等多个组织提供的补丁。现在是和原来的功能共存的,通过CONFIG_PER_VMA_LOCK配置项激活。
优化了调度算法,使用户和内核线程的切换在大型系统上有更高的Scalability。特性的名字叫CONFIG_MMU_LAZY_TLB_REFCOUNT,大致的意思是如果内核线程在很多CPU上都用,就尽量留着相关的TLB项,不要刷掉,从而保证用户进程切换不要动这部分TLB。我原来比较好奇的是:这不是本来就是这样的吗?但考虑到部分平台内核和用户态用同一个页表指针,也许进程退出的时候,要更新一下TLB,这也大概可以理解。这个等要用的时候再来看吧。
4.24.2. 其他有趣的东西
PSI(Pressure Stall Information)支持用户态访问
支持更安全的KSM(Kernel Same-page Merge)接口,原来只有madvice(MADV_MERGEABLE)接口,只能以进程内的地址空间为分割,现在加上了prctl(PR_SET/GET_MEMORY_MERGE)接口。
BPF特性继续加新特性,但我不关心。
关闭动态关闭SELinux的功能的功能,这是为安全加的小修改。
rust一直在增加基础binding。
4.24.3. 华为和海思的提交
陈祥和John合了一个支持SAS驱动支持poll的特性
有人用gmail邮箱和了一个机顶盒的随机数生成器驱动的补丁