高业务负载虚拟机热迁移如何做到平滑?



​4 月 29 日, 信服云研发技术专家 Frank.Lee 在信服云《Tech Talk · 云技术有话聊》系列直播课上进行了《高业务负载虚拟机热迁移的挑战和优化实践》的分享, 详细介绍了原生 QEMU 在高业务负载虚拟机热迁移场景里面临的挑战、导致高业务负载虚拟机热迁移困难的原因、信服云的优化实践经验分享等内容。以下是他分享的内容摘要, 想要了解更多可以关注「深信服科技」公众号回顾本期直播。

一、虚拟机热迁移技术介绍

热迁移是指把虚拟机从一个物理主机 (源主机) 迁移到另一个物理主机 (目的主机), 分为:只迁移虚拟机运行位置的同存储热迁移、同时迁移虚拟机运行位置和存储位置的跨存储热迁移。在热迁移过程中, 虚拟机业务不会中断, 最后的停机迁移阶段, 虚拟机会有短暂的停顿, 热迁移完成后, 虚拟机会在目的主机上继续运行。

随着越来越多的用户将核心业务部署到云平台, 用户对业务的停机时间要求越来越高, 甚至提出了零停机的能力要求。尤其是在物理主机维护、云平台热升级、云平台调度集群内虚拟机运行位置等场景中, 虚拟机热迁移操作的性能影响、迁移结果、资源消耗、迁移时长都会影响云平台的使用体验。

二、挑战和优化实践

挑战 1:算法效率低下

原生 QEMU 热迁移内存数据使用的压缩算法是 zlib, 它单核的压缩性能低,QEMU 压缩线程的 CPU 消耗高。这些会导致:性能无法满足高负载场景, 在带宽受限场景下可能无法热迁移完成, 会严重消耗物理主机的 CPU 资源, 导致物理主机其它业务系统性能下降。

信服云提出了 QEMU 热迁移压缩算法替换为 lz4 的优化实践方法, 这使得速率提升 7 倍以上,CPU 消耗降低 80%。

挑战 2:脏数据放大

QEMU 在迁移磁盘数据时, 会通过 BITMAP 来记录磁盘脏数据块, 原生 QEMU 的磁盘 BITMAP 对应数据块的粒度大小是 1M, 假设某个数据块中有 4K 数据发生修改,BITMAP 也会将整个数据块 (1M 大小) 标记为脏, 后续就需要迁移这 1M 的数据, 由此带来了磁盘脏数据放大问题。

针对这个挑战, 信服云实现了磁盘热迁移 BITMAP 数据块粒度动态调整机制, 将 BITMAP 数据块粒度做成迁移前动态可配置,BITMAP 数据块粒度默认值从 1M 改为 64K。

挑战 3:CPU 空耗

原生 QEMU 进行跨存储热迁移, 在增量迭代迁移阶段, 热迁移流程会遍历磁盘每个数据块, 检测其状态是否为脏;在磁盘热迁移进入到增量迭代的最后阶段, 如果磁盘数据块总量比较多, 而剩余脏数据块量比较少时, 热迁移线程的 CPU 大量消耗在干净数据块的无效遍历。在 Oracle 场景的实测结果, 这里会导致 60% 以上的 CPU 额外消耗。

信服云改进了磁盘脏数据块的检索机制, 对磁盘脏数据块维护一个多级检索位图;磁盘热迁移时, 对脏数据块的检测方式, 由遍历检测改为直接对脏数据块进行多级检索, 能够更高效地定位脏数据块位置。最终实现了跨存储热迁移总耗时下降 20%, 热迁移线程的 CPU 消耗下降 60%。

挑战 4:业务性能受影响时间较长

进入到增量迭代迁移阶段后, 如果内存脏数据的生成速率大于迁移速率时, 迁移就永远无法完成。原生 QEMU 通过 CPU 节流策略来解决此问题, 原生 QEMU 热迁移的 CPU 节流策略较为保守和呆板, 在高业务负载场景下,CPU 节流持续时间长, 导致业务性能持续受到影响。

信服云实现了一套新的 CPU 节流策略, 在热迁移过程中引入直接节流和阶段式节流两种节流方式, 替换 QEMU 默认的节流策略, 大幅缩短切换 downtime 时间, 大约在 2s 内。

挑战 5:热点内存的重复无效迁移

现在的业务系统在架构设计方面大多都遵循内存局部性原理, 内存局部性原理分为:时间局部性和空间局部性。根据内存局部性原理, 虚拟机业务在运行过程中, 会存在大量的热点内存, 在短时间内被频繁地访问和修改。虚拟机热迁移进入到增量迭代迁移阶段时, 热点内存由于频繁修改, 在每轮迭代都会变脏而重复迁移。这会导致网络带宽和 CPU 资源的浪费, 以及热迁移时间变长。

信服云实现了一套热点内存脏数据延迟迁移机制——热点内存脏数据延迟迁移机制, 减少重复内存数据传输, 耗时缩短 30%, 内存数据量降低 35%。

三、优化实践效果总结

同存储热迁移场景

(1) 跑满万兆带宽,QEMU 压缩线程的 CPU 消耗减少 80%;

(2) 热迁移耗时减少 30%;

(3) 迁移内存总量减少 35%;

(4)Oracle 虚拟机业务性能受影响时间控制在 6s 以内。

跨存储热迁移场景

(1)Oracle 数据库场景 (8K 随机写 IO 模型), 磁盘脏数据放大率从 93 下降到 8, 大幅降低了磁盘脏数据传输量;

(2)QEMU 热迁移线程的 CPU 开销减少 60%;

(3) 跨存储热迁移总耗时减少 20%;

(4)Oracle 虚拟机磁盘迁移能力提升 10 倍。

实践证明, 深信服超融合承载的 Oracle 业务在迁移过程中性能仅抖动了 6s, 其中业务中断时间仅 1s, 上层业务可获得近乎 0 中断的平滑迁移体验。

以上就是本次直播的主要内容。




上一篇:核糖体rDNA ITS序列
下一篇:融资丨「艾捷博雅生物」完成数千万人民币A轮融