楼主经过把 openstack 各个版本的热迁移代码花式折腾之后发现,对于提高迁移成功率,openstack 本身能做的真的不多,本质上还是因为 openstack 是个上层建筑,受到底层的内存拷贝机制以及网络的限制。但是既然任务是优化那也只好想办法了。

前言

看这个之前需要了解openstack、libvirt、qemu、kvm之间的位置关系

目前默认使用的是传统的 ditry bitmap 模式的脏页追踪技术,造成了虚拟机规格越大迁移越困难的问题,从2020年开始 qemu 和 kvm 新增了 ditry ring 模式的脏页追踪技术,从设计上根本性的解决了这个问题

脏页追踪技术

追踪流程

vcpu —> PMU buffer —> ditry bitmap 或者 ditry ring(二选一)

ps:只能在x86上面用,因为需要PMU buffer

ditry bitmap 与 ditry ring 对比

ditry bitmap

社区默认使用 ditry bitmap ,ditry bitmap对清洁部分(空闲的)以及脏的部分(使用的)都有记录,描述的是整个虚拟机的内存

优点:1位就表示1页,所以操作效率很高,保持数据一致性的难度也比较低
缺点:1.虚拟机越大,脏页收集速度越慢,拷贝速度也越慢,开销也越大(因为脏页拷贝的时候会记录全部的内存)

ditry ring

优点:只记录脏的部分,所以与虚拟机的内存规格大小无关
缺点:数据一致性保持难度较高

本质:以CPU为指引,跟踪每一个CPU获取它最近访问的内存脏页组成一个环(即每个CPU都有一个环,去记录它的脏页),通过Mmap映射到用户态,然后让qemu共享到此环(共享实现0拷贝)

ditry ring工作机制

跟踪模式(每个vcpu都有一个脏环)

脏环维护

step1:内核态kvm负责将页的表象置为脏页(状态为dirty) -----> step2:用户态收集脏页(状态为collected) -----> step3:内核态kvm将colletced的脏页置为空(状态为empty)----> step1循环

ps:开启ditry ring的开关在qemu上,libvirt上没有

脏页速率测量

获取更准确的脏页的产生速率,决定那些虚拟机可以迁移(电信云测试结果如下)

抽样测量
间接反应脏页速率

方式:在虚拟机的区间(比如qemu的RAMBlock)设置采样点,周期性的选取若干内存页计算内容,在每一次周期性采样中对比每次同一块页的数据是否有变化,有变化就记为脏页,变化次数越多,脏的频率越高

这种方式存在假设前提(实际上这个前提可能不符合实际)
- 假设测量过程中虚拟机写内存是均匀分布的
- 假设测量过程中虚拟机只做一次写操作

缺:虚拟机规格越大,开销越高,准确性不高
优:平台通用、简单

基于 dirty ring的测量
直接反应脏页速率

方式:统计ditry ring中新增的脏页的条目,转换为内存大小,再除以时间得出脏页速率

优点:非常精准,开销小
缺点:只能在x86上用,因为dirty ring是基于x86的PMU buffer的

热迁移优化

基本上可以分为2个方向去进行热迁移优化

一、内存拷贝方向优化:

  1. 改用 ditry ring 脏页追踪 (电信云已经实现)
  2. 基于 dirty ring 的测量脏页速率(电信云已经实现)
  3. 基于 dirty ring 的新降频模式

二、网络速度方向优化:

目前还没有调研,待续吧

参考文档:
https://blog.csdn.net/huang987246510/article/details/113854928
https://live.issmart.com.cn/Live/issmart_live/#/pc?eventId=4452&liveId=f52af1a6&lang=cn&utm_source=live
https://blog.csdn.net/yadehuiyin/article/details/81382060
https://blog.didiyun.com/index.php/2019/03/07/qemu-multifd/
https://www.cnblogs.com/ccxikka/p/9477530.html

openstack虚拟机热迁移优化如何治本?相关推荐

  1. openstack虚拟机热迁移优化(victoria版)(附源码分析以及日志分析)

    优化目标 提高热迁移成功率 热迁移认知 热迁移是转移内存(或存储)的过程.源主机不断把虚拟机的内存转移到目的主机,直到源主机仅仅省一部分可以一次转移完成的内存未被转移,此时把源主机上的虚拟机暂停,转移 ...

  2. OpenStack 虚拟机热迁移流程图

    目录 文章目录 目录 源计算节点与目的计算节点之间的交互流程 Nova 和 Neutron 之间的交互流程 源计算节点与目的计算节点之间的交互流程 热迁移主要包括三个阶段: pre_live_migr ...

  3. CPU类型不同导致OpenStack虚拟机热迁移失败

    故障现象:虚拟机在不同类型CPU的服务器间热迁移时报错:InvalidCPUInfo: Unacceptable CPU info: CPU doesn't have compatibility 故障 ...

  4. OpenStack 的 SR-IOV 虚拟机热迁移

    目录 文章目录 目录 前言列表 前言 SR-IOV Pass-through 虚拟机热迁移的问题 基于 macvtap 层的 SR-IOV 虚拟机热迁移 Workaround SR-IOV Pass- ...

  5. 硬核实测 | 深信服超融合承载Oracle,重载虚拟机热迁移居然这么平滑

    云化时代,虚拟机热迁移(Live migration)是被大家广泛关注的的热点技术,作为云计算平台核心技术之一,虚拟机热迁移也是信服云一直深入钻研的底层技术. 那么信服云旗下的超融合产品在热迁移上实力 ...

  6. openstack云主机无法绑定ip_智汇华云|OpenStack 虚拟机 GPU 性能优化

    随着大数据.人工智能技术的发展,越来越多的用户产生了获取拥有GPU算力的弹性计算服务的需求,GPU云主机具有突出的图形处理和高性能计算能力,适用于科学计算.视频处理.深度学习等应用场景,受到了市场的青 ...

  7. vSphere 通过 vMotion 实现虚拟机热迁移

    在实际环境中,总会有新陈代谢,旧机器总还是躲不过时间的摧残,这就需要更换新机器,而 vMotion 是 VMware 开发出的一项独特技术,可将正在运行的虚拟机从一台服务器迁移到另一台服务器上. 若要 ...

  8. OpenStack之虚拟机热迁移

    这里的环境是centos7版本,openstack K版 1.在各个计算节点设置权限 chmod 755 /var/lib/nova/instances 2.修改各个节点的nova.conf(/etc ...

  9. OpenStack 虚拟机冷/热迁移功能实践与流程分析

    目录 文章目录 目录 前文列表 官方文档 虚拟机迁移的应用场景 需要迁移的虚拟机数据类型 虚拟机迁移的存储场景 文件存储 块存储 非共享存储 迁移的类型 迁移的方式 执行虚拟机冷迁移 冷迁移日志分析 ...

  10. Docker热迁移研究背景,问题描述及解决方案

    1.研究背景 云计算作为一种新兴的计算模式,近几年受到越来越多的关注和应用,随着云服务规模的扩大,数据中心不断的扩张,为了可以在大规模的云服务平台下有效实现负载均衡,将计算资源进行有效分配,在线迁移技 ...

最新文章

  1. POJ 1260 Pearls(DP)
  2. 探测函数 中断 linux,linux中断编程函数
  3. 烂泥:CentOS6.5挂载windows共享文件夹
  4. C# Socket服务器及多客户端连接应用例程
  5. 使用CRT调试内存分配堆来找出未释放的内存空间
  6. Qt工作笔记-QT_BEGIN_NAMESPACE与QT_END_NAMESPACE的理解
  7. 服务器多个网站开启quarz,GitHub - WuLex/QuartzSynchroData: 多个不同站点服务器数据同步到总服务器(数据中心)...
  8. ROS入门笔记(一): ROS简介
  9. iOS静态库.a文件制作和导入使用
  10. Android控件Gallery 3D效果
  11. jenkins不识别mvn命令
  12. Android 给透明png图片添加白色底色(修改像素点的形式)
  13. 奇偶归一猜想(多组数据)——又称为3n+1猜想、冰雹猜想、角谷猜想
  14. 使用navicat将mysql数据转换为postgresql
  15. 节日代码php,php 排除周末与节假日程序实例代码
  16. php 怎么验证邮箱验证码,PHP实现邮箱验证码验证功能
  17. 扫描建模在三维建模中有多厉害?
  18. revit插件建模助手的【快速工具箱】功能
  19. No module named 'torchvision.ops'的解决办法
  20. vue笔记:父子传值奥利给!

热门文章

  1. 驱动开发:内核遍历进程VAD结构体
  2. SAP BASIS ADM100 中文版 Unit 2(1)
  3. 划分离散数学定义_《离散数学》学习记录 - 集合论
  4. 成为Java GC专家系列(2) ——监控Java垃圾回收
  5. 深度学习实战8-生活照片转化漫画照片应用
  6. jsp基础之page指令,include动作(新手学习笔记)
  7. python大游戏_Python开发【项目】:大型模拟战争游戏(外星人入侵)
  8. SLAM【十】回环检测
  9. Android MVP 实践之路(理解篇)
  10. 1分钟学会系统安装方法,win7 XP win10 win11都变得非常简单