![使用 vSphere Hypervisor 进行资源分配](https://linux22.com/image/1431432/%E4%BD%BF%E7%94%A8%20vSphere%20Hypervisor%20%E8%BF%9B%E8%A1%8C%E8%B5%84%E6%BA%90%E5%88%86%E9%85%8D.png)
我正在一台旧 PC 上构建家庭服务器(Core 2 Duo E6600 处理器、4GB RAM、两个硬盘,每个 VM 一个),我的一个 VM 遇到了问题。我目前有两个 VM,一个运行 Untangle OS,另一个运行 Windows Server 2008 R2。Untangle VM 运行完美,但 Server 2008 非常慢,除了 OS 之外几乎没有安装任何东西(我想我只安装了防病毒软件,它只按需扫描)。
尽管这台 PC 很旧,但我确信它应该可以很好地运行 Server 2008,尽管如果我错了,您可以纠正我。我阅读了有关处理器的资料,发现它实际上有 2 个物理处理器和每个物理处理器中的 2 个逻辑处理器(不确定到底有什么区别)。话虽如此,我认为它实际上有四个处理器可以分配给我的虚拟机。然后我为 Untangle VM 分配了 1 个处理器和 1 GB RAM,为 Server 2008 分配了 3 个处理器和 3GB RAM。Windows Server 几乎无法使用。然后我从一位同事那里了解到,当分配给两个不同的物理处理器时,进程实际上可能会冻结,因为数据很难通过每个物理插槽(不确定是否正确)。他建议我在该虚拟机上只放置 2 个处理器,以便所有数据都可以在同一个物理处理器上处理。这似乎解决了一点问题,但我仍然遇到虚拟机运行非常缓慢的某些时间片段。它一波一波地出现。我可能会运行病毒扫描,它在前 30 分钟内运行得非常快,但随后速度就会慢很多,当它完成时,我几乎甚至无法打开 Windows 资源管理器。
我还为装有 Server 2008 的 VM 保留了 4800 MHz(不确定这是否真的意味着两个完整的处理器,因为它们每个以 2.4GHz 的速度运行),但我对这种资源预留的概念不太熟悉。
我想知道虚拟机资源是否分配正确(我认为不是,但这只是一种感觉),或者这仅仅是一台旧电脑并且在运行 Windows Server 2008 时会遇到麻烦。
如果我使用了错误的术语或混淆了概念,请原谅我,因为我对虚拟化世界还很陌生。
谢谢您的帮助,
路易斯
答案1
评论太长了,所以我将其添加为答案。
您的 CPU 是双核 CPU,每个核的时钟频率为 2.4GHz 或 2400MHz。[1] 这相当于在任何给定时间的总处理速度为 4800Mhz。一般来说,操作系统负责管理计算机的资源。VMWare ESXi 是一个裸机操作系统,又称虚拟机管理程序。基本上,这意味着它没有太多东西,这就是为什么你可以将 ESXi 安装到 1GB SD 卡上(如果你真的想要的话)。[2]
在管理 CPU 资源时,有一种称为调度程序的东西,它控制进程在 CPU 上运行的方式和时间。ESXi 在其内核中内置了一个调度程序。[4] 只要调度程序有足够的处理能力,为所有正在运行的进程提供所需的 CPU 时间,一切就都很好。如果需要完成的工作多于计算机可以立即处理的工作量,计算机就会开始运行缓慢并且没有响应。当 ESXi 中发生这种情况时,内核就会开始对物理 CPU 核心进行时间分片,以便所有虚拟机都有机会运行它们需要的指令。[3]
既然我们都知道计算机是通过魔法来工作的,那么一切都应该正常工作,对吗?
那么让我们这样来看:您当前有两个虚拟机,并且拥有 4800MHz 的 CPU 能力供它们共享。哎呀,差点忘了 ESXi...因此,这意味着工作站上总共有三台计算机在运行。这三台计算机都试图使用 4800MHz 的总可用频率的一部分。好消息是,在大多数情况下,应该有足够的频率可供使用,因为最多操作系统并不总是利用 100% 的 CPU。
现在来看看坏消息:您已告诉 ESXi 将所有 4800MHz 的 CPU 时间提供给 Windows 客户虚拟机,无论它是否可用。实际上,这不会给其他两个虚拟机留下任何可用资源。然后,ESXi 将对物理 CPU 进行时间分割,以便其他虚拟机也可以运行。这种时间分割实际上不会影响 Untangle 或 ESXi,因为它们在需要时以所需的方式运行。它确实会影响 Windows 虚拟机,因为当它尝试执行某项操作时,它会被 ESXi 调度程序在多个短时间间隔内中途停止。这里或那里的小中断并不明显,但它每秒会反复发生很多次,这也许可以解释为什么 Windows 虚拟机有时如此迟缓。
您的同事对您的机器的诊断并不完全正确,因为它只有一个插槽和一个 CPU,尽管他推荐的解决方案朝着正确的方向迈出了一步。将虚拟 CPU 数量从 3 减少到 2 有所帮助,因为您“过度配置”了 CPU 资源。基本上,您关于 CPU 预留的配置也叫这个名字。要解决这个问题,您需要将预留降低到大约 1000MHz,并将 CPU 限制设置在 3000-3800MHz 之间。这样做可能无法解决您所有的缓慢问题,但它应该有所帮助。
资料来源:
[1] http://ark.intel.com/products/27250/Intel-Core2-Duo-Processor-E6600-4M-Cache-2_40-GHz-1066-MHz-FSB
[2] http://pubs.vmware.com/vsphere-55/index.jsp#com.vmware.vsphere.install.doc/GUID-DEB8086A-306B-4239-BF76-E354679202FC.html
[3] http://pubs.vmware.com/vsphere-55/index.jsp?topic=%2Fcom.vmware.vsphere.resmgmt.doc%2FGUID-DFFA3A31-9EDD-4FD6-B65C-86E18644373E.html
[4] http://www.vmware.com/files/pdf/techpaper/VMware-vSphere-CPU-Sched-Perf.pdf