zoukankan      html  css  js  c++  java
  • QEMU KVM Libvirt手册(8): 半虚拟化设备virtio

    KVM本身并不提供半虚拟化功能,是通过virtio来实现的

    The benefits of virtio drivers are of lower overhead and higher performance.

    Memory Ballooning (virtio_balloon)

    memory ballooning可以动态调整guest的内存的大小

    如果有-m参数,则向更大的内存调整时无效的,但是可以往小的里面调整

    我们首先ssh到guest里面

    ip netns exec qrouter-26a45e0e-a58a-443b-a972-d62c0c5a1323 ssh -i openstack.pem ubuntu@192.168.0.35

    在虚拟机里面看内存的大小

    ubuntu@testinject19:~$ free
                 total       used       free     shared    buffers     cached
    Mem:       2051748     478276    1573472          0      46620     345908
    -/+ buffers/cache:      85748    1966000
    Swap:            0          0          0

    在Monitor上看balloon的大小

    root:/home/cliu8# virsh qemu-monitor-command instance-00000024 --hmp "info balloon"
    balloon: actual=2048

    我们试图往大里调整

    root:/home/cliu8# virsh qemu-monitor-command instance-00000024 --hmp "balloon 4096"

    发现无效

    root:/home/cliu8# virsh qemu-monitor-command instance-00000024 --hmp "info balloon"
    balloon: actual=2048

    ubuntu@testinject19:~$ free
                 total       used       free     shared    buffers     cached
    Mem:       2051748     478276    1573472          0      46628     345920
    -/+ buffers/cache:      85728    1966020
    Swap:            0          0          0

    我们往小里调整内存

    root:/home/cliu8# virsh qemu-monitor-command instance-00000024 --hmp "balloon 1024"

    发现生效了

    root:/home/cliu8# virsh qemu-monitor-command instance-00000024 --hmp "info balloon"
    balloon: actual=1024

    ubuntu@testinject19:~$ free
                 total       used       free     shared    buffers     cached
    Mem:       1003172     470796     532376          0      46636     345920
    -/+ buffers/cache:      78240     924932
    Swap:            0          0          0

    有了balloon,如果guest需要更多的RAM,则可以给它增加一些内存。如果guest不需要那么多内存,可以通过balloon从中拿出一部分内存。这个过程,不需要启停虚拟机。

    balloon driver像是一个特殊的process,运行在guest机器上,它可以扩大自己的内存,使得其他的应用程序的内存减少,也可以缩小内存,使得其他的应用程序内存增加。

    balloon-expanded

    balloon-shrink

    guest中的balloon driver通过virtio channel和host进行交互,接收host发来的命令,比如发来的命令式减少内存,则balloon driver就扩大它的内存占有量。

    然后balloon driver将自己占有的内存交回给host,使得host有了更多的内存。

    balloon-chunk

    对于libvirt而言,有currentMemory和maxMemory两种概念,maxMemory就是-m参数设定的,currentMemory就是balloon设定的。

    Para-virtualized network interface cards (virtio_net)

    -netdev tap,fd=32,id=hostnet0,vhost=on,vhostfd=37
    -device virtio-net-pci,netdev=hostnet0,id=net0,mac=fa:16:3e:d1:2d:99,bus=pci.0,addr=0x3

    Para-virtualized block devices (virtio_blk)

    -drive file=/var/lib/nova/instances/1f8e6f7e-5a70-4780-89c1-464dc0e7f308/disk,if=none,id=drive-virtio-disk0,format=qcow2,cache=none
    -device virtio-blk-pci,scsi=off,bus=pci.0,addr=0x4,drive=drive-virtio-disk0,id=virtio-disk0,bootindex=1

  • 相关阅读:
    c语言练习24——数列求和
    Excel 常用属性的一小部分
    常见问题一之拼接表格 js传递参数变量 Json接收值
    关于下拉列表HtmlDownlistFor的使用
    Quay 基础版安装和部署
    Prometheus使用blackbox_exporter监控端口及网站状态(七)
    在CentOS 8上安装PostgreSQL 13 | RHEL 8
    nfs配置以及No route to host解决
    LNMP分离安装
    Linux配置和管理设备映射多路径multipath
  • 原文地址:https://www.cnblogs.com/popsuper1982/p/3840630.html
Copyright © 2011-2022 走看看