virtio-balloon 前后端源代码简单分析

本文深入探讨了virtio_balloon在KVM虚拟化中的作用,包括内存气球的膨胀(INFLATE)过程,以及主机如何通知客体释放内存页面。在分析中,解释了当guest的页面大小与balloon设备页面大小不一致时的转换规则,并通过实例展示了如何将guest的页面转换为balloon设备所理解的页帧号。
摘要由CSDN通过智能技术生成

virtio_balloon使guest的内存气球膨胀(INFLATE),即guest将自己不使用的内存放到气球中,气球中的内存就不能被guest访问,可被host使用;

host也可以将气球内的内存返还给guest,会请求guest压缩内存气球,guest把气球中的内存被释放出来,重新让guest使用。

1 kvmtoolballoon的使用

# lkvm balloon --help
 usage: lkvm balloon [-n name] [-p pid] [-i amount] [-d amount]
Instance options:
    -n, --name <name>     Instance name 
Balloon options:
    -i,  --inflate <n>     Amount to inflate (in MB)
    -d, --deflate <n>    Amount to deflate (in MB)

“lkvm balloon” 命令的处理函数 kvm_cmd_balloon,
int kvm_cmd_balloon(int argc, const char **argv, const char *prefix)
{
        if (inflate)
                amount = inflate;    // 需要 guest 放弃使用的内存量(往气球中填充的内存量)
        else if (deflate)
                amount = -deflate; // guest 可以重新使用的内存量(从气球中拿出的内存量)

        r = kvm_ipc__send_msg(instance, KVM_IPC_BALLOON, si
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值