我目前正在对已迁移到 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