+8613426109659
webmaster@21cto.com

字节跳动为Linux提出“Parker”方案:实现多内核并行运行

资讯 0 34 18小时前
图片
在数日前,字节跳动为 Linux 内核提出了多内核架构方案
这里该方案与不久前发布的Multikernel Technologies的方法并不相同,字节跳动其实一直在研发一个名为Parker的类似方案。近日,它正式揭晓 Parker,这是其在同一硬件/系统上实现多内核并行运行的解决方案。
Parker可在单台机器上同时运行多个Linux内核,无需依赖KVM等虚拟化技术。Parker通过对CPU核心、内存及设备进行分区,构建出具备分区感知能力的Linux内核。
字节跳动在提案中亦坦承说,该方案在某些方面与近期提出的Multikernel RFC相似,但设计和实现机制完全不同。
在发布到Linux内核邮件列表的RFC中,工程师Fam Zheng和Thom Hughes介绍了Parker(“PARtitioned KERnel”的缩写)。
图片

来源:

https://lore.kernel.org/linux-pm/20250923153146.365015-1-fam.zheng@bytedance.com/

Parker 团队进一步阐述了其多内核设计方案:

“每个内核实例可使用相同镜像,但初始内核(即引导内核)负责控制硬件分配与分区。其余内核均为次级内核(应用内核),各自管理其分配的CPU/内存/I/O设备。”

Parker的主要应用场景是高核心数机器,这类环境可能存在可扩展性问题。启动后,内核实例之间不存在通信。换言之,它们不共享任何资源,从而提升可扩展性。每个内核都需要独立的(PCIe)设备进行I/O操作,例如NVMe或网卡。


另一种可能的应用场景是:根据工作负载需求,为不同内核实例配置差异化的性能调优方案、CONFIG_选项以及FDO/PGO策略。

该概念旨在允许多个 Linux 内核在一台物理机上同时运行,而无需依赖 KVM 等传统虚拟化工具。

Parker 的工作原理是划分硬件资源。所谓的引导内核 (Boot Kernel) 首先负责,划分出 CPU 核心、内存区域和 I/O 设备,然后将这些部分交给开发人员所谓的应用程序内核 (Application Kernel)。

因此,每个内核独立运行,彼此之间无需通信,理论上这使得设置在具有非常高核心数的服务器上更具可扩展性。

工程师们看到的一个用例是运行具有不同配置或性能调优的内核,以适应其处理的工作负载。Parker 通过公开一个kernfs接口并将kexec辅助内核映像热加载到预留内存中来实现这一点。在此之前,引导内核必须离线 CPU、预留内存并分离设备,以确保每个分区能够安全运行。

然而,并非所有人都相信这种方法是正确的。英特尔(Intel)的戴夫·汉森 (Dave Hansen)驳斥了该提议,并警告称,如果没有监督层,就无法阻止内核之间的冲突。例如,一个内核切换分裂锁检测或发出类似 的系统级指令,WBINVD可能会导致机器上所有其他内核出现问题。

图片
来源:

https://lore.kernel.org/linux-pm/40419dea-666e-4a8d-97a7-fa571d7122f4@intel.com/

目前,很多家企业都在致力于多内核实验,以更好地应对当代高核心数系统。这项工作将走向何方,以及其中哪些方案最终能演进为适用于上游Linux内核的设计,值得我们持续关注。

作者:洛逸

评论

我要赞赏作者

请扫描二维码,使用微信支付哦。