description/virt: Guest vCPU

This commit is contained in:
Cheng Jian
2025-09-27 14:48:36 +08:00
parent b5ba1d051a
commit 7981f4dbdd
+16 -6
View File
@@ -190,6 +190,17 @@ jeremy 很早就写了一个 pv ticketlock, 原理大概就是 vcpu 在拿锁了
| 2022/12/14 | Michael Roth <michael.roth@amd.com> | [Add AMD Secure Nested Paging (SEV-SNP) Hypervisor Support](https://patchwork.kernel.org/project/linux-mm/cover/20221214194056.161492-1-michael.roth@amd.com/) | 704568 | v7 ☐☑ | [LORE v7,0/64](https://lore.kernel.org/r/20221214194056.161492-1-michael.roth@amd.com) |
## 6.4 Memory Pressure
-------
| 时间 | 作者 | 特性 | 描述 | 是否合入主线 | 链接 |
|:---:|:----:|:---:|:----:|:---------:|:----:|
| 2022/08/23 | Yosry Ahmed <yosryahmed@google.com> | [KVM: mm: count KVM mmu usage in memory stats](https://patchwork.kernel.org/project/linux-mm/cover/20220823004639.2387269-1-yosryahmed@google.com/) | 669960 | v7 ☐☑ | [LORE v7,0/4](https://lore.kernel.org/r/20220823004639.2387269-1-yosryahmed@google.com) |
| 2022/09/15 | Chao Peng <chao.p.peng@linux.intel.com> | [KVM: mm: fd-based approach for supporting KVM](https://patchwork.kernel.org/project/linux-mm/cover/20220915142913.2213336-1-chao.p.peng@linux.intel.com/) | 677360 | v8 ☐☑ | [LORE v8,0/8](https://lore.kernel.org/r/20220915142913.2213336-1-chao.p.peng@linux.intel.com) |
| 2023/02/16 | Yu Zhao <yuzhao@google.com> | [mm/kvm: lockless accessed bit harvest](https://lore.kernel.org/all/20230217041230.2417228-1-yuzhao@google.com) | [Linux Patches Improve KVM Guest Performance For Hosts Under Memory Pressure](https://www.phoronix.com/news/Linux-KVM-Lockless-Accessed-Bit) | v1 ☐☑✓ | [LORE v1,0/5](https://lore.kernel.org/all/20230217041230.2417228-1-yuzhao@google.com) |
# 7 ANDROID
-------
@@ -210,15 +221,14 @@ Anbox 使用 Linux 命名空间 (user, pid, uts, net, mount, ipc) 在容器中
[Android apps on Linux with Waydroid](https://lwn.net/Articles/901459)
# 8 MEMORY
# 8 Guest vCPU
-------
| 时间 | 作者 | 特性 | 描述 | 是否合入主线 | 链接 |
|:---:|:----:|:---:|:----:|:---------:|:----:|
| 2022/08/23 | Yosry Ahmed <yosryahmed@google.com> | [KVM: mm: count KVM mmu usage in memory stats](https://patchwork.kernel.org/project/linux-mm/cover/20220823004639.2387269-1-yosryahmed@google.com/) | 669960 | v7 ☐☑ | [LORE v7,0/4](https://lore.kernel.org/r/20220823004639.2387269-1-yosryahmed@google.com) |
| 2022/09/15 | Chao Peng <chao.p.peng@linux.intel.com> | [KVM: mm: fd-based approach for supporting KVM](https://patchwork.kernel.org/project/linux-mm/cover/20220915142913.2213336-1-chao.p.peng@linux.intel.com/) | 677360 | v8 ☐☑ | [LORE v8,0/8](https://lore.kernel.org/r/20220915142913.2213336-1-chao.p.peng@linux.intel.com) |
| 2023/02/16 | Yu Zhao <yuzhao@google.com> | [mm/kvm: lockless accessed bit harvest](https://lore.kernel.org/all/20230217041230.2417228-1-yuzhao@google.com) | [Linux Patches Improve KVM Guest Performance For Hosts Under Memory Pressure](https://www.phoronix.com/news/Linux-KVM-Lockless-Accessed-Bit) | v1 ☐☑✓ | [LORE v1,0/5](https://lore.kernel.org/all/20230217041230.2417228-1-yuzhao@google.com) |
| 2025/09/10 | Shrikanth Hegde <sshegde@linux.ibm.com> | [paravirt CPUs and push task for less vCPU preemption](https://lore.kernel.org/all/20250910174210.1969750-1-sshegde@linux.ibm.com) | 通过引入"半虚拟化 CPU(Paravirt CPU)" 机制减少虚拟 CPU(vCPU) 抢占, 从而提升虚拟化环境下的任务调度效率和系统性能.<br>核心内容包括: <br>**目标**: 避免因 vCPU 抢占带来的上下文切换开销. 通过标记某些 vCPU 为 Paravirt CPU, 在系统资源紧张时不使用这些 CPU, 从而减少虚拟化环境中的任务迁移和上下文切换开销. <br><br>**实现要点**: <br>1. 引入 `cpu_paravirt_mask` 标记 Paravirt CPU. <br>2. 在调度器中避免将任务分配到 Paravirt CPU.<br>3. 使用 `push_current_from_paravirt_cpu` 将当前任务从 Paravirt CPU 推出.<br>4. 将相关功能整合进 `CONFIG_PARAVIRT` 选项, 减少 `CONFIG_HOTPLUG_CPU` 的依赖.<br>5. 添加 sysfs 接口用于配置 Paravirt CPU.<br>**性能测试结果**: 在多个虚拟机高负载竞争场景下, 相比传统 CPU 热插拔, Paravirt CPU 显著降低了任务唤醒延迟(如 99.9 百分位延迟从 6184us 降至 523us).<br>**待解决问题**: <br>1. 从 steal time 自动推导 Paravirt CPU 提示机制仍在开发中.<br>2. 需要 KVM 等虚拟化社区反馈如何获取提示. <br>3. irqbalance 需要适配 `cpu_paravirt_mask`.<br>4. 在 `nohz_full` CPU 上的行为仍需深入分析. <br><br>总结: 该补丁集通过引入 Paravirt CPU 机制, 实现了在虚拟化环境中减少 vCPU 抢占的目标, 提升了任务调度性能, 但仍需社区进一步反馈与完善提示机制. | v3 ☐☑ | [2025/09/10, LORE v3, 0/10](https://lore.kernel.org/all/20250910174210.1969750-1-sshegde@linux.ibm.com) |
# 9 Migrate
@@ -278,7 +288,7 @@ Anbox 使用 Linux 命名空间 (user, pid, uts, net, mount, ipc) 在容器中
| 时间 | 作者 | 特性 | 描述 | 是否合入主线 | 链接 |
|:---:|:----:|:---:|:----:|:---------:|:----:|
| 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) |
| 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 实现) 、页面与虚拟内存管理服务等. 参见 [phoronix, 2020/04/19, Virginia Tech's "Popcorn Linux" For Distributed Thread Execution Seeking Feedback, Possible Upstreaming](https://phoronix.com/news/Popcorn-Linux-2020-RFC), 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) |