赞
踩
Linux Control Group 简介 一文介绍了如何使用 cgroup 限制进程的资源:cpu,memory,block IO 和 network IO。在宿主机看来,基于 qemu-kvm 的虚拟机就是一个进程,为了避免某些虚拟机占用过多的资源而影响了其它的虚拟机,业界常用 cgroup 限制虚拟机占用的资源。libvirt 是管理虚拟机的一个重要库,它同样依赖 cgroup 限制虚拟机的资源,本文介绍如何使用 libvirt 限制虚拟机的资源。
参考: https://libvirt.org/formatdomain.html#cpu-tuning
<domain>
...
<cputune>
<shares>2048</shares>
<period>1000000</period>
<quota>-1</quota>
</cputune>
...
</domain>
参考: https://libvirt.org/formatdomain.html#memory-tuning
<domain>
...
<memtune>
<hard_limit unit='G'>1</hard_limit>
<soft_limit unit='M'>128</soft_limit>
<swap_hard_limit unit='G'>2</swap_hard_limit>
<min_guarantee unit='bytes'>67108864</min_guarantee>
</memtune>
...
</domain>
以下 4 个参数可用于限制虚拟机的内存资源:
参考: https://libvirt.org/formatdomain.html#block-i-o-tuning
<domain>
...
<blkiotune>
<device>
<path>/dev/sda</path>
<read_bytes_sec>10000</read_bytes_sec>
<write_bytes_sec>10000</write_bytes_sec>
<read_iops_sec>20000</read_iops_sec>
<write_iops_sec>20000</write_iops_sec>
</device>
</blkiotune>
...
</domain>
以下 4 个参数可用于限制 block IO 资源。
Note:非本地存储的虚拟机由于走的是网络 IO,无法用此方法限速,可以采用 dom.setBlockIoTune() 方法限制其 block IO。
参考: https://libvirt.org/formatdomain.html#quality-of-service
<domain>
<devices>
<interface type='network'>
<source network='default'/>
<target dev='vnet0'/>
<bandwidth>
<inbound average='1000' peak='5000' floor='200' burst='1024'/>
<outbound average='128' peak='256' burst='256'/>
</bandwidth>
</interface>
</devices>
...
</domain>
限制入口流量的参数有:
限制出口流量的参数有:
峰值peak和突发值burst是可以合理计算出来的,建议的值:
peak=1.5*average
burst=peak/8*2=3average/8
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。