怀德维宁

大邦维屏,大宗维翰。怀德维宁,宗子维城。

0%

【翻译】libvirt虚拟机xml配置文件格式(6)CPU Tuning

原文网址:https://libvirt.org/formatdomain.html#id8

<domain>
  ...
  <cputune>
    <vcpupin vcpu="0" cpuset="1-4,^2"/>
    <vcpupin vcpu="1" cpuset="0,1"/>
    <vcpupin vcpu="2" cpuset="2,3"/>
    <vcpupin vcpu="3" cpuset="0,4"/>
    <emulatorpin cpuset="1-3"/>
    <iothreadpin iothread="1" cpuset="5,6"/>
    <iothreadpin iothread="2" cpuset="7,8"/>
    <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>
    <vcpusched vcpus='0-4,^3' scheduler='fifo' priority='1'/>
    <iothreadsched iothreads='2' scheduler='batch'/>
    <cachetune vcpus='0-3'>
      <cache id='0' level='3' type='both' size='3' unit='MiB'/>
      <cache id='1' level='3' type='both' size='3' unit='MiB'/>
      <monitor level='3' vcpus='1'/>
      <monitor level='3' vcpus='0-3'/>
    </cachetune>
    <cachetune vcpus='4-5'>
      <monitor level='3' vcpus='4'/>
      <monitor level='3' vcpus='5'/>
    </cachetune>
    <memorytune vcpus='0-3'>
      <node id='0' bandwidth='60'/>
    </memorytune>

  </cputune>
  ...
</domain>

cputune

可选元素项cputune为虚拟机提供与cpu可调参数相关的细节设置。注意:对于qemu驱动而言,可选的vcpupin和emulatorpin绑定设置需要考虑模拟器启动和NUMA限制后再进行设置。这就意味着主机的其他物理cpu在这段时间内会被虚拟机使用,这也可以从virsh cpu-stats的输出中反映出来。自0.9.0起。

vcpupin

可选元素项vcpupin指明了虚拟机的vCPU将会被绑定到主机的哪一个物理CPU上。如果忽略该设置项,vcpu元素的cpuset属性项也没有设置,则vcpu会默认绑定到全部的物理cpu上。其包含两个所需的属性项,属性项vcpu指明了vcpu id,属性项cpuset与vcpu元素的cpuset属性项是完全一致的。qemu自0.9.0起被支持,xen自0.9.1起被支持。

emulatorpin

可选元素项emulatorpin元素指明了主机的拿个物理cpu是模拟器,这是不包含虚拟机的vcpu和iothreads绑定的cpu的子集。如果忽略该项设置,也没有设置vcpu的cpuset属性项,模拟器将会默认绑定到全部的物理cpu上。emulatorpin包含了一个必须的属性项cpuset用于指明要绑定到哪一个物理cpu中。

iothreadpin

可选元素项iothreadpin指明了IOThreads将会被绑定到哪一个物理cpu上。如果忽略该设置,且vcpu元素项的cpuset属性项也没有设置,IOThreads将会默认绑定到全部的物理cpu上。这里存在两个必须的属性项,属性项iothread指明了IOThread ID,属性项cpuset指明了绑定的物理cpu。可查看IOThreads Allocation章节查看iothread的有效值。自1.2.9起。

shares

可选元素项shares指明了虚拟机的比例加权份额。如果忽略该项设置,默认使用操作系统提供的默认值。注意,这个值没有单位,是建立在其他虚拟机设置上的相对量度。一个设置为2048的虚拟机将会相对另一个设置为1024的虚拟机得到两倍长的cpu时间。这个值得范围是2-262144.自0.9.0起。

period

可选元素项period指明了执行间隔(单位:毫秒)。在该元素项内,虚拟机的每一个vcpu都不允许消耗超过配额的运行时间。该值的范围是1000-1000000.设置为0则意味着未设置数值。qemu自0.9.4起支持,lxc自0.9.10起支持。

quota

可选元素项quota指定了最大允许带宽(单位:毫秒)。quota设置为负值的虚拟机表明对于其vcpu线程具有无限制的带宽,即其不受带宽控制。该值的范围是1000-17592186044415或小于0.quota为0意味着未设置数值。可使用该特征确保所有的vcpu以相同速度运行。qemu自0.9.4起支持,lxc自0.9.10起支持。

global_period

可选元素项global_period指定整个虚拟机的强制CFS调度程序间隔(单位:微秒),与强制每个vCPU间隔的period形成对比。该值的范围是1000-1000000.global_period设置为0意味着未设置数值。qemu自1.3.3起支持。

global_quota

可选元素项global_quota指明了全虚拟机在周期时间内的最大允许带宽(单位:毫秒)。global_quota设置为负值的虚拟机表明虚拟机具有无限制的带宽,即其不受带宽控制。该值的范围是1000-17592186044415或小于0.global_quota为0意味着未设置数值。qemu自1.3.3起支持。

emulator_period

可选元素项emulator_period指明了强制间隔(单位:毫秒)。使用emulator_period设置,则虚拟机的模拟器线程(包括vcpu)不允许消耗超过emulator_quota的运行时间。该值的范围是1000-1000000.为0意味着未设置数值。qemu自0.10.0起支持.

emulator_quota

可选元素项emulator_quota指明了虚拟机模拟器线程(包括vcpu)最大允许带宽(单位:毫秒)。带有负值emulator_quota设置的虚拟机的模拟器线程(包括vcpu)拥有无限带宽,即其不受带宽控制。值范围是1000-17592186044415或小于0.quota设置为0意味着未设置值。qemu自0.10.0起支持.

iothread_period

可选元素项iothread_period指明了IOThreads的强制间隔(单位:毫秒)。使用iothread_period,虚拟机的每一个IOThreads不允许消耗超过iothread_quota设置的运行时间。该值的范围是1000-1000000.设置为0意味着未设置该值。自2.1.0起支持qemu。

iothread_quota

可选元素项iothread_quota指明了IOThreads的最大允许带宽(单位:毫秒)。iothread_quota为负值的虚拟机表明虚拟机IOThreads具有无限带宽,即其不受带宽控制。该值的范围是1000-17592186044415或小于0.设置为0意味着未设置该值。可使用该特征确保全部IOThreads以相同速度运行。自2.1.0起支持qemu。

vcpusched/iothreadsched/emulatorsched

可选元素项vcpusched、iothreadsched和emulatorsched分别指明了特定vcpu、iothread和模拟器线程的调度类型(值为batch、idle、fifo和rr)。对于vcpusched和iothreadsched,属性项vcpus和iothreads选择了该设置适用于哪些vCPUs/IOThreads,其余的设置为默认值。元素项emulatorsched不具有该属性。vcpus的有效值为0到虚拟机中设置的vcpu数量减一。iothreads的有效值在IOThreads Allocation章节中有过描述。如果未定义iothreadids,然后libvirt将IOThreads编号从1到虚拟机可用的iothreads进行计数。对于实时调度(fifo、rr),也需指定优先级(非实时调度可忽略)。优先级的范围依赖于主机内核(通常为1-99)。自1.2.13起。emulatorsched自5.3.0起。

cachetune(自4.1.0起)

可选元素项cachetune使用主机上的restctrl控制cpu缓存分配。是否支持此功能可以从一些限制(如最小尺寸和所需粒度)的功能中获取。必需的属性项vcpus指定了本次分配适用于哪一个vcpu。一个vcpu只能是一个cachetune元素分配项的成员。cachetune指定的vCPU可以与memorytune 中的vCPU相同,但不允许重复指定。可选的、仅输出的id属性唯一标识缓存。支持以下子元素:

cache

该可选元素项控制cpu缓存分配并具有以下属性项:

level

用于分配的主机缓存等级。

id

用于分配的主机缓存id。

type

分配的类型。code代表指令,data代表数据。both则同时代表两者。当前分配类型只能与主机支持的类型保持一致,意味着不能在启用cdp(指令、数据优先级)的主机上使用both类型。

size

分配区域大小。默认值以字节为单位,但是unit属性项可用来缩放该值。

unit(可选)

如果unit设置为KiB、MiB、GiB或TiB(在Memory Allocation中的memory元素中描述),则size的默认值为字节。

monitor(自4.10.0起)

可选元素项monitor为当前缓存分配创建缓存管理器并拥有如下所需属性:

level

monitor所属的主机缓存等级。

vcpus

vcpu列出了monitor的适用范围。一个monitor的vcpu列表只能是相关分配的vcpu列表的一部分。默认的管理器与相关的分配具有相同的vcpu列表。对于非默认monitor,不允许重复定义vcpu。

memorytune(自4.7.0起)

可选元素项memorytune可使用主机上的resctrl控制内存带宽分配。是否支持此功能可以从一些限制(如最小尺寸和所需粒度)功能中获取。必需的属性项vcpus指定了本次分配适用于哪一个vcpu。一个vcpu只能是一个memorytune元素分配项的成员。memorytune指定的vCPU可以与cachetune中的vCPU相同,但不允许重复指定。支持以下子元素:

node

该元素控制cpu内存带宽分配,拥有以下属性。

id

分配内存带宽的主机节点id。

bandwidth

节点中用于分配的内存带宽。该值默认以百分比为单位。

本章节描述了用来代表作用域的xml文件格式,根据运行的作用于种类的格式变化,有一些可选配置项用来加载文件。对于特定虚拟机的细节可以查看
相关文件