虚拟机 CPU 和内存资源限制会人为地对虚拟机施加约束。
内存限制
如果设置的内存限制低于虚拟机的置备内存,则该限制将被视为直接分配给此特定虚拟机的物理内存量上限。客户机操作系统并不知晓这一限制,它会将内存管理选项优化为已分配内存大小。
达到或超过此限制后,客户机操作系统仍可请求新页面,但由于此限制,VMkernel 将不允许客户机直接占用更多的物理内存,并且会认为虚拟机正在争用资源。可通过内存回收技术使虚拟机能够占用所请求的内存。
根据虚拟机请求的页面数量,在最坏的情况下,VMkernel 可能会采用 VMkernel 交换的方法来完成请求。VMkernel 会首先尝试通过扩展气球驱动程序来让客户机内存管理器决定要换出的页面,从而回收内存。在 ESX 4.1 中,VMkernel 还会在换出内存页面之前尝试压缩这些内存页面。
您可以通过运行esxtop并查看MCTLSZd、MCTLTGT、SWCUR和SWTGT以及CACHEUSD来验证内存限制所产生的影响。
CPU 限制
如果在虚拟机资源设置中设置了 CPU 限制,则当虚拟机用尽其分配的 CPU 资源时,系统会有意保留该虚拟机,而防止其调度给 PCPU。无论 CPU 利用率如何,都会发生此问题。如果将此限制设置为 500MHz,则虚拟机会从 PCPU 重新调度,并且必须等待一段时间,直到允许再次调度它为止。此时,虚拟机性能可能会下降。
注意:对于 SMP 虚拟机,所有 vCPU 的总和不能超过指定的限制。例如,如果某个虚拟机有 4 个 vCPU,限制为 1200MHz,并且各个 vCPU 的负载相同,则每个 vCPU 的最大限制为 300MHz。
您可以通过运行 esxtop 并查看 %RDY和%MLMTD 来验证 CPU 限制所产生的影响。