我目前正在对已迁移到 AWS 的 Web 应用程序进行一些性能测试。
我们注意到的一件事是,vCPU 性能似乎并不像我们预期的那样好。事实上,在一台高利用率的单 vCPU 机器上,我们发现报告的 CPU 使用率(通过 vmstat)中有 50% 被报告为 CPU 窃取。我们似乎只获得了一半的核心周期。
经过一番研究,我们发现在大多数 EC2 实例中,vCPU 实际上意味着您在单个核心上获得了一个可用的超线程。实际上,这意味着每个 vCPU 只能依赖物理核心周期的 50%。
我们发现了几篇文章似乎证实了我们所看到的情况: http://www.pythian.com/blog/virtual-cpus-with-amazon-web-services/
vCPU 实际上只是核心上的单个超线程,这是真的吗?还是我们对数据的解释有误?如果是真的,是否有任何实例类型可以让我们真正访问核心的两个超线程?
显然,我们可以设置具有双倍 vCPU 数量的 EC2 实例,但这会对软件许可产生影响,因为我们运行的专有软件目前是按核心许可的。软件供应商目前不区分 vCPU 和核心。我们不想支付双倍的许可费用,因为我们的基础设施提供商和软件供应商的 CPU 定义不一致。
答案1
我从亚马逊得到确认,vCPU 实际上是单核上的单个超线程。
顺便说一句,这对我们正在合作的软件供应商(最大的企业公司之一)来说是个新闻,他们很好地调整了在 AWS 环境中运行的软件的许可条款。