1. 新的调度策略:EEVDF

任务调度策略是内核的重要部分:当有很多任务可供选择时,它决定接下来应该运行哪个任务,它对操作系统的调度性能和任务延迟至关重要。Linux之前的算法称为CFS,是于Linux 2.6.23版本合入。在Linux6.6内核版本,默认使用EEVDF的新算法取代CFS。

Linux Kernel 6.6 Released Key Updates Features

该算法涉及目的是下次自动选择之前未获得应有关注的进程,而获得超过应有关注的进程则受到“惩罚”(理解一下,就是让之前忽视的进程可以及时调度,而过度得到调度的进程延迟调度)。CFS使用启发式算法(启发式算法(heuristic)是相对于最优化算法提出的。一个问题的最优算法求得该问题每个实例的最优解)和可调参数来尝试推测哪些进程需要更多调度资源,中许多可调参数已被删除。由于这些原因,新的调度算法目的是改善CFS遗留的任务延迟、过度调度问题。


LWN文章:https://lwn.net/Articles/925371/

paper:https://citeseerx.ist.psu.edu/document?repid=rep1&type=pdf&doi=805acf7726282721504c8f00575d91ebfd750564

2. shadow stacks安全特性

经过多年的讨论,Linux内核终于添加了Intel shadow stacks硬件功能的支持。shadow stacks的工作原理是添加无法直接修改的另一套副本堆栈(shadow stacks)。管理堆栈时,处理器将返回地址推送到普通堆栈和特殊许可的shadow stacks。返回时,处理器弹出shadow stacks(副本堆栈)并将其与正常堆栈进行比较。如果两者不同,处理器会触发保护故障,这可以有效防止试图修改堆栈的攻击。此实现仅支持64位内核上的shadow stacks,仅通过 IA32 仿真支持 32 位,并且仅适用于用户空间。

此版本还增加了对Clang控制流完整性方案的支持,以及RISC-V 启动时内核镜像随机化特性。


LWN:https://lwn.net/Articles/926649/

3. overlayfs支持fs-verity

此版本的overlayfs支持fs-verity,通过在metacopy files上指定overlay.verity xattr,使用fs-verity来验证lowerdata文件。fs-verity机制起源于Android项目,目的是希望把部分文件配置成read-only,并且让kernel检测到任何对这个文件的修改,甚至包括offline改动。s-verity会对文件生成一组hash值。hash值就能用来监测文件是否被改动过


LWN文章:https://docs.kernel.org/filesystems/overlayfs.html#fs-verity-support

4. tmpfs支持Quotas和xattrs

Linux6.6对tmpfs支持user and group quotas(project quotas will be added later),同时支持user xattrs (security xattrs and POSIX ACLs are alreadys supported) 。

5. io_uring支持更快的异步Direct I/O

当使用io_uring进行asynchronous direct I/O 时,此版本可以显着提高性能:对于low queue depth IO,吞吐量/延迟最多可提高 37%。

6. 初步支持XFS在线fsck

为了实现最大的可靠性,XFS的目标是在不卸载文件系统的情况下修复自身。此版本包含第一个基础架构部分,将在下一版本中支持此功能。


LWN文章:https://docs.kernel.org/filesystems/xfs-online-fsck-design.html