vSphere 7 – vMotion增强功能

vSphere vMotion功能使客户能够将工作负载从源实时迁移到目标ESXi主机。随着时间的推移,我们开发了vMotion以支持新技术。vSphere 7版本也不例外,因为我们极大地改进了vMotion功能。vSphere 7中的vMotion增强功能包括在实时迁移过程中降低的性能影响和减少的眩晕时间。这篇博客文章将详细介绍vMotion的改进如何帮助客户轻松使用vMotion处理大型工作负载。

vSphere 7 – vMotion增强功能-VirtualVMW

要了解我们在vSphere 7中针对vMotion进行了哪些改进,必须了解vMotion内部。阅读高级vMotion流程以了解有关vMotion流程本身的更多信息。

大型VM vMotion挑战

vSphere是承载大型虚拟机(VM)(也称为“ Monster” VM)的理想平台,当前每个VM资源的最大值设置为256个vCPU和6 TB的内存。但是,我们注意到在大型VM中运行工作负载的客户并不总是很愿意实时迁移这些VM。这是由于在vMotion流程中可能会对工作负载性能产生影响,并且切换(stun)时间花费的时间过长。

例如,在vMotion期间,处理大量I / O的大型事务数据库平台可能会出现性能下降,尽管精确的影响很大程度上取决于工作负载的特性和规模。vSphere 7中增强的vMotion逻辑克服了所有这些挑战,使我们能够实时迁移大型工作负载,而不会对性能或可用性产生重大影响。

内存预复制优化

我们需要在vMotion操作期间跟踪VM的所有更改的内存页面。由于这是实时迁移,因此VM内的来宾OS将在vMotion期间继续将数据写入内存。我们需要跟踪并重新发送在vMotion期间被覆盖的内存页面。

vSphere 7 – vMotion增强功能-VirtualVMW

vMotion进程在为虚拟机配置的所有vCPU上安装页面跟踪程序。这样,vMotion可以了解正在覆盖哪些内存页面。在页面跟踪期间,这称为“页面触发”。我们正在将跟踪工作分配给实时迁移的VM的所有vCPU。

如何在vSphere 7中做到这一点

最大的影响来自必须停止所有vCPU进行页面跟踪。如果我们可以安装页面跟踪程序而无需停止所有vCPU,该怎么办?在vSphere 7中,我们引入了“宽松的页面跟踪安装”。页面跟踪的方法基本保持不变,但是现在不使用所有vCPU,而是仅声明一个vCPU来执行所有跟踪工作。有权使用VM的所有其他vCPU只会继续运行工作负载而不会中断。

vSphere 7 – vMotion增强功能-VirtualVMW

页面跟踪程序将安装在一个声明的vCPU上,并将所有PTE设置为只读。TLB是特定于vCPU的,因此每个vCPU仍需要刷新其TLB。但这发生在不同的时间,以最大程度地减少影响。总体而言,此方法效率更高,因为仅使用一个vCPU进行页面跟踪。

页表粒度

因此,我们降低了跟踪成本,但是如果我们可以提高跟踪效率呢?我们优化了将内存设置为只读的方式,这意味着该部分要做的工作较少。更少的工作意味着更高的效率。在vSphere 7之前,将内存设置为只读的方式为4KB页面粒度。所有单个4KB页面都需要设置为只读访问。

vSphere 7 – vMotion增强功能-VirtualVMW

从vSphere 7开始,虚拟机监视器(VMM)进程将在1GB页面上以更大的粒度设置只读标志。如果发生页面火灾(覆盖内存页面),则将1GB PTE分为2MB和4KB页面。VMware工程师已经发现,在vMotion流程中,VM通常不会占用其所有内存。vMotion期间的内存工作集大小通常仅为10%至30%。如果在vMotion时间内使用了更多的内存,则成本效率将会降低。

切换相位增强

到目前为止,我们讨论的所有增强功能都是在内存预复制阶段完成的,在该阶段进行跟踪。一旦达到内存融合,这意味着几乎所有内存都已复制到目标主机,vMotion准备就绪,可以切换到目标ESXi主机。在此最后阶段,源ESXi主机上的VM被挂起,并将检查点数据发送到目标主机。请记住,我们希望切换时间(激励时间)为1秒或更短。对于大型VM,这是一个挑战,因为工作负载大小随着时间的推移而增加。

在切换阶段,我们发送检查点数据和内存位图。内存位图用于跟踪VM的所有内存。它知道哪些页面将被覆盖,仍然需要将其传输到目标ESXi主机。当vMotion传输最后的内存页面时,目标主机上的VM开始启动。但它可能仍需要剩下最后几页进行传输。为了在目标上标识这些页面,我们使用从源传输来的位图。如果客户过量使用内存,则会在可选的交换位图中跟踪换出的页面。

vSphere 7 – vMotion增强功能-VirtualVMW

内存位图是稀疏的。它包含最后一个内存页以及VM正在使用的所有内存页的信息。具有1GB内存的VM的内存位图大小为32KB。传输毫秒只需32毫秒:没问题!

vSphere 7如何做到的

对于运行6TB内存的VM(或未来可能更多),位图已经是192MB。为了将切换时间保持在1秒以内,我们需要使位图较小,因为发送192MB以上的数据可能需要一秒钟或更长时间。如果我们可以压缩位图并仅发送您真正需要的信息怎么办?

vSphere 7 – vMotion增强功能-VirtualVMW

在此阶段,我们已经复制了大多数内存页面,因此仅需要发送最后剩余的内存页面。使用压缩的内存位图,vMotion能够在几毫秒内发送大型VM的位图,从而大大减少了眩晕时间。

性能改进

vSphere 7中对vMotion的这些增强允许实时迁移工作负载,而在vMotion期间几乎没有性能下降。下图是一个测试示例,向您展示了在vSphere 7中潜在的性能提升。测试平台是运行HammerDB工作负载的大型VM(72 vCPU / 512GB)。我们以1秒的粒度在时间轴上监视提交/秒。

与vSphere 6.7相比,我们在vSphere 7的此测试过程中注意到的几个关键要点是:

  • 在页面跟踪阶段,我们不再遇到性能影响。
  • 眩晕时间保持在1秒以内,而不是花费数秒。
  • 整个实时迁移时间几乎缩短了20秒。
vSphere 7 – vMotion增强功能-VirtualVMW

您的里程可能会有所不同,具体取决于vMotion网络配置和VM大小,但这是一个示例性测试,旨在显示这些vMotion改进的潜在好处。

结论

vSphere 7在vMotion中所做的改进是巨大的,并大大降低了为vMotion支付的成本。除了将系统升级到vSphere 7外,您不需要享受新的和改进的vMotion逻辑就可以了。

发表评论

电子邮件地址不会被公开。 必填项已用*标注