主机 CPID、Geast CPUID 和 UserCPUID/它们是什么?

主机 CPID、Geast CPUID 和 UserCPUID/它们是什么?

我发现每个虚拟机的 vmx 文件中有一些与 CPUID 相关联的 ID,这些 ID 是;

主机CPUID.{数字}

主机CPUID.80000001

guestCPUID.{Num}

客户CPUID.80000001

用户CPUID.{数字}

用户CPUID.80000001

我进行了一些检查和搜索,发现 guestCPUID 和 userCPUID 相同,但 hostCPUID 总是不同的,我还意识到这些 ID 是 32 个十六进制字符,包含 EDX、EAX、ECX 和 EDX

我只是想知道为什么 hostCPUID 与其他两个 ID 不同??

这些 ID 格式与 VMware 文档中解释的以二进制代码而不是十六进制编写的另一种格式( cpuid。{Num}。edx 或 cpuid。{Num}。eax )有什么不同?

我还想知道为什么某些虚拟设备的 vmx 文件中没有 CPUID,而这些虚拟设备通常以 OVF/OVA 格式提供,我们可以直接部署它??

此致,

答案1

看起来它们根本不是 ID,而是可用功能的面具:

我假设 hostCPUID 中的“主机”是主机的 CPU 向 ESXi 报告的实际原始 CPUID 位

GuestCPUID 表示向虚拟机公开的功能位。除了您的掩码之外,还会根据虚拟硬件支持的功能应用掩码。

UserCPUID 是使用二进制翻译时本地运行的客户 ring-3 代码所可见的。

vmware.log 文件中 hostCPUID、userCPUID 和 guestCPUID 行的含义

ESXi 不会向 VM 公开所有 CPU 功能,至少在使用 EVC 时不会。因此,很明显,“虚拟”CPU 的掩码与实际的原始 CPU 不同。

OVF/OVA 底层没有真正的 CPU。并且呈现给 VM 的 CPU 功能由虚拟设备部署到的环境决定。因此,它们可能只是因为没有有意义的价值而缺失。(我只是在这里猜测。)

相关内容