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