为什么 AWS 现货实例价格高于“按需”定价?

Lay*_*kes 11 amazon-ec2 amazon-web-services

Amazon 对 Spot 实例不一致的定价

最好通过实例定价历史图表的屏幕截图来解释这一点。

如果您查看大量 Spot 实例的实例价格,您会注意到峰值的规律模式。看这里:

在此处输入图片说明

如您所见,此计算中型实例的价格经常高于按需价格。

一个c1.medium实例(按需),只需$0.186每小时收费。但是在几周的时间里,在 B 区,价格会经常飙升至 1.20 美元。这大约是实际按需价格的 6 倍。

它也不是孤立的。如果您再次查看小型实例的 zone-b,会发现类似的峰值频率。这是按需定价的 4 倍。

在此处输入图片说明

有谁知道为什么会这样?

这里有一些建议

  • 有人输入了 1.2 美元而不是 0.12 美元(我会打折,因为它在 3 周内发生了 20 次)。

  • 亚马逊经常通过对自己的实例进行竞标来人为地抬高价格,以获得最大的收益。(我会打折扣,因为这将是荒谬和糟糕的生意)

  • 某公司一次启动了 1000 台服务器,并希望确保它们都启动。(我会打折扣,因为他们可能会以低于最低按需价格的价格推出它们。为什么要为单个服务器支付高于按需价格的费用?)。

  • 这是他们报告中的错误吗?

小智 9

这不是错误,这是一个优先级/可用性问题,因为无论现货出价如何,按需实例都优先于现货实例。这源于 Amazon EC2 声明,即您“对备用 Amazon EC2 实例出价”。

因此,当按需实例的需求增加时,可用的备件就会减少,而现货实例的可用性会降低,从而根据竞争的现货出价推动现货价格上涨。

许多竞价者未能理解按需实例的更高优先级,并以高于按需定价的方式出价以试图获得高于按需实例请求的优先权,但这失败了,因为按需实例具有更高的优先级,而不管现货投标价格。

反过来,当现货实例可用性较低时,这些高于按需定价的出价一直在相互竞争,推动最高价格比按需定价高出数倍。

虽然没有提出以下问题,但我对长期工作负载的最低成本 Spot 实例管理的建议是:

  1. 针对故障(连续备份/复制)和快速恢复设计您的应用程序
  2. 将现货出价设置为按需定价
  3. 当 Spot 实例终止时,将其作为按需实例或在 Spot 定价较低的其他区域/地区重新启动。
  4. 监控现货定价,直到它低于按需定价
  5. 停止按需实例并转到上面的 2.


小智 8

EC2 不再使用人工 AR(1) 过程来控制最低价格。即使他们这样做了,他们也只改变了最低价格——AR(1) 过程是锚定的,并且从未导致价格跳升至按需价格之上。这种跳跃可能来自用户指定高价(可能比他们实际支付的价格更高),或者来自亚马逊希望关闭部分现货实例,就像他们在 2010 年夏天对 m1.small 所做的那样。

您可以在我们论文期刊版本中阅读更多内容,在最后一个更新的部分(事后分析部分):


oke*_*ker 6

以色列理工学院的人有一篇论文分析了现货市场。他们的结论是现货价格不是由投标驱动的,而是由 AR(1) 函数生成的。所以在这种情况下,这不是由于其他人的出价,而是由于使用的算法。

http://www.cs.technion.ac.il/~ladypine/spotprice-ieee.pdf

不过,我想如果现货市场真的达到他们可以从需求/供应中获得不错价格的水平,情况可能会发生变化。正如马特建议的那样,通过现货实例降低成本成为一种常见做法,并且许多按需出价过高以避免停机时间。从长远来看,它仍然具有成本效益......但它仍然如此吗?真正的问题是,除了亚马逊,没有人真正知道价格是如何产生的。

  • 这不是正确答案!1. OP询问的是2012年9月之前的三个月;研究数据只到 2011 年。 2. 作者表示,截至 2011 年 11 月,他们不再观察 AR(1) 行为,事实上,该论文的原作者在回答此问题时也这么说很疑问!3. AR(1) 函数并不尖刻。4. 最重要的是:分析是在专门选择的没有尖峰的时间间隔内完成的! (8认同)