我在多台服务器上部署了openstack。每个服务器有2个CPU,每个8个核心,每个16个线程。如果我打开超线程,我可以在openstack部署中使用多少个最大vCPU,这样我就不会过度使用任何VM的任何vCPU。
答案 0 :(得分:0)
<强> 超线程 强>
我建议不要在使用KVM时开启超线程,但我有偏见。当超线程和kvm都很年轻时,围绕vcpu和超线程出现了许多问题。
为清楚起见,超线程只是在linux内核中创建一个软逻辑处理器,以便在cpu处理队列中达到更高的效率。
过度使用,vCPU和逻辑CPU
vCPU是分配给虚拟机的虚拟cpu。
逻辑CPU是逻辑上分配给主机系统Linux内核的CPU。
正如超线程所见,有时逻辑CPU数量超过主机上的物理CPU或核心。
从技术上讲,当你拥有比物理内核更多的vcpu内核时,你就过度承诺。注意我是怎么说的物理核心,而不是逻辑CPU。在proc / cpuinfo中,linux显示的内容可能无法准确反映可用的物理内核,部分归功于超线程。
由于kvm分配vCPU,默认情况下它们不会设置任何类型的CPU关联。这意味着,vCPU将用于当时linux中哪个逻辑处理器最可用。如果有人开始制作'MAKE = make -j64'世界类型的工作,你可能会看到一些非常重要的利用率,并开始在任何给定指令集的最可用的逻辑CPU周围发射软管。
现在,如果你有一个8个物理核心盒,托管4个虚拟机,2个vCPU一块,这很好。但想想启用超线程会发生什么......现在你有16个逻辑CPU,但只有8个核心。当您再启动4个虚拟机时会发生什么?您冒着让虚拟机直接影响其邻居的资源可用性的风险。这在技术上是过度使用的。
如果你不必,不要过度使用。
还要考虑主持人的需求。您可能希望在执行CPU密集型操作时在主机系统上设置cpu_affinity,并将该物理内核视为专用于HOST,并将其从可用于VM的可用(最大)vCPU计数中减去。
了解如何使用任务集设置亲和力:
参考:http://manpages.ubuntu.com/manpages/hardy/man1/taskset.1.html
每个虚拟机的最大vCPU
至于cpu配额,这基本上是你的虚拟机管理程序而不是OpenStack的功能。你需要通过CFM和一些仔细的计划来处理这个问题。
例如,RedHat调整自己的KVM包:
每个guest虚拟机支持的最大虚拟CPU数量不尽相同 取决于您所使用的Red Hat Enterprise Linux 6的次要版本 用作主机。最新推出的6.0版本 64,而6.3最多推出160.目前随着发布 6.7,每个guest虚拟机最多支持240个虚拟CPU。
以下是有关调整PER vm cpu /资源分配的一些信息
参考:http://libvirt.org/formatdomain.html#elementsCPUAllocation