我目前正在对已迁移到 AWS 的 Web 应用程序进行一些性能测试。
我们注意到的一件事是 vCPU 性能似乎没有我们预期的那么好。事实上,在高利用率的单 vCPU 机器上,我们认识到 50% 的报告 CPU 使用率(通过 vmstat)被报告为 CPU 窃取。我们似乎只获得了一半的核心周期。
经过一些研究,似乎在大多数 EC2 实例上,vCPU 实际上意味着您可以在单个内核上获得一个可用的超线程。实际上,这意味着每个 vCPU 只能依赖物理内核 50% 的周期。
我们发现有几篇文章似乎证实了我们所看到的:http : //www.pythian.com/blog/virtual-cpus-with-amazon-web-services/
vCPU 真的只是一个核心上的单个超线程,还是我们错误地解释了数据?如果是真的,是否有任何实例类型可以让我们真正访问内核的两个超线程?
显然,我们可以设置双倍 vCPU 数量的 EC2 实例,但这会影响软件许可,因为我们运行的专有软件目前由内核授权。软件供应商目前不区分 vCPU 和核心。我们不想支付两倍的许可费用,因为我们的基础设施提供商和软件供应商的 CPU 定义不一致。
vcpu multi-core hyperthreading amazon-ec2 amazon-web-services
我正在配置需要大约 12 个内核才能运行的软件,但我在 vSphere 虚拟机上运行它,这意味着最多可以配置 8 个(虚拟)内核。 [1] 将在其上运行的物理机有 24 个可用内核,并且仅托管一个其他虚拟机。该 VM 也分配了 8 个内核。
由于我的机器有 8 个内核,而另一台机器有 8 个内核,这意味着 8 个内核似乎完全空闲。这似乎是错误的。
我猜 VMWare 做了一些聪明的事情——尽管我只能为我的机器分配 8 个内核,但实际上,如果后端有 24 个内核,那么我保证会得到其中的 8 个,但是如果没有其他机器在使用它们,则可以使用其中的 24 个。
我一直在阅读有关在 vSphere 中共享的内容,[2] 但这有点超出我的理解。
任何人都可以解释这是如何工作的吗?
编辑:这是我得到的关于 8 个 CPU 限制的解释,但我需要确认一下。
vSphere 使用动态处理器负载平衡,允许来宾中的每个分配的核心访问主机上的所有核心。虽然来宾操作系统只能看到 8 个物理处理器,但每个处理器都可以访问 24 个内核池。这与大型机的工作方式非常相似。
这暗示 8 核的行为更像 24 核,但现在这似乎是错误的。是吗?
参考:
我最近将一台 HP 服务器从一个二手 CPU 插槽(4 核 + HT = 8 核)升级到 2 个二手 CPU 插槽(16 核)。
但是,我只能为 VM 分配 8 个内核。当设置 16 时,它在“新 VM 向导”中默认返回 8,当从现有 VM 更改它时,它显示红色警告:“比物理 CPU 多的 VCPU 可能导致 VM 性能降低”。单击确定仍将其默认为 8 核而不是 16 核。

然而,我的 xenhost (dom0) 确实分配了 16 个 CPU,并且实际上可以识别它们。

我想知道为什么我无法向一台机器添加超过 8 个 vCPU。
在进行服务器升级之前,我也能够分配 8 个 vCPU,因此它不能与 HT 相关。
我一直在寻找在 KVM 来宾之间划分 CPU 的方法,而不仅仅是设置 vCPU 访问限制。我理解 cpu_shares 的概念,它可以用 设置/显示virsh schedinfo,但我也发现vcpu_period并vcpu_quota列出了这个命令,如下所示:

查看手册页,我知道可接受的输入值是什么,但是有人可以简单解释一下这两个参数的实际作用吗?
我们的 VMware 管理员告诉我,我们可以向 VM 添加额外的虚拟 CPU 内核,但他们告诉我,我们无法减少虚拟 CPU 内核的数量。
最近有人表示,“另一方面,CPU 是一个更大的问题,因为虽然您可以添加 CPU 内核,但一旦完成就无法将其删除。” 在询问了几个原因后,他说:“对于 CPU 加减问题,这是几乎所有操作系统版本的限制,与 VMware 版本无关。”
我的问题是,我们是否可以减少 CentOS 6.8 虚拟机的 CPU 内核数量,而无需重新安装或重新配置操作系统。
网络搜索对我来说几乎没有。大多数搜索结果都是关于在操作系统中添加虚拟 CPU 内核或禁用 CPU。
我的动机... 有时,我们的 VM 会遇到性能问题(例如,这个 VM 正在运行 Jenkins),我们需要快速解决我们的性能问题。要求更多的 VMware 资源(至少是暂时的)变成了一个缓慢而痛苦的过程,因为管理员说一旦他们给了我们,他们就无法收回。
感谢您提供任何帮助!
我知道这是与 vCPU 相关的,但即便如此,从逻辑上讲,拥有 4 个插槽和一个内核也是没有意义的。在我看来,这听起来更像是您用单核 CPU 填充其中一个插槽并打开 3 个插槽。
我有一种预感,我对套接字的定义是错误的。我认为插座相当于将 CPU 插入主板上的插座;我认为核心是指一个子 CPU,例如 n 核处理器上的子 CPU。
我想知道 vCPU 是如何工作的以及它如何“连接”到真实的 CPU - ESXi 如何管理真实的 CPU 硬件资源以满足 vCPU 需求?vCPU 是否使用所有可用内核、多线程等?我在哪里可以找到任何描述 vCPU 性能的特定算法的文档?VMware 站点充满了文档,我知道我在那里看过,但我只找到了有关配置 vCPU 的内容 - 但我想知道“幕后”会发生什么。
找到这篇文章:http : //www.zdnet.com/virtual-cpus-the-overprovisioning-penalty-of-vcpu-to-pcpu-ratios-4010025185/但我需要更仔细地研究。
vcpu ×7
vmware-esxi ×2
amazon-ec2 ×1
centos6 ×1
cpu-usage ×1
multi-core ×1
virsh ×1
xenserver ×1