我在 VMware ESXi 3.5 下运行 FreeBSD 7.2。主机有 2 个物理 CPU,BSD 盒是当前唯一运行的 VM。仅为 VM 分配了一个虚拟 CPU。
当测量特定程序的 CPU 时间时,我有时会得到非常不同的结果。VMware 根据系统负载报告不同的处理器使用情况。是否可以将物理 CPU 的固定份额分配给特定 VM?我希望 CPU 时间大致恒定。我在 VMware Infrastructure Client 中配置 VM 时尝试设置 CPU 预留,但 CPU 时间仍然有很大差异。
提前致谢!
答案1
实际使用的实际(物理)CPU 时间将始终反映客户机中运行的任何负载所需的需求,预留保证没有其他 VM(或 Hypervisor\Console)会拒绝该 VM 的预留,但这并不意味着可用的 CPU 资源将实际使用。预留更像是潜在资源周围的逻辑围栏,而不是明确分配的数量。也就是说,即使 VM 什么都不做,预留也应该相当一致地分配预留的资源,所以当您说您获得不稳定的 CPU 时间测量值时,您在哪里测量的?即使在预留的情况下,您也不能相信从 VM 内部获得的任何数字,因为分配资源的进程通常会破坏 VM 内的内部计时器,您最好从 Hypervisor 的角度看待问题。对于 ESX 3.5,esxtop 是您最好的起点。
答案2
我在将 MS SQL Server 设置为虚拟机时遇到了这个问题。我们的服务器团队告诉我,没有办法保证任何一台虚拟机的 CPU 时间具有特定百分比。实际 CPU 资源差异很大(响应时间也因此不同),所以我最终使用了物理服务器。