gpt4 book ai didi

linux - Intel VMX中KVM如何调度多个VM?

转载 作者:塔克拉玛干 更新时间:2023-11-03 02:03:38 24 4
gpt4 key购买 nike

我正在通过 Linux KVM 学习 Intel VMX。
而且我无法清楚地理解 KVM(Linux)如何调度在同一主机上同时运行的多个虚拟机。
例如宿主机有1个物理CPU,有2个KVM虚拟机,每个虚拟机配置1个vCPU。
一旦启动,KVM/QEMU 会为每个 vCPU 配置一个 VMCS,因此 KVM 中有 2 个 VMCS。由于只有 1 个 pCPU,因此 KVM/Linux 必须对每个 vCPU 进行 1 1 1 的调度。
我的理解是当 vCPUa 运行时,vCPUa 的 KVM VMPTRLD VMCS,并运行 VM 的代码。然后,要调度vCPUb,KVM将vCPUa的VMPTRST VMCS传到某处,vCPUb的VMPTRLD VMCS从某处传来。
通过阅读 KVM 的代码,我没有找到 vCPU 调度的 VMPTRLD/VMPTRST 发生在哪里,以及什么是“某处”。

最佳答案

vmptrld在arch/x86/kvm/vmx.c中的vmx_vcpu_load
vmresume 在 vmx_vcpu_run 中

关于linux - Intel VMX中KVM如何调度多个VM?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50774234/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com