libvirt虚拟机热迁移 您所在的位置:网站首页 在线查分 libvirt虚拟机热迁移

libvirt虚拟机热迁移

2023-08-17 09:59| 来源: 网络整理| 查看: 265

测试环境

使用物理机搭建的虚拟化系统,创建一台虚拟机,规格为64核心+64G内存+100G硬盘,对该虚拟机进行热迁移测试。

测试工具

虚拟机内安装stressapptest工具,用于对虚拟机的CPU和内存进行压力测试。该工具命令行支持的参数有:

-M mbytes:测试内存的大小。 -s seconds:运行时长。 -m threads:运行的线程数量。 auto-converge功能测试

测试命令为:

virsh migrate instance-00000092 qemu+ssh://[email protected]/system?keyfile=/var/lib/nova/.ssh/id_rsa --live --verbose --compressed --auto-converge --auto-converge-initial 20 --auto-converge-increment 10

auto-converge功能支持配置以下参数:

auto-converge-initial:初始抑制CPU频率的比例。 auto-converge-increment:CPU频率抑制比例的增量。

进行两组测试。在虚拟机内运行stressapptest工具,测试以上两个参数取不同数值,对于热迁移的影响。

压力测试持续300秒

虚拟机内部执行stressapptest -s 300 -M 40960 -m 64 -W,即测试40G内存、运行64个线程、运行300秒。热迁移结果如下表:

- 第一次测试(ms) 第二次测试(ms) 第三次测试(ms) 迁移平均耗时(ms) CPU抑制比例 不启用 360623 377804 353191 363872 0 20+10 377880 367238 352691 365936 20 30+15 367804 370674 369798 369425 30 50+15 375558 353734 366094 365128 50

以上测试,全部在stressapptest进程结束后才开始抑制CPU。

压力测试持续1800秒

虚拟机内部执行stressapptest -s 1800 -M 40960 -m 64 -W,即测试40G内存、运行64个线程、运行1800秒。热迁移结果如下表:

- 迁移平均耗时(ms) CPU抑制比例 不启用 1880362 0 20+10 1866481 99 30+15 1870586 99 50+15 1856928 99

以上测试,全部在stressapptest进程结束前就开始抑制CPU。

post-copy功能测试

使用virsh命令行迁移虚拟机,post-copy功能需要通过两步操作完成:

热迁移时,指定--postcopy参数用于启用post-copy。 virsh migrate instance-00000092 qemu+ssh://[email protected]/system?keyfile=/var/lib/nova/.ssh/id_rsa --live --verbose --compressed --postcopy 此时热迁移处于pre-copy模式,需要通过virsh migrate-postcopy instance-00000092切换到post-copy模式。

进行两组测试。在虚拟机内运行stressapptest工具,分别测试启用、禁用post-copy对于热迁移的影响。

压力测试持续300秒

虚拟机内部执行stressapptest -s 300 -M 40960 -m 64 -W,即测试40G内存、运行64个线程、运行300秒。热迁移结果如下:

不开启post-copy模式,热迁移需要363872毫秒。 开启并切换到post-copy模式,热迁移需要110721毫秒。 压力测试持续1800秒

虚拟机内部执行stressapptest -s 1800 -M 40960 -m 64 -W,即测试40G内存、运行64个线程、运行1800秒。热迁移结果如下:

不开启post-copy模式,热迁移需要1880362毫秒。 开启并切换到post-copy模式,热迁移需要123528毫秒。 异常情况测试

虚拟机内部执行stressapptest -s 300 -M 40960 -m 64 -W,即测试40G内存、运行64个线程、运行300秒。切换到post-copy模式,迁移过程中kill源节点虚拟机qemu进程。热迁移进程异常退出,目标节点虚拟机被删除,源节点虚拟机关机。源节点虚拟机开机后运行正常。

限制说明

post-copy模式和tunnelled模式不能同时使用,具体原因可参考这篇文章。

xbzrle功能测试 不开启auto-converge和post-copy模式

虚拟机内部执行stressapptest -s 300 -M 40960 -m 64 -W,即测试40G内存、运行64个线程、运行300秒。源节点打开xbzrle:

virsh qemu-monitor-command instance-00000092 --hmp "migrate_set_capability xbzrle on" virsh qemu-monitor-command instance-00000092 --hmp "migrate_set_cache_size 64m"

迁移虚拟机到目标节点:

virsh migrate instance-00000092 qemu+ssh://[email protected]/system?keyfile=/var/lib/nova/.ssh/id_rsa --live --verbose --compressed

分别测试xbzrle cache大小为64M、2G、16G、64G,对于热迁移效率的影响,结果如下:

- 迁移耗时(ms) xbzrle transferred(kbytes) 不启用xbzrle 363872 0 64M 375216 16459 2G 377491 572021 16G 391000 4793304 64G 395465 8720814

测试中发现,在第3轮拷贝内存时,才切换到xbzrle模式。

开启auto-converge模式

虚拟机内部执行stressapptest -s 300 -M 40960 -m 64 -W,即测试40G内存、运行64个线程、运行300秒。源节点打开xbzrle:

virsh qemu-monitor-command instance-00000092 --hmp "migrate_set_capability xbzrle on" virsh qemu-monitor-command instance-00000092 --hmp "migrate_set_cache_size 64m"

迁移虚拟机到目标节点,启用auto-converge模式,参数配置为20、10:

virsh migrate instance-00000092 qemu+ssh://[email protected]/system?keyfile=/var/lib/nova/.ssh/id_rsa --live --verbose --compressed --auto-converge --auto-converge-initial 20 --auto-converge-increment 10

分别测试xbzrle cache大小为64M、2G、16G、64G,对于热迁移效率的影响,结果如下:

- 迁移耗时(ms) xbzrle transferred(kbytes) 不启用xbzrle 363872 0 64M 388984 22104 2G 396148 594680 16G 385768 1697644 64G 391059 1614807 开启post-copy模式

虚拟机内部执行stressapptest -s 300 -M 40960 -m 64 -W,即测试40G内存、运行64个线程、运行300秒。源节点打开xbzrle:

virsh qemu-monitor-command instance-00000092 --hmp "migrate_set_capability xbzrle on" virsh qemu-monitor-command instance-00000092 --hmp "migrate_set_cache_size 64m"

迁移虚拟机到目标节点,启用并切换到post-copy模式:

virsh migrate instance-00000092 qemu+ssh://[email protected]/system?keyfile=/var/lib/nova/.ssh/id_rsa --live --verbose --compressed --postcopy virsh migrate-postcopy instance-00000092

分别测试xbzrle cache大小为64M、2G、16G、64G,对于热迁移效率的影响,结果如下:

- 迁移耗时(ms) xbzrle transferred(kbytes) 不启用xbzrle 363872 0 64M 115689 0 2G 113653 0 16G 106635 0 64G 109059 0

xbzrle transferred均为0 kbytes,证明未使用到xbzrle。

测试结论

本次测试过程中,未出现stressapptest进程崩溃,也未出现虚拟机崩溃、重启,测试过程未出现异常情况。

post-copy模式比auto-converge模式的迁移效率高。 auto-converge模式下,影响热迁移效率的因素有多种。增大auto-converge-initial、auto-converge-increment参数,能够尽早的抑制CPU频率,缩短迁移时间。除此之外,虚拟机的负载大小也影响热迁移效率。 对于虚拟机内存负载较高的场景,xbzrle模式无法有效提升热迁移的效率。 OpenStack nova对应配置说明 [libvirt] live_migration_tunnelled=false live_migration_permit_post_copy=true live_migration_permit_auto_converge=false

live_migration_permit_post_copy和live_migration_permit_auto_converge不能同时启用。

live_migration_tunnelled

配置为true,则使用管道模式进行热迁移。

live_migration_permit_post_copy

配置为true,则启用post-copy模式。迁移过程中,nova会计算是否需要切换到post-copy模式。计算规则为:

内存拷贝进度 = (上一轮待拷贝内存总量 - 本轮待拷贝内存总量) / 上一轮待拷贝内存总量

若内存拷贝进度小于10%,则切换到post-copy模式。热迁移过程中也可以通过执行nova live-migration-force-complete命令手动切换到post-copy模式。

live_migration_permit_auto_converge

配置为true,则使用auto-converge模式。nova不支持配置auto-converge-initial和auto-converge-increment,libvirt中对应配置的默认值为20和10。



【本文地址】

公司简介

联系我们

今日新闻

    推荐新闻

    专题文章
      CopyRight 2018-2019 实验室设备网 版权所有