searchusermenu
  • 发布文章
  • 消息中心
点赞
收藏
评论
分享

初识Virtio Balloon

2023-06-03 03:44:18
204
0

本文主要介绍了什么是KVM virtio balloon driver

首先,如果你从没听过这个概念,那什么是balloon driver呢?它是一种给予guest实例或者从guest实例中获取RAM的方法。(理论上来讲),如果你的guest实例需要更多的RAM,你可以通过balloon driver给他分配更多的内存,或者如果宿主机需要在guest实例中取走一下内存,balloon driver也可以做到。这些操作的执行不需要暂停或者重启guest实例。

virtio_balloon是一个在guest实例中的内核驱动。这个driver表现的像一种奇怪的进程,要么扩展自己的内存使用,要么压缩自己的内存使用接近什么也没有,如下图所示:
balloon-expanded

balloon-shrink

当balloon driver扩张时,运行在guest实例中的应用会突然少了很多可用内存,然后guest实例会像没有多少内存时做的那样,交换内存并启动OOM killer(balloon本身是不可交换并且不会被杀掉的)。

那么这个“浪费”内存的内核驱动程序有什么意义呢?有两点——
第一,驱动通过virtio通道与宿主机通讯,宿主机给其下发指令,比如扩展到指定的大小、现在开始缩小。guest实例配合操作,但是并不直接控制balloon。
第二,balloon中的内存也从guest实例中取消映射,并传回宿主机,因此宿主机可以将这部分内存传递给其他的guest实例使用。看起来就像guest虚机的内存缺失了一块一样:

balloon-chunk

Libvirt有两个配置项,currentMemorymaxMemory(详见Memory Allocation):

balloon-labels

maxMemory(或<memory>)是在guest实例启动阶段分配的内存。KVM和Xen的guest虚机目前(译者注:原文发布时间是2010-07-17 14:33)无法找过这个内存上限。currentMemory控制了请求分配给guest实例上应用程序的内存。balloon填充剩余的内存,并且把这部分内存还给宿主机,用于宿主机的在其他地方使用。

该项配置可以手动调整,或者通过编辑XML文件,或者通过virsh setmem命令。

0条评论
0 / 1000
二柱
5文章数
1粉丝数
二柱
5 文章 | 1 粉丝

初识Virtio Balloon

2023-06-03 03:44:18
204
0

本文主要介绍了什么是KVM virtio balloon driver

首先,如果你从没听过这个概念,那什么是balloon driver呢?它是一种给予guest实例或者从guest实例中获取RAM的方法。(理论上来讲),如果你的guest实例需要更多的RAM,你可以通过balloon driver给他分配更多的内存,或者如果宿主机需要在guest实例中取走一下内存,balloon driver也可以做到。这些操作的执行不需要暂停或者重启guest实例。

virtio_balloon是一个在guest实例中的内核驱动。这个driver表现的像一种奇怪的进程,要么扩展自己的内存使用,要么压缩自己的内存使用接近什么也没有,如下图所示:
balloon-expanded

balloon-shrink

当balloon driver扩张时,运行在guest实例中的应用会突然少了很多可用内存,然后guest实例会像没有多少内存时做的那样,交换内存并启动OOM killer(balloon本身是不可交换并且不会被杀掉的)。

那么这个“浪费”内存的内核驱动程序有什么意义呢?有两点——
第一,驱动通过virtio通道与宿主机通讯,宿主机给其下发指令,比如扩展到指定的大小、现在开始缩小。guest实例配合操作,但是并不直接控制balloon。
第二,balloon中的内存也从guest实例中取消映射,并传回宿主机,因此宿主机可以将这部分内存传递给其他的guest实例使用。看起来就像guest虚机的内存缺失了一块一样:

balloon-chunk

Libvirt有两个配置项,currentMemorymaxMemory(详见Memory Allocation):

balloon-labels

maxMemory(或<memory>)是在guest实例启动阶段分配的内存。KVM和Xen的guest虚机目前(译者注:原文发布时间是2010-07-17 14:33)无法找过这个内存上限。currentMemory控制了请求分配给guest实例上应用程序的内存。balloon填充剩余的内存,并且把这部分内存还给宿主机,用于宿主机的在其他地方使用。

该项配置可以手动调整,或者通过编辑XML文件,或者通过virsh setmem命令。

文章来自个人专栏
二柱杂谈
5 文章 | 1 订阅
0条评论
0 / 1000
请输入你的评论
1
1