Arm本周向Linux内核提交了一组初始补丁,目标只有一个:让高核心数处理器在清理TLB时,别再动不动就"全员通知"。

这项技术叫TLBI Domains,简称TLBID。Phoronix发现了这组提交。它要解决的问题,藏在每一颗多核CPU的日常里。

打开网易新闻 查看精彩图片

TLB失效,为什么在高核心数下变贵了

TLB是处理器用来缓存虚拟地址到物理地址转换结果的结构。操作系统一旦需要让部分地址映射失效,通常得向多个CPU核心发送TLB失效指令。

核心数少的时候,这点开销不算什么。核心数一多,如果每次都对整个系统执行TLB失效,同步和通信开销就会明显冒出来。

TLBID的核心变化很直接:允许操作系统只针对部分CPU核心执行TLB失效,不必每次都覆盖整个系统。

内核怎么知道该通知谁

Arm正在为Linux内核完善相关支持,让内核能够根据进程实际运行过的CPU核心发送TLBI指令,仅让相关CPU执行TLB清理。

这套机制主要瞄准高核心数Arm服务器处理器。对于在大量CPU核心之间跑来跑去的服务器工作负载,避免不必要的全系统TLB失效,有望减少处理器之间的同步开销。

不过,Arm目前尚未公布TLBID的实际性能测试数据,具体收益仍有待后续硬件和软件验证。

光有内核还不够

除了Linux内核本身,ARM64架构的TLBID支持还需要编译工具链提供相应的指令支持。目前相关工作依赖:

  • LLVM 23及更新版本
  • GNU Binutils 2.46及更新版本

Arm此次提交的补丁仍属于早期开发阶段。随着相关架构规范、编译器以及Linux内核支持逐步完善,未来搭载TLBID的高核心数Arm服务器处理器,有望利用更精细的TLB失效机制,降低大规模多核心系统中的内存管理开销。

对跑在Arm服务器上的大规模工作负载来说,这是一条从内核底层开始铺的路。眼下能确认的是补丁已经提交,工具链门槛已经摆明,剩下的等实测数据说话。