gpt4 book ai didi

virtual-machine - KVM 如何虚拟化性能计数器 (PMC)?

转载 作者:行者123 更新时间:2023-12-03 23:18:28 31 4
gpt4 key购买 nike

我正在使用 KVM-QEMU 在英特尔平台上。
我想知道 怎么样? PMC/PMU 中被虚拟化KVM ?

我对vPMC的理解如下。

由于 PMU 是共享物理资源,因此管理程序应在 VMExit/VMEnter 期间上下文保存/恢复 PMC 配置和计数器。

但是在我的测试中,我感到困惑。

 (In my host Linux, the MSR of IA32_PERF_FIXed_CTRL is set to 0xb0)

首先,在启动的虚拟机中,

'wrmsr IA32_PERF_FIXed_CTRL 0x0b ', 启用 FIXed_CTR0在虚拟机中。
然后,我在VMExit 记录IA32_PERF_FIXed_CTRL 的MSR,发现FIXed_CTR0 未启用。

我想是因为VMExit发生时,它已经在host上下文中了,所以IA32_PERF_FIXed_CTRL的MSR是host之一,而不是host。

但问题是,VM 的 MSR 保存在主机中的何处,以及 VMEnter 期间 VM 的 MSR 何时何地恢复到 CPU?

希望我的问题很清楚。

谢谢,

最佳答案

KVM 实现了一个虚拟 PMU,它利用 Linux 的 perf 子系统进行核心 PMU 操作。它不会将主机 PMU 直接暴露给 guest 。

当您这样做时wrmsr IA32_PERF_FIXed_CTRL 0x0b ,您没有写入硬件 MSR(特定于模型的寄存器),KVM 会捕获 MSR 写入并在其虚拟 PMU 的表示中进行更新。寻找 kvm_set_msr_common()x86.c ,这最终会调用 intel_pmu_set_msr()pmu_intel.c这才是真正的魔法。还看struct kvm_pmu()这是 KVM 对 PMU 的表示。

MSR 不需要像典型的 VMCS 字段一样恢复,因为 KVM 将客户特定的 PMU 设置保存在 struct kvm_pmu() 中。每个 vCPU ( struct kvm_vcpu )。

关于virtual-machine - KVM 如何虚拟化性能计数器 (PMC)?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43405962/

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