description/virt: Multi-Kernel Architecture

This commit is contained in:
Cheng Jian committed 2025-09-25 18:31:26 +08:00
1 parent 4e5b8ab0c8
commit b5ba1d051a
1 file changed
+21
+21
View File
@@ -264,6 +264,27 @@ Anbox 使用 Linux 命名空间 (user, pid, uts, net, mount, ipc) 在容器中
| 2023/03/30 | David Dai <davidai@google.com> | [Improve VM DVFS and task placement behavior](https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git/log/?id=4fd06a5358e0d888d1bf23d274971ea7d1f45aad) | 这组补丁的主要目的是改善虚拟机(VM)中的动态电压频率调节(DVFS)和任务调度行为, 使其表现接近于直接在主机上运行. 旨在解决虚拟机中工作负载的任务调度和 DVFS 行为不如直接在主机上运行时那么理想的问题. 具体来说, 当工作负载在虚拟机中运行时, 其任务调度和频率调节策略不如直接在主机上运行时有效, 导致性能和功耗表现不佳. 通过改进这些方面, 可以显著提升虚拟环境中工作负载的性能和能效.<br>1. 准确的负载跟踪: 让虚拟机内核能够更准确地跟踪主机 CPU 的架构类型、频率等信息, 以进行更精确的负载评估.<br>2. 共享 vCPU 运行队列利用率信息: 将虚拟 CPU(vCPU)的运行队列利用率信息共享给主机, 主机能够更好地了解虚拟机内部的工作负载情况, 并据此调整调度策略.<br>3. 频率调节优化(改进 DVFS 行为): 确保虚拟机中的工作负载能够享受到与主机相同级别的频率调节优化, 从而提高性能和能效.<br>参见 [LPC 2022 演讲 "CPUfreq/sched and VM guest workload problems](https://lpc.events/event/16/contributions/1195), 以及 phoronix 报道 [phoronix, 2024/11/24, Virtual CPUFreq Driver Coming With Linux 6.13 For Better Power/Performance Within VMs](https://www.phoronix.com/news/Linux-6.13-Virtual-CPUFreq) 和 [phoronix, 2023/03/31, Google Posts KVM-CPUFreq Driver To Dramatically Boost VM Performance, Power Efficiency](https://www.phoronix.com/news/KVM-CPUFreq-RFC-Patches). | v1 ☐☑✓ v6.13-rc1 | [2023/03/30, LORE v1,0/6](https://lore.kernel.org/all/20230330224348.1006691-1-davidai@google.com)<br>*-*-*-*-*-*-*-* <br>[2023/03/30, LORE v2,0/6](https://lore.kernel.org/all/20230331014356.1033759-1-davidai@google.com)<br>*-*-*-*-*-*-*-* <br>[2023/07/31, LORE v3,0/2](https://lore.kernel.org/all/20230731174613.4133167-1-davidai@google.com)<br>*-*-*-*-*-*-*-* <br>[2023/11/10, LORE v4,0/2](https://lore.kernel.org/all/20231111014933.1934562-1-davidai@google.com)<br>*-*-*-*-*-*-*-* <br>[2024/01/26, LORE v5,0/2](https://lore.kernel.org/all/20240127004321.1902477-1-davidai@google.com)<br>*-*-*-*-*-*-*-* <br>[2024/05/20, LORE V6,0/2](https://lore.kernel.org/all/20240521043102.2786284-1-davidai@google.com)<br>*-*-*-*-*-*-*-* <br>[2024/09/18, LORE v7,0/2](https://lore.kernel.org/all/20240919000837.1004642-1-davidai@google.com) |
# 14 Multi-Kernel Architecture
-------
这个比较想法比较老了, 早在 2002 年, Larry McVoy 就在邮件列表中提出了用于 Linux 的 cache-coherent clusters, 在一台机器上运行 multiple "OSlets", 参见 [LKML, 2002/06/19](https://lwn.net/Articles/4536).
2013 年, Virginia Tech 的研究团队首次在 64 位 x86 机器上支持 Linux 内核的多个实例并支持 4 个以上内核同时运行. 参见 [Popcorn Linux Distributed Thread Execution](https://lore.kernel.org/all/cover.1588127445.git.javier.malave@narfindustries.com).
2025 年, Multikernel Technologies Inc 向社区提交了 [Multikernel Goes Open Source: Community-First Innovation](https://multikernel.io/2025/09/18/multikernel-goes-open-source) 方案, 几天后, 字节立即公布了 [parker: PARtitioned KERnel](https://lore.kernel.org/all/20250923153146.365015-1-fam.zheng@bytedance.com) 方案. 两者相比较, Parker 更倾向于静态分区方案, 启动时旧分配好了 CPU/内存/设备, 运行中不再变化. 这样简化了实现和隔离, 但是可能导致资源利用率不高.
| 时间 | 作者 | 特性 | 描述 | 是否合入主线 | 链接 |
|:---:|:----:|:---:|:----:|:---------:|:----:|
| 2020/04/29 | Javier Malave <javier.malave@narfindustries.com> | [Popcorn Linux Distributed Thread Execution](https://lore.kernel.org/all/cover.1588127445.git.javier.malave@narfindustries.com) | 在 Linux 内核中引入 **Popcorn Linux 分布式线程执行** 支持. Popcorn Linux 是由 Virginia Tech 的研究团队开发, 基于 David Katz 的原始论文 [2013, Popcorn: a replicated-kernel OS based on Linux](https://www.kernel.org/doc/ols/2014/ols2014-barbalace.pdf) 和 [2013/05/31, Popcorn Linux: enabling efficient inter-core communication in a Linux-based multikernel operating system](https://vtechworks.lib.vt.edu/items/3c7e76a9-7be5-463c-8a86-79db7e900a63), 支持应用程序在多个主机上运行并动态迁移线程, 具备跨节点共享一致虚拟内存的能力.<br>补丁集基于 Linux 5.2 版本, 目前仅支持 x86 架构, 实现了一个软件级的分布式共享内存系统, 采用读复制/写失效机制维护内存一致性. 当前版本暂时关闭了 L1TF 缓解机制, 后续将予以支持. 同时, 补丁包含新的系统调用、消息层(基于 TCP 的 socket 实现) 、页面与虚拟内存管理服务等. 参见 LWN 报道 [LWN:引人眼球的Popcorn Linux能合入kernel吗?](https://blog.csdn.net/Linux_Everything/article/details/106247623), 仓库地址 [ssrg-vt/popcorn-kernel](https://github.com/ssrg-vt/popcorn-kernel) | v1 ☐☑✓ | [2020/04/29, LORE v1, 0/9](https://lore.kernel.org/all/cover.1588127445.git.javier.malave@narfindustries.com) |
| 2025/09/18 | Cong Wang <xiyou.wangcong@gmail.com><br>Multikernel Technologies Inc | [kernel: Introduce multikernel architecture support](https://lore.kernel.org/all/20250918222607.186488-1-xiyou.wangcong@gmail.com) | 引入"多内核架构(multikernel architecture)"支持的补丁集, 旨在使多个独立内核实例能够在同一台物理机上共存并通信. 每个多内核实例可绑定至特定 CPU 核心, 共享硬件资源, 通过增强的 kexec 子系统加载和管理.<br>主要特性包括: 改进工作负载间的故障隔离、增强安全性、比传统虚拟机更优的资源利用率, 以及支持通过 KHO 实现无宕机内核更新. 补丁集核心内容涵盖 kexec 支持多内核加载、x86 引导机制、通用 IPI 通信框架、物理 CPU ID 获取、动态 kimage 追踪及 `/proc` 接口. 参见 [phoronix, 2025/09/21, Multi-Kernel Architecture Proposed For The Linux Kernel](https://www.phoronix.com/news/Linux-Multi-Kernel-Patches) 和 [LWN, 20250923, Multiple kernels on a single system](https://lwn.net/Articles/1038847), [Multikernel Goes Open Source: Community-First Innovation](https://multikernel.io/2025/09/18/multikernel-goes-open-source/) | v1 ☐☑✓ | [2025/09/18, LORE v1, 0/7](https://lore.kernel.org/all/20250918222607.186488-1-xiyou.wangcong@gmail.com) |
| 2025/09/23 | Fam Zheng <fam.zheng@bytedance.com> | [parker: PARtitioned KERnel](https://lore.kernel.org/all/20250923153146.365015-1-fam.zheng@bytedance.com) | 字节提出了一项名为 **Parker( Partitioned Kernel)** 的新特性, 旨在支持在单一机器上同时运行多个 Linux 内核实例, 无需传统 KVM 虚拟化. 通过将 CPU、内存和设备资源分区, 由一个"启动内核"( Boot Kernel) 分配资源, 其他"应用内核"(Application Kernel) 各自使用专属资源, 彼此无共享、无通信, 提升可扩展性.<br>主要特点包括:<br>1. 使用 **kexec** 加载内核镜像至预留内存;<br>2. 通过 **kernfs** 提供配置接口;<br>3. 各内核可独立配置优化, 适配不同工作负载; <br>4. 目前缺乏硬件级隔离, 存在安全与容错风险. <br>Parker 适用于高核心数机器, 解决扩展性问题. 参见 [phoronix, 2025/09/23, Bytedance Proposes "Parker" For Linux: Multiple Kernels Running Simultaneously](https://www.phoronix.com/news/Linux-Parker-Proposal). | v1 ☐☑✓ | [2025/09/23, LORE v1, 0/5](https://lore.kernel.org/all/20250923153146.365015-1-fam.zheng@bytedance.com) |
<br>
* 本作品 / 博文 ([AderStep - 紫夜阑珊 - 青伶巷草 Copyright ©2013-2017](http://blog.csdn.net/gatieme) ), 由 [成坚 (gatieme)](http://blog.csdn.net/gatieme) 创作.