导语

Linux内核自带的通用调度器设计目标是兼顾各类负载的公平性,无法针对特定业务的性能优先级做深度优化,这一直是超大规模互联网公司性能优化的核心痛点。尤其是内核版本迭代时,通用调度器的逻辑变更往往会给线上业务带来不可预期的延迟劣化,甚至迫使企业停留在旧版本内核,积累大量技术债务。Meta近期基于上游开源的sched_ext eBPF调度框架,快速解决了内核升级带来的广告服务延迟问题,同时实现了业务指标和能效的双重提升,为全行业提供了可复用的超大规模集群调度优化范式。

事实综述

Meta的广告服务是典型的超大规模延迟敏感业务,集群入口平均每秒处理超过500万次请求,日均覆盖全平台4000亿次商业化场景调用,每毫秒的尾延迟波动都会直接影响广告推荐精准度和广告主ROI。 此前Meta一直使用Linux内核自带的CFS、EEVDF通用调度器,这类调度器不感知业务线程的优先级属性,仅按照通用公平原则分配CPU资源。2026年Meta计划将全集群升级到Linux 6.9版本时,发现内核6.6版本引入的EEVDF调度器逻辑导致广告服务延迟劣化,核心指标广告排名量出现下降,不得不将部分广告服务节点停留在旧的6.4版本内核,造成了集群版本碎片化的技术债务。 为了解决这一问题,Meta内核团队和广告团队选择了已经合入Linux 6.12上游内核的sched_ext eBPF可扩展调度框架——该框架是Meta与谷歌ghOSt项目团队联合开发的通用调度扩展能力,允许开发者以BPF程序的形式实现自定义调度策略,无需修改内核源码即可替换内核的调度逻辑。 针对广告业务的负载特征,Meta团队定制的调度策略将CPU动态划分为两个资源池:一个池专门承载延迟敏感的广告检索、排序路径线程,另一个池承载非关键的后台任务,两个池的大小会根据实时负载动态调整,同时优先将关联线程调度到同一个CPU核心上,提升L3缓存命中率,减少高开销的DRAM访问。 该方案上线后,首次切换就实现了广告检索路径p99延迟下降28%,全集群节电3.28兆瓦,广告排名量提升1.1%的成果。后续两次仅调整用户态BPF程序的迭代,又额外实现了p99延迟再降60%、关键路径超时错误减少18%的优化效果,每次迭代的周期从原来内核级改动的数月缩短到数天。

解读与评价

Meta本次实践的核心价值,是验证了eBPF扩展内核能力在超大规模生产场景下的战略价值,打破了过去内核调度优化必须依赖内核源码修改、跟随上游发版节奏的传统路径。 对中国的开发者和企业而言,这一方案的可复用性极高:首先,国内头部互联网、云厂商普遍维护着数万甚至数十万台服务器的超大规模集群,电商、短视频、AI推理等延迟敏感业务的性能优化需求强烈,过去很多厂商选择通过二开内核、维护私有内核分支的方式添加定制调度逻辑,技术债务高、迭代效率低,sched_ext提供了完全上游合规、无需修改内核的替代方案,大幅降低了调度优化的门槛。 其次,对于中小企业而言,不需要投入大量内核研发资源,就可以借助上游内核内置的sched_ext能力,针对自身业务负载快速定制调度策略,获得和 hyperscaler 同等的调度优化效果。 不过落地时也需要注意几个问题:一是定制调度策略需要对业务负载的特征、优先级有非常清晰的认知,盲目照搬Meta的策略反而可能导致优先级混乱、性能劣化;二是sched_ext依赖Linux 6.12及以上版本的内核,国内大量生产环境仍在使用更低版本的内核,升级成本较高,短期可以关注社区的backport方案,长期则建议将内核版本升级纳入技术 roadmap;三是当前sched_ext的可观测性、调试工具生态还不够完善,问题排查难度高于原生调度器,落地前需要做好配套工具的建设。