Sysbench 在同级别 CPU 上,为什么 Google VM 比 AWS ec2 快得多?

Sysbench 在同级别 CPU 上,为什么 Google VM 比 AWS ec2 快得多?

sysbench --test=cpu --cpu-max-prime=20000 运行

Google VM:
标准 1 CPU(asia-east1),E5 v2 2.5G,
执行时间:~28 秒

标准 2 cpu(asia-east1),E5 v2 2.5G,
执行时间:~28 秒

AWS ec2:
m3.medium,E5 v2 2.5G,
执行时间:~59 秒

m3.large,E5 v2 2.5G,
执行时间:~28 秒

編輯:
刚才我测试了两个 m3.medium 实例和两个 m3.large 实例,发现只有 m3.medium 比较慢。我测试的所有 m3.medium 实例都很慢(~59 秒)。

答案1

在大多数小型/中型实例中,AWS 积极地在多个虚拟机之间分时共享 CPU 时间。这意味着任何在客户机端显示为“正在运行”的进程实际上在主机端都可能处于“暂停/等待”状态,从而降低总体性能。

其他云提供商似乎提供即使是小实例,其分时也稍低一些:例如,从一台小型 Azure 机器上,我获得了比类似的 AWS 实例快得多的 CPU 性能。

但是 VMS 配置/大小调整可能非常复杂,需要考虑很多选项。例如,当 AWS 机器处于空闲状态时,它会收集快速和短时间突发的“CPU 积分”。有关更多信息,请查看这里

答案2

在大多数云提供商上,当您获得常规虚拟机时,您不会获得专用资源,否则您将获得通常要昂贵得多的专用服务器。当然,这取决于提供商的实施,但一般来说,总是存在过度承诺和过度订阅。密度越高(硬件越大,虚拟机越多),您就越能稳定单个虚拟机的性能,但这一切都取决于许多因素,例如 CPU 调度算法、密度、虚拟机负载平衡等。

例如,Azure 试图为不同大小的 VM 保证一定的性能,但实际上它因许多不同的因素而有很大差异,您的 VM 并不是在硬件中单独运行的,而是与许多其他 VM 一起运行……

答案3

其他基准

我发现了一个有趣的基准这里在 VPS 基准测试中。请注意,他们的图表不公平,没有在刻度上包括 0,因此图表几乎毫无用处。测试背后的数字看起来不错。

他们的测试将 AWS t2.small(1 核,2GB RAM)与 GCE n1-standard-1 进行了比较。t2 实例与 n1 标准不是一个很好的比较,它们具有突发 CPU 性能,而 GCE 具有恒定的 CPU,但这是我能找到的唯一合适的测试。

t2 实例据称运行在较旧的 AWS 硬件(m1 代)上,而 M3/M4 AWS 实例则较新。GCE 测试也是最近进行的。

个人测试

这些都参考上面链接的测试。

CPU 测试很接近,在 3% 以内。

文件 IO 随机读取根本不接近。AWS 为 24Mbps,GCE 为 1787Mbps。我知道在 AWS 中,您的 I/O 与实例类型密切相关,小型实例的 I/O 比大型实例少得多。鉴于这种巨大的差异,以及其他测试大致相似,我希望在相信这些数字之前重新测试一下。我读到 GCE 在网络 I/O 方面表现非常出色。也可能是 GCE 测试是使用本地 SSD 完成的,而 AWS 测试是使用网络附加存储完成的。

其他 IO 测试结果也差不多,AWS 有时候高一些,GCE 有时候高一些,但并没有绝对的胜负。

内存测试大致相似,AWS 略胜 Google。

笔记

任何提供商的任何实例的任何单项测试都可能因各种原因而得分较低。硬件配置过多、吵闹的邻居占用了超过其份额的资源,以及CPU 窃取只是几个例子。

好的测试会使用多种测试(CPU、I/O、内存等),并且会在至少三个独立的虚拟机上运行。

结论

尽管实例类型和硬件有很大差异,AWS 和 GCE 在这些有据可查的测试中的表现似乎大致相同。

我希望@StanHou 进行更为强大、有据可查的测试来比较性能,而不是依赖于单个实例上的单个测试。

相关内容