virtio_balloon使guest的内存气球膨胀(INFLATE),即guest将自己不使用的内存放到气球中,气球中的内存就不能被guest访问,可被host使用;
host也可以将气球内的内存返还给guest,会请求guest压缩内存气球,guest把气球中的内存被释放出来,重新让guest使用。
1 kvmtool中balloon的使用
# 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