当前位置: 首页 > 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分配的普通匿名内存则不会。

相关文章:

  • 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.需求分析
  • 白天气温超30℃的北京,晚间下起了冰雹
  • 著名连环画家庞邦本逝世
  • 220名“特朗普币”持有者花1.48亿美元,获邀与特朗普共进晚餐
  • 金俊峰已跨区任上海金山区委副书记
  • 中美经贸中方牵头人、国务院副总理何立峰出席新闻发布会表示:中美达成重要共识,会谈取得实质性进展
  • 中方发布会:中美经贸高层会谈氛围是坦诚的、深入的、具有建设性的