12 月 28 日消息,英特尔工程师 Huang Ying 今天发布了补丁集,在 migrate_pages () 函数中实现页面迁移的批量 TLB 刷新,而且在性能优化方面表现亮眼。
migrate_pages () 在 Linux Kernel 中负责页面迁移(Page Migration),而页面迁移可以指定一个进程的页面至其指定的内存节点上。它的设计初衷是为了:通过将页面移动到该进程所处的 NUMA 节点上来减少内存访问的延迟。后来内存规整和内存热插拔等场景都使用了此功能。
在 migrate_pages () 函数接收到多个页面之后,英特尔工程师努力支持批量处理 TLB 刷新和复制,同时减少处理器间中断 (IPI) 的数量。
TLB(translation lookaside buffer)可以认为是一块高速缓存。数据 cache 缓存地址 (虚拟地址或者物理地址) 和数据。TLB 缓存虚拟地址和其映射的物理地址。TLB 根据虚拟地址查找 cache,它没得选,只能根据虚拟地址查找。所以 TLB 是一个虚拟高速缓存。
migrate_pages () 函数用于将进程中的所有页面移动到另一组节点。该补丁系列还允许使用 Xeon Scalable Sapphire Rapids 处理器上的英特尔数据流加速器 (DSA) 。
在安装补丁之后,migrate_pages () 测试结果显示 IPI 在测试期间降低了 99.1%,每秒成功迁移的页面数增加了 291.7%。