如何估算 EC2 上的计算时间?

如何估算 EC2 上的计算时间?

我需要使用我编写的一些 R/C++ 代码为我的论文生成数据样本。它可以并行执行,而且我已经将其推广到本地多核机器上,没有太多麻烦。

在我的 Core2Duo 上,生成一个样本大约需要 8 秒,所有样本都大致相同,理想情况下我希望有数百万或数千万个样本,所以我考虑将其放在 EC2 上几个小时。假设其中一个核心的性能与我的 C2D 相当,1m 个样本应该需要 2200 个核心小时,在 32 核机器上大约需要 70 小时。

我想以合理的信心计算出这需要多长时间,所以我想我会使用一个免费的微型实例,运行一些测试,并假设与更大更昂贵的机器进行比较。但我提交的作业(一个 for 循环生成 100 个样本 50 次)应该花费不到 12 小时,但现在我已经运行到 28 小时了。这表明要么核心比我预期的要慢得多,要么我的作业优先级较低,而且我的性能不均衡。

假设我有兴趣租用 1-3 台 32 核机器一两天。我该如何估计这可能需要多长时间?

答案1

微型实例是故意设计的。它们只适用于间歇性 CPU 负载,如果您尝试持续加载 CPU,Amazon 设置的虚拟机管理程序会将您的 CPU 时间缩短到非常短的量。这就是为什么微型实例花费的时间异常长的原因。

不过,小型实例可以满足您的基准测试需求,但理想情况下,您应该测试您计划使用的大小。与许多 VPS 提供商不同,众所周知,Amazon 实例的 CPU 时间量相对稳定,因此对其中一个实例进行基准测试应该可以合理地估计您最终实际使用的实例需要多长时间。

然而,没有办法真正确定这一点,因为不同的机器有不同的 CPU、不同的负载水平(亚马逊无法完美地将您与同一台机器的其他用户的影响隔离开来),并且由于现代 Xeon 处理器的可变超频,由于它们所处的温度,以不同的时钟速度运行。

相关内容