当前位置: 首页 > news >正文

qemu热迁移后内存占用突增问题

1.问题描述

虚拟机配置了memoryBacking=memfd的情况下,热迁移虚拟机后,在目的节点 qemu-kvm 进程占用 rss 会突增很多。

如果去掉这个配置没这个现象。

<memoryBacking><source type='memfd'/>
</memoryBacking>

2.问题现象

2.1 不配置 memoryBacking=memfd的情况
  • 热迁移前 rss 占用如下:

在这里插入图片描述

  • 热迁移后 rss 占用如下:

在这里插入图片描述
可以看到 rss 占用还有所减少(减小原因是迁移过程中对 零页面 进行了lazy 处理),迁移前后变化不大, 多次反复迁移rss占用基本维持在 400M 左右。

2.2 配置 memoryBacking=memfd的情况

在这里插入图片描述

  • 热迁移前 rss 占用如下:
    在这里插入图片描述
  • 热迁移后 rss 占用如下:

在这里插入图片描述
可以看到 rss 占用突然 从 468M 增到 1087M, 多次反复迁移rss占用基本维持在 1080M 左右。

3.问题分析

迁移前 memfd 占用如下:
在这里插入图片描述
迁移后 memfd 占用如下:

在这里插入图片描述
可以看出,迁移前后内存突增基本是来自memfd的 rss 占用

如下图,qemu代码中中对memfd 申请的内存,都是非匿名的:

在这里插入图片描述

如下图代码,是qemu迁移时候,对全零页的处理,对于 memfd 申请的内存,调用 buffer_is_zero() 函数会出发缺页异常,因而会进行内存分配。

在这里插入图片描述

4.结论

使用了memfd的虚拟机,热迁移后qemu内存rss占用会增大到虚拟机设置大小,原因是热迁移时候会读取整个虚拟机内存页面,对于memfd内存,读操作会分配物理页面,而mmap分配的普通匿名内存则不会。


文章转载自:
http://bastioned.hfytgp.cn
http://barbule.hfytgp.cn
http://carrel.hfytgp.cn
http://castle.hfytgp.cn
http://candela.hfytgp.cn
http://ascender.hfytgp.cn
http://bursiculate.hfytgp.cn
http://alexipharmic.hfytgp.cn
http://chalicosis.hfytgp.cn
http://cheapskate.hfytgp.cn
http://chlorite.hfytgp.cn
http://anking.hfytgp.cn
http://asynchronous.hfytgp.cn
http://badmash.hfytgp.cn
http://bandoeng.hfytgp.cn
http://alder.hfytgp.cn
http://cantillate.hfytgp.cn
http://automorphic.hfytgp.cn
http://alter.hfytgp.cn
http://blending.hfytgp.cn
http://aeroengine.hfytgp.cn
http://certificate.hfytgp.cn
http://abound.hfytgp.cn
http://androgynous.hfytgp.cn
http://applicable.hfytgp.cn
http://antispasmodic.hfytgp.cn
http://arrester.hfytgp.cn
http://cellulase.hfytgp.cn
http://accordionist.hfytgp.cn
http://bimensal.hfytgp.cn
http://www.dtcms.com/a/187433.html

相关文章:

  • C++23 ranges::range_adaptor_closure:程序定义的范围适配器闭包的辅助类
  • Starrocks的主键表涉及到的MOR Delete+Insert更新策略
  • 【阿里云】阿里云 Ubuntu 服务器无法更新 systemd(Operation not permitted)的解决方法
  • 【PostgreSQL数据分析实战:从数据清洗到可视化全流程】金融风控分析案例-10.4 模型部署与定期评估
  • 从HTTP轮询到WebSocket:如何让体育API性能提升100倍?
  • 【Python 中文编码】
  • 关于网站提交搜索引擎
  • Protobuf工具
  • C语言 ——— 函数栈帧的创建和销毁
  • Kafka 解惑
  • 你对于JVM底层的理解
  • Python面向对象编程(OOP)深度解析:从封装到继承的多维度实践
  • Room持久化库:从零到一的全面解析与实战
  • 5. 动画/过渡模块 - 交互式仪表盘
  • 车载网关作为车辆网络系统的核心枢纽
  • spark MySQL数据库配置
  • 基于 Amazon Bedrock 和 Amazon Connect 打造智能客服自助服务 – 设计篇
  • 涌现理论:连接万物的神秘力量
  • Kafka、RabbitMQ、RocketMQ的区别
  • 地址簿模块-01.需求分析
  • python训练营day23
  • Spark,RDD中的行动算子
  • 深度剖析:Vue2 项目兼容第三方库模块格式的终极解决方案
  • 正则表达式常用验证(一)
  • 【python】—conda新建python3.11的环境报错
  • 无人机信号监测系统技术解析
  • 【Java】网络编程(Socket)
  • Mac上安装Mysql的详细步骤及配置
  • git-gui界面汉化
  • android 权限配置