经过一段时间的努力,Linux 7.2正式版于8月16日发布,而紧接着,7.3的合并窗口也随之开启。从近期的更新补丁来看,这一轮的改进几乎完全由中国工程师的工作推动,特别是字节跳动、中兴和小米三家公司贡献了大量优化代码,涵盖了调度延迟、内存管理和内存压缩等关键领域。 字节跳动的工程师Chuyi Zhou发现,在内核中,smp_call_function*()在等待其他CPU完成中断时,会将抢占功能关闭,这在16核机器上,导致IPI的等待时间长达17毫秒,这对于实时性要求极高的DPDK等网络框架而言,是不可接受的延迟。字节团队提出了一种优雅的解决方案,通过将待处理CPU记录到每个任务的CPU掩码中,从而实现了在等待前重新开启抢占。经过测试,DPDK的最大延迟从17毫秒大幅减少到仅1.5毫秒,降幅接近90%。
在中兴,工程师Xu Xin发现KSM的反向映射函数rmap_walk_ksm()存在严重的性能瓶颈,最坏的持锁时间竟然高达705毫秒。由于这一问题,应用会频繁地遭遇数百毫秒的冻结,容器则直接出现超时。触发这一问题的场景相当普遍,特别是在JVM使用mmap分配堆内存后,频繁执行mprotect作为垃圾回收屏障时。经过中兴团队的优化,最坏的锁持时间已降低到均值1.44毫秒和峰值1.67毫秒,性能提升约490倍。
小米的工程师Wenchao Hao关注到了zsmalloc内存分配器中的zs_free()锁竞争问题,这一分配器在安卓设备以及老款硬件内存紧张时发挥着至关重要的作用。经过优化,实际测试显示,在树莓派4B上并发释放内存的速度提高了1.83倍,而在20核的Intel服务器上提速了1.4倍。 按照内核社区的惯例,每年只有一个长期支持(LTS)版本,而7.3版被视为今年最有可能成为LTS的候选版本。如果7.3获得此资格,字节、中兴和小米的优化补丁将会在各大Linux发行版中得到长期维护,并受益于多年持续的改进。