我们最近开始竞标 AWS 上的现货实例。从那时起,我们使用的可用区价格飙升至可疑的接近我们出价的价格点。我试图将此价格与其他人看到的价格进行核对,发现存在奇怪的差异。
我比较了美国东部 c1.medium 的 EC2 价格:
以及网站上的EC2 现货价格:
但它们不匹配。我做错了什么?所有参数都匹配;非官方网站缺少 us-east-1b,但其余的应该相同。亚马逊可能会根据客户改变价格吗?如果有人能证实这一点,那将会很有趣。
我查过的所有关于 ServerFault 的答案,比如这或者这,总是假设有一个固定的价格。这篇有趣的文章讨论了定价算法,但同样没有提到每个客户的不同价格。
更新:我从第二个 AWS 账户看到的价格与第一个账户不同:
即使按区域比较,它们也相似但不相等。它们也与第二个站点上的兼容,但不相等。对于第二个帐户,缺少区域 us-east-1b,其他实例类型也会发生这种情况。真是好奇又好奇!
答案1
您引用的论文反映的观察和结论已经不再适用(如果它们曾经适用的话)。
从那时起,我们使用的可用区域的价格已飙升至可疑地接近我们的出价的价格点。
这其实并不奇怪。
现货容量按以下方式分配逻辑,对于可用区域、平台、操作系统类型和实例类型的每个组合:
确定可用作此类型的竞价实例的实例数。(这里的算法未知,但大概是按需可用硬件的一部分,但目前未使用。)将此数字称为n。
将出价从高到低排序,并确定最佳出价n最高价格出价。这些是获胜出价。如果任何非获胜出价有正在运行的现货实例,则终止它。如果任何获胜出价没有正在运行的实例,则启动它。如果获胜出价已经有正在运行的实例,则不执行任何操作。
取最低中标价。此价格即为当前价格。
当创建或销毁投标或可用容量发生变化时,从顶部重新开始。
从这个逻辑出发,我们可以推断出几个结论:
如果现货价格处于最低价,那么可用的容量就会比出价超过绝对最低价的投标人的数量要多。
相反,当价格高于最低价格时,需求就会超过产能,因此所有高于市场价格的投标人都会向上影响市场价格,因为价格恰好是最低中标人出价的金额。
市场价格越接近您的出价,您就越接近成为最低中标者之一。
对该算法的思考表明,如果您在同一个可用区域/平台/操作系统类型/实例类型中运行多个实例,但您愿意接受的实例数量少于所需数量,则应该进行多次单独的出价,并采用交错出价金额。这可能会让您更好地了解市场,并增加您有赢家而不是没有赢家的可能性,并且如果您的出价之一是最低的赢家,那么所有赢家支付的市场价格都会更低。如果您心中的价格是 3 个实例每小时 3 美元,那么您可能希望出价 4 美元、3 美元和 2 美元,因为您最多需要为 1 个实例支付 4 美元,为 2 个实例支付 6 美元,为 3 个实例支付 6 美元。如果您出价 3 美元购买 3 个实例,如果您的 3 美元出价是最低的赢家,那么您每小时的最高成本将是 9 美元购买 3 个实例。然而,适当的出价策略取决于您对机器的估价。我在网站管理员。
请注意,正如您所观察到的,在同一个区域内,不同账户之间的可用区域到名称的映射是不同的。
问:如何确保我与其他开发人员位于同一可用区域?
目前,我们不支持跨 AWS 开发者账户协调启动到同一可用区的功能。两个 AWS 客户账户中的同一个可用区名称(例如 us-east-1a)可能与不同的物理可用区相关。
答案2
仔细查看后,我发现两个账户的价格确实相同,但有几点需要注意:
- 不同客户的区域并不一致。我的 1d 可能是你的 1a,等等。
- 对于某些客户来说,某些区域可能不存在。
- 网站EC2 现货价格存在一些采样问题,导致其值不太准确且更难看出。