libvirt 的“shares”元素是否考虑了 vCPU 的数量?

libvirt 的“shares”元素是否考虑了 vCPU 的数量?

根据libvirt 文档

配置为 2048 的虚拟机将获得比配置为 1024 的虚拟机多两倍的 CPU 时间。

我还听说,具有 2 个 vCPU 的虚拟机的 CPU 时间是具有 1 个 vCPU 的虚拟机的两倍。这是正确的吗?那么,“份额”元素是否也考虑到了这一点?

例如,这两种情况哪一种是正确的?

  • 1 vCPU x 10 份额 = 10 单位 CPU 时间
  • 2 vCPU x 10 份额 = 20 单位 CPU 时间
  • 1 vCPU x 20 份额 = 20 单位 CPU 时间
  • 2 vCPU x 20 份额 = 40 单位 CPU 时间

或者:

  • 1 vCPU x 10 份额 = 10 单位 CPU 时间
  • 2 vCPU x 10 份额 = 10 单位 CPU 时间
  • 1 vCPU x 20 份额 = 20 单位 CPU 时间
  • 2 vCPU x 20 份额 = 20 单位 CPU 时间

感谢您的阅读!

答案1

“shares” 可调参数是针对整个虚拟机进行计数的,包括 vCPU 数量不是已考虑在内。因此,您可能希望在扩大 vCPU 数量时扩大份额值。

请注意,这是一个相对优先级,而不是绝对的时间度量。因此,只有当您过度使用主机 CPU 时,它才会真正生效,这样来自不同来宾的 vCPU 就会相互争夺主机 CPU 时间。因此,您实际上并没有提供“NNN 个 CPU 时间单位”。它的意思是,在 2 个来宾都需要 CPU 时间并且没有足够的空闲时间满足两者的时期,可用的空闲 CPU 时间将分配给与份额比率匹配的虚拟机。

相关内容