cli: --cputune: add support for host cpu usage quotas

This includes support for the following options:
* `shares`
* `period`
* `quota`
* `global_period`
* `global_quota`
* `emulator_period`
* `emulator_quota`
* `iothread_period`
* `iothread_quota`
This commit is contained in:
Hugues Fafard 2021-08-06 16:56:21 +02:00 committed by Cole Robinson
parent ddcdd39dcb
commit 5cfbbf5701
4 changed files with 50 additions and 2 deletions

View File

@ -238,6 +238,15 @@
</keywrap>
<on_lockfailure>ignore</on_lockfailure>
<cputune>
<shares>2048</shares>
<period>1000000</period>
<quota>-1</quota>
<global_period>1000000</global_period>
<global_quota>-1</global_quota>
<emulator_period>1000000</emulator_period>
<emulator_quota>-1</emulator_quota>
<iothread_period>1000000</iothread_period>
<iothread_quota>-1</iothread_quota>
<vcpupin vcpu="0" cpuset="0-3"/>
<emulatorpin cpuset="1,7"/>
<iothreadpin iothread="1" cpuset="1,7"/>
@ -493,6 +502,15 @@
</keywrap>
<on_lockfailure>ignore</on_lockfailure>
<cputune>
<shares>2048</shares>
<period>1000000</period>
<quota>-1</quota>
<global_period>1000000</global_period>
<global_quota>-1</global_quota>
<emulator_period>1000000</emulator_period>
<emulator_quota>-1</emulator_quota>
<iothread_period>1000000</iothread_period>
<iothread_quota>-1</iothread_quota>
<vcpupin vcpu="0" cpuset="0-3"/>
<emulatorpin cpuset="1,7"/>
<iothreadpin iothread="1" cpuset="1,7"/>

View File

@ -515,7 +515,11 @@ cell0.distances.sibling1.id=1,cell0.distances.sibling1.value=21,\
numa.cell1.distances.sibling0.id=0,numa.cell1.distances.sibling0.value=21,\
cell1.distances.sibling1.id=1,cell1.distances.sibling1.value=10,\
cache.mode=emulate,cache.level=3
--cputune vcpupin0.vcpu=0,vcpupin0.cpuset=0-3,emulatorpin.cpuset=1,7,iothreadpin0.iothread=1,iothreadpin0.cpuset=1,7,cachetune0.vcpus=0-3,cachetune0.cache0.level=3,cachetune0.cache0.id=0,cachetune0.cache0.type=both,cachetune0.cache0.size=3,cachetune0.cache0.unit=MiB,memorytune0.vcpus=0-3,memorytune0.node0.id=0,memorytune0.node0.bandwidth=60,vcpusched0.vcpus=0-3,^2,vcpusched0.scheduler=fifo,vcpusched0.priority=95
--cputune shares=2048,period=1000000,quota=-1,global_period=1000000,global_quota=-1,emulator_period=1000000,emulator_quota=-1,iothread_period=1000000,iothread_quota=-1,\
vcpupin0.vcpu=0,vcpupin0.cpuset=0-3,emulatorpin.cpuset=1,7,iothreadpin0.iothread=1,iothreadpin0.cpuset=1,7,\
cachetune0.vcpus=0-3,cachetune0.cache0.level=3,cachetune0.cache0.id=0,cachetune0.cache0.type=both,cachetune0.cache0.size=3,cachetune0.cache0.unit=MiB,\
memorytune0.vcpus=0-3,memorytune0.node0.id=0,memorytune0.node0.bandwidth=60,\
vcpusched0.vcpus=0-3,^2,vcpusched0.scheduler=fifo,vcpusched0.priority=95
--iothreads iothreads=2,iothreadids.iothread1.id=1,iothreadids.iothread2.id=2
--metadata title=my-title,description=my-description,uuid=00000000-1111-2222-3333-444444444444,genid=e9392370-2917-565e-692b-d057f46512d6
--boot cdrom,fd,hd,network,menu=off,loader=/foo/bar,emulator=/new/emu,bootloader=/new/bootld,rebootTimeout=3,initargs="foo=bar baz=woo",initdir=/my/custom/cwd,inituser=tester,initgroup=1000,firmware=efi

View File

@ -2400,6 +2400,17 @@ class ParserCputune(VirtCLIParser):
@classmethod
def _init_class(cls, **kwargs):
VirtCLIParser._init_class(**kwargs)
# Resource quotas
cls.add_arg("shares", "shares")
cls.add_arg("period", "period")
cls.add_arg("quota", "quota")
cls.add_arg("global_period", "global_period")
cls.add_arg("global_quota", "global_quota")
cls.add_arg("emulator_period", "emulator_period")
cls.add_arg("emulator_quota", "emulator_quota")
cls.add_arg("iothread_period", "iothread_period")
cls.add_arg("iothread_quota", "iothread_quota")
# Options for CPU.vcpus config
cls.add_arg("vcpupin[0-9]*.vcpu", "vcpu",
find_inst_cb=cls.vcpu_find_inst_cb)

View File

@ -91,9 +91,24 @@ class DomainCputune(XMLBuilder):
Class for generating <cpu> XML
"""
XML_NAME = "cputune"
_XML_PROP_ORDER = ["vcpus", "emulatorpin_cpuset", "iothreadpin",
_XML_PROP_ORDER = ["shares", "period", "quota",
"global_period", "global_quota",
"emulator_period", "emulator_quota",
"iothread_period", "iothread_quota",
"vcpus", "emulatorpin_cpuset", "iothreadpin",
"cachetune", "memorytune", "vcpusched"]
# Resource quotas
shares = XMLProperty("./shares", is_int=True)
period = XMLProperty("./period", is_int=True)
quota = XMLProperty("./quota", is_int=True)
global_period = XMLProperty("./global_period", is_int=True)
global_quota = XMLProperty("./global_quota", is_int=True)
emulator_period = XMLProperty("./emulator_period", is_int=True)
emulator_quota = XMLProperty("./emulator_quota", is_int=True)
iothread_period = XMLProperty("./iothread_period", is_int=True)
iothread_quota = XMLProperty("./iothread_quota", is_int=True)
vcpus = XMLChildProperty(_VCPUPin)
iothreadpin = XMLChildProperty(_IOThreadPin)
cachetune = XMLChildProperty(_CacheTuneCPU)