![OpenStack 中每个 core/vcpu 可以运行多少个虚拟机](https://linux22.com/image/805303/OpenStack%20%E4%B8%AD%E6%AF%8F%E4%B8%AA%20core%2Fvcpu%20%E5%8F%AF%E4%BB%A5%E8%BF%90%E8%A1%8C%E5%A4%9A%E5%B0%91%E4%B8%AA%E8%99%9A%E6%8B%9F%E6%9C%BA.png)
我正在开发一个模拟工具来模拟云环境中的虚拟机行为和迁移。
我使用 DevStack 在大学廉价的常规硬件 PC 上部署了一个包含 4 个节点的小型 OpenStack 集群。我记得我无法运行比实际可用的 vCPU 更多的虚拟机。我不确定这是 DevStack 的限制还是因为我使用的是常规 PC 硬件。
假设每个 VM 只有一个 CPU,那么我可以在具有 2 个芯片、每个芯片 8 个内核(总共 16 个内核)和每个内核 2 个硬件线程(总共 32 个硬件线程)的 CPU 的主机上运行多少个 VM,如 [1] 中的规格?
我可以运行 32 个虚拟机(每个虚拟机一个 CPU)吗?我可以运行更多虚拟机吗?每个硬件线程/核心可以运行多少个虚拟机?
[1] 示例中使用的规格:http://www.spec.org/power_ssj2008/results/res2012q4/power_ssj2008-20121031-00575.html
多谢。
答案1
OpenStack 确实允许您过度使用 CPU 资源但你可以超额承诺的金额可能会受到限制本地配置。默认情况下,该比例为 16:1,这意味着您可以在所有正在运行的虚拟机上为每个物理 CPU 核心运行最多 16 个虚拟 CPU 核心。
由于大多数工作负载对 CPU 的占用并不大,因此过度使用 CPU 通常是合理的。但有些工作负载可能非常占用 CPU,对于这些工作负载,您可能需要限制过度使用。大学生运行的东西通常属于这一类... :)
如果将过量使用比率改为 1:1,那么您将无法过量使用 CPU,并且运行的 vCPU 数量将不会超过物理 CPU 核心数量。这似乎是您的 DevStack 问题最有可能的解释。
还要注意,单个虚拟机的 vCPU 数量不能超过计算节点中现有的物理 CPU 数量。但运行的虚拟机数量超过物理 CPU 核心数量则没有问题。