下载本文的PDF版本 PDF

分布式计算经济学

吉姆·格雷

计算经济学正在发生变化。如今,以下各项之间的价格大致相当:(1)一次数据库访问;(2)10字节的网络流量;(3)100,000条指令;(4)10字节的磁盘存储;以及(5)一兆字节的磁盘带宽。 这对如何构建互联网规模的分布式计算具有重要意义:人们将计算尽可能地靠近数据放置,以避免昂贵的网络流量。

计算的成本

计算是免费的。 世界上最强大的计算机是免费的(SETI@Home 是一台 54 万亿次浮点运算的机器)。1 谷歌免费为世界上最大的在线数据库(两个 PB)提供每年万亿次的搜索。 Hotmail 每年免费传输万亿封电子邮件。 Amazon.com 提供免费的书籍搜索工具。 许多网站提供免费新闻和其他免费内容。 电影、体育赛事、音乐会和娱乐节目通过电视免费提供。

实际上,它不是免费的,但现在大多数计算都非常便宜,以至于广告可以支付费用。 内容并非真正免费; 它是由广告付费的。 广告商通常为每千次展示支付超过一美元。 如果谷歌或 Hotmail 每千次展示可以收取一美元,那么每年产生的 10 亿美元以上的收入将足以支付其开发和运营费用。 如果他们可以以几个微美元的价格提供搜索或邮件消息,那么广告会为附带的“眼球”向他们支付几个毫美元。 因此,这些服务不是免费的——广告为它们付费。

计算每年花费数千亿美元。 IBM、HP、戴尔、Unisys、NEC 和 Sun 每年都销售数十亿美元的计算机。 微软、IBM、Oracle 和 Computer Associates 等软件公司每年销售数十亿美元的软件。因此,计算显然不是免费的。

TCO(总拥有成本)每年超过 1 万亿美元;运营成本远远超过资本成本。 硬件和软件只是总拥有成本中的一小部分。 硬件占总成本的一半以下; 有人声称,硬件成本不到计算服务成本的 10%。 因此,计算的实际成本每年以万亿美元计。

Yahoo!、谷歌和 Hotmail 等大型服务的运营人员成本相对较低。 这些大型服务已经找到了以低于广告资助的毫美元的价格交付内容的方法。 例如,在 2002 年,谷歌的运营人员为 25 人,他们管理着其 2PB(215 字节)的数据库和分布在多个站点的 10,000 台服务器。 Hotmail 和 Yahoo! 也引用了类似的数字——少量员工管理着约 300 TB 的存储空间和超过 10,000 台服务器。

大多数应用程序无法从大型服务的规模经济中受益。 其他公司报告称,他们每 TB 需要一名管理员,每 100 台服务器需要一名管理员,每 Gbps 网络带宽需要一名管理员。 这意味着需要 2,000 多名运营人员来运营谷歌——几乎是该公司规模的 10 倍。

外包被视为小型服务从大型服务效率中受益的一种方式。 外包业务从服务机构发展而来,经历了分时,现在正在复兴。 前提是外包大型服务可以比内部服务更有效地提供例行服务。 如今,公司通常将薪资、保险、Web 呈现和电子邮件等应用程序外包。

外包通常被证明是一种空壳游戏——将成本从一个地方转移到另一个地方。 Loud Cloud 和 Exodus 鼓吹外包的好处。 现在 Exodus 已经破产,Loud Cloud 也消失了。 这两家公司都没有比内部运营更显著的竞争优势。 当外包业务是一种服务业务,其中计算对于运营应用程序和支持客户至关重要时——一种高科技低接触业务,外包才有效。 除非应用程序在大多数公司中几乎相同——例如薪资或电子邮件,否则很难实现规模经济。 一些公司,尤其是 IBM、Salesforce.com、Oracle.com 等,正在吹捧外包、按需计算,作为一种降低成本的创新方式。 有一些成功案例,但更多的是失败案例。 到目前为止,外包大型服务很少——薪资和电子邮件是例外,而不是规则。

SETI@Home 规避了运营成本,并且不是由广告资助的。 SETI@Home 是一种新型的外包。 它收集了世界上一些免费(未使用)的计算资源。 SETI@Home 通过提供屏幕保护程序、吸引人们对寻找外星智能的兴趣以及在想要展示其系统性能的团队之间创建竞争来“支付”计算费用。 这种“货币”购买了 130 万年的计算时间; 它在 2003 年 2 月 3 日购买了 1300 年的计算时间。 实际上,一些 SETI@Home 的结果已在 eBay 上拍卖。 其他人正在为其以计算为中心的应用程序(例如,Protein@Home 或 ZetaGrid.net)效仿此模型。

网格计算希望收集和共享互联网资源。 大多数计算机在大部分时间内都处于空闲状态,磁盘平均半满,并且大多数网络链接都未得到充分利用。 与 SETI@Home 模型类似,网格计算旨在通过提供一种基础设施来利用和共享这些空闲资源,该基础设施允许空闲资源参与互联网规模的计算。2

Web 服务

微软和 IBM 吹捧 Web 服务是一种新的计算模型——互联网规模的分布式计算。 他们观察到 HTTP 互联网是为人们与计算机交互而设计的。 未来互联网上的流量将以计算机与计算机之间的交互为主。 构建互联网规模的分布式计算需要很多东西,但其核心需要一个通用的对象模型,并辅以命名和安全模型。 其他服务可以分层构建在这些核心服务之上。 Web 服务是 20 世纪 90 年代的 rpc、dce、dcom、corba、rmi……标准的演进。 主要创新是 XML 基础,它促进了实现之间的互操作性。

网格计算和 Web 服务都没有外包或广告商业模式。 两者都提供了使公司能够构建应用程序的管道。 两者都专为计算机与计算机之间的交互而设计,因此没有广告模式——因为交互中不涉及眼球。 这取决于公司发明可以利用 Web 服务管道的商业模式。

Web 服务降低了发布和接收信息的成本。 如今,许多服务在互联网上以 html 页面的形式提供信息。 这对于人们来说很方便,但是程序必须求助于屏幕抓取才能从显示中提取信息。 如果应用程序想要将信息发送到另一个应用程序,那么拥有一个信息结构模型——一个对象模型——将非常方便,该模型允许发送者指向一个对象(数组、结构或更复杂的类)并简单地发送它。 然后,该对象“出现”在目标应用程序的地址空间中。 打包(序列化)对象、传输对象,然后解压缩对象的所有繁琐工作都对发送者和接收者隐藏了。 Web 服务提供这种发送对象/获取对象的模型。 这些工具大大降低了发布和接收信息的编程和管理成本。

因此,Web 服务是一种支持技术,可以降低数据交换成本。 EDI(电子数据交换)服务是从 asn.1 的非常原始的基础上构建的。 借助 xml 和 Web 服务,可以使用更简洁的语言(例如 xml、C# 或 Java)定义 edi 消息格式和协议。 一旦定义,这些接口将在所有平台上自动实现。 这大大降低了交易成本。 谷歌、Inktomi、Yahoo! 和 Hotmail 等服务提供商可以提供 Web 服务接口,其他人可以将其集成或聚合到个性化的数字仪表板中,并从这项非常方便且廉价的服务中获得收入。 许多组织都希望发布其信息。 WorldWide Telescope 就是一个例子3,但在生物学、社会科学和艺术领域也重复出现这个例子。 Web 服务和智能用户工具是相对于发布没有模式的文件(例如,使用 FTP)的一大进步。

应用经济学

网格计算和按需计算使应用程序能够移动并按需配置。 哪些任务是可移动的并且可以动态配置? 任何纯粹的计算任务,如果它以可移植的语言编写并且仅使用可移植的接口——WORA(一次编写,到处运行),则它是可移动的。 Cobol 和 Java 承诺 wora。 Cobol 和 Java 用户可以证明 wora 难以实现,但是为了本文讨论的目的,让我们假设它是一个已解决的问题。 那么,问题是

将任务从一台计算机移动到另一台计算机或从一个地方移动到另一个地方的经济问题是什么?

一个计算任务有四个特征需求

这些量之间的比率及其相对成本至关重要。 如果通过网络发送 1GB 可以节省数年的计算时间,那很好,但是如果答案可以在本地一秒钟内计算出来,那么发送 1KB 的问题是不经济的。

为了使经济学变得具体,请采用以下基线硬件参数。4

2    GHz CPU,配备 2GB RAM(机柜和网络)    2,000 美元

200    GB 磁盘,具有 100 次访问/秒和 50 MB/s 传输速度    200 美元

1    Gbps 以太网端口对    200 美元

1    Mbps WAN 链路    100 美元/月

由此我们得出结论,1 美元相当于

=     1    $

≈    1    GB 通过 WAN 发送

≈    10    TOPS(万亿次 CPU 运算)

≈    8    小时 CPU 时间

≈     1    GB 磁盘空间

≈    10    M 数据库访问

≈    10    TB 磁盘带宽

≈    10    TB LAN 带宽

理想的移动任务是无状态的(没有数据库或数据库访问),具有微小的网络输入和输出,并且具有巨大的计算需求。 例如,密码学搜索问题:给定加密文本、明文和密钥搜索范围。 这种问题具有几 KB 的输入和输出,是无状态的,并且可以计算数天。 计算 zeta 函数的零点是一个很好的例子。5 用于投资组合风险分析的蒙特卡洛模拟是另一个很好的例子。 当然,SETI@Home 是一个很好的例子:它使用半兆字节的输入计算 12 个小时。

使用上述参数,SETI@Home 以 100 万美元的价格执行了价值数十亿美元的计算——非常划算! SETI@Home 收集了超过一百万 CPU 年,价值超过 10 亿美元。 它发送了 10 亿个作业,每个作业半兆字节。 这 1PB 的网络带宽花费了约 100 万美元。 SETI@Home 的同行捐赠了价值 10 亿美元的“免费”CPU 时间,还捐赠了 1012 瓦时,这大约是 1 亿美元的电力。 SETI@Home 的关键属性是 ComputeCost:NetworkCost 比率为 10,000:1。 它是 CPU 密集型的。

大多数 Web 和数据处理应用程序是网络或状态密集型的,并且作为移动应用程序在经济上不可行。 FTP 服务器、HTML Web 服务器、邮件服务器和 OLTP(在线事务处理)服务器代表了一系列服务,这些服务的数据库状态和数据访问不断增加。 一个 100MB 的 FTP 任务花费 10 美分,其中 99% 是网络成本。 一次 HTML Web 访问花费 10 微美元,其中 88% 是网络成本。 Hotmail 交易花费 10 微美元,并且 CPU 密集度更高,因此网络和 CPU 大致平衡。 这些应用程序都不符合 CPU 密集型无状态要求。

数据加载和数据扫描是 CPU 密集型的; 但它们也是数据密集型的,因此作为移动应用程序在经济上不可行。 与数据库系统相关的一些应用程序非常 CPU 密集型——例如,数据加载每字节大约需要 1,000 条指令。 Sloan Digital Sky Survey 的“视觉”组件,用于检测恒星和星系并从像素构建天文目录,每字节大约需要 10,000 条指令。 因此,它们是盈亏平衡的候选者:根据表 1 中的经济模型(10 TOPS 的计算和 1 GB 的网络都花费一美元),每字节 10,000 条指令是盈亏平衡点。 似乎在外包模型真正变得有吸引力之前,计算应该至少为每字节 30,000 条指令(3:1 的成本效益比率)。 盈亏平衡点是每字节网络流量 10,000 条指令,或每兆字节网络流量大约一分钟的计算时间。

很少有计算超过该阈值; 大多数更适合 Beowulf 集群。 CFD(计算流体动力学)非常 CPU 密集型,但是,CFD 再次生成连续且大量的输出流。 为了给出一个自适应网格模拟的示例,康奈尔理论中心有一个 Beowulf 级 MPI(消息传递接口)作业,用于模拟机械物体中的裂纹扩展。6 它有大约 100MB 的输入、10GB 的输出,并且运行时间超过七个 CPU 年。 该计算以每字节超过 100 万条指令的速度运行,因此非常适合导出到 WAN 计算网格。 但是,该计算的双向带宽要求它在紧密连接的集群中执行。 这些应用程序需要 Beowulf 集群可用的廉价带宽。7 在 Beowulf 集群中,网络成本比 WAN 网络成本低 10,000 倍——相比之下,这使得网络成本几乎免费。

尽管如此,仍然有一些计算密集型作业可以使用网格计算。 用于制作动画电影的渲染农场似乎是网格计算的良好候选者。 渲染一帧可能需要数小时的 CPU 时间,因此网格规模的渲染农场开始变得有意义。 例如,Pixar 的《玩具总动员 2》图像非常 CPU 密集型:一个 200MB 的图像可能需要几个 CPU 小时才能渲染。 指令密度为每字节 20 万到 60 万条指令。8 这可以构建为网格计算——将一个 50MB 的任务发送到一台服务器,该服务器计算 10 个小时并返回一个 200MB 的图像。

BLAST、FASTA 和 Smith-Waterman 是一个有趣的案例——在 40 个 CPU 日的计算的罕见情况下,它们是可移动的。 这些计算将 DNA 序列与 GenBank 或 Swiss-Prot 等数据库进行匹配。 如今,这些数据库大约为 50GB。 这些算法非常 CPU 密集型,但它们会扫描数据库的大部分内容。 服务器通常将数据库存储在 RAM 中。 BLAST 是一种启发式方法,比 Smith-Waterman 快 10 倍,后者给出精确的结果。9,10 大多数 BLAST 计算可以在几分钟的 CPU 时间内运行,但是有些计算可能需要 BLAST 一个 CPU 月,而 Smith-Waterman 需要一个 CPU 年。 因此,如果服务器免费执行 7,720 小时的计算,那么将 Swiss-Prot (40GB) 发送到服务器将是经济的。 通常,按需配置 Swiss-Prot 数据库没有意义:相反,设置专用服务器(很像谷歌)来使用廉价的处理器和内存来提供此类搜索是有意义的。 一台商品化的 40GB SMP 服务器的成本将低于 20,000 美元,并且可以以低于 1 美元的价格提供复杂的 1 小时 CPU 搜索——典型的 1 分钟搜索将花费几毫美元。

结论

将计算放在数据附近。 本分析的反复主题是,按需计算仅对于 CPU 密集型(每字节 100,000 条指令或每 GB 网络流量一天 CPU 时间)的应用程序在经济上可行。 对于大多数应用程序(尤其是数据密集型应用程序),预配置计算可能更经济。

如何组合来自多个站点的数据? 许多应用程序需要将来自多个站点的数据集成到组合答案中。 先前的论点表明,应该尽可能将更多处理推送到数据源,以便尽早过滤数据(数据库查询优化器将其称为“将谓词下推到查询树”)。 有许多技术可以做到这一点,但从根本上来说,它与每个数据源都是具有高级面向对象接口的 Web 服务的概念相吻合。

注意事项

Beowulf 集群具有完全不同的网络经济学。 渲染农场、材料模拟和 CFD 非常适合 Beowulf 集群,因为那里的网络成本非常便宜:一个 GBps 以太网结构每个端口的成本约为 200 美元,可提供 50 MBps 的速度,因此 Beowulf 网络成本与磁盘带宽成本相当——比互联网传输的价格低 10,000 倍。 这就是为什么渲染农场和 BLAST 搜索引擎通常使用 Beowulf 集群构建的原因。 Beowulf 集群不应与互联网规模的网格计算混淆。

如果电信价格下降速度快于摩尔定律,则该分析将失败。 如果电信价格下降速度慢于摩尔定律,则该分析将变得更强。 这里的大部分论点都围绕着相对较高的电信价格展开。 在过去的 40 年中,电信价格的下降速度远慢于任何其他信息技术。 如果这种情况发生改变,它可能会完全改变这里的论点,但是没有明显的迹象表明这种情况正在发生。

致谢

许多人帮助我收集了这些信息并展示了结果。 Gordon Bell、Charlie Catmull、Pat Hanrahan、Gerd Heber、George Spix、Alex Szalay 和 Dan Wertheimer 帮助我描述了各种计算的特征。 Ian Foster 和 Andrew Herbert 帮助我更清晰地呈现了论点。

参考文献

  1. 本文对计算经济学做出了广泛的陈述。 这些数字是流动的(成本每天都在变化)。 它们的近似精度在 3 倍以内。 对于这个具体事实:SETI@Home 在 2003 年 1 月 26 日平均运算速度为 54 万亿次浮点运算/秒,轻松击败了 http://www.top500.org/ 上注册的 Top500 超级计算机中排名前四位的峰值性能之和。
  2. Foster, I., Kesselman, C. (ed.). 1999. The Grid: Blueprint for a New Computing Infrastructure. San Francisco: Morgan Kaufmann.
  3. 参见 http://SkyQuery.net/http://TerrraService.net/。 这两个网站中的每一个都充当多个 SOAP Web 服务的门户。
  4. 硬件价格是典型的 Web 价格,WAN 价格是大型(每月许多 Gbps)互联网服务提供商支付的费率的典型价格。 硬件折旧期为三年。
  5. Ferreira, L. et. al. 2002. Introduction to Grid Computing with Globus. IBM Redbook series; http://ibm.com/redbooks.
  6. 来自康奈尔理论中心的 Gerd Heber 的私人通信,2003 年 1 月 12 日。
  7. Sterling, T., Salmon, J., Becker, D. J., Savarese, D. F. 1998. How to Build a Beowulf: A Guide to the Implementation and Application of PC Clusters. Cambridge: MIT Press.
  8. 来自 Pixar 的 Ed Catmull 的私人通信。 2003 年 4 月 2 日。
  9. Altschul, S.F., Gish W., Miller W., Myers E. W., Lipman D. J. 1990. Basic local alignment search tool. Journal of Molecular Biology 215: 403-410; http://www.ncbi.nlm.nih.gov/BLAST/http://www.sun.com/products-n-solutions/edu/commofinterest/compbio/pdf/parcel_blast.pdf 用于大型 BLAST 任务。
  10. Smith, T.F., Waterman, M.S. 1981. Identification of common molecular subsequences. Journal of Molecular Biology 147: 195-197.

acmqueue

最初发表于 Queue vol. 6, no. 3
数字图书馆 中评论本文





更多相关文章

Marc Brooker, Ankush Desai - AWS 系统正确性实践
构建可靠且安全的软件需要一系列方法来推理系统正确性。 除了行业标准的测试方法(例如单元测试和集成测试)之外,AWS 还采用了模型检查、模糊测试、基于属性的测试、故障注入测试、确定性模拟、基于事件的模拟以及执行跟踪的运行时验证。 形式化方法一直是开发过程的重要组成部分——也许最重要的是,形式化规范作为测试预言机,为 AWS 的许多测试实践提供正确的答案。 正确性测试和形式化方法仍然是 AWS 的关键投资领域,这些领域已经看到的投资回报加速了这一进程。


Achilles Benetopoulos - 数据中心计算机的中间表示
我们已经到达分布式计算无处不在的地步。 内存应用程序数据大小正在超过单台机器的容量,因此需要将其在集群上进行分区; 在线服务具有高可用性要求,这只能通过将系统部署为多个冗余组件的集合来满足; 高持久性要求只能通过数据复制来满足,有时甚至跨越广阔的地理距离。


David R. Morrison - 模拟:分布式系统中的一种未充分利用的工具
模拟在 AI 系统的出现中发挥着巨大的作用:我们需要一种高效、快速且经济高效的方式来训练 AI 代理在我们的基础设施中运行,而模拟绝对提供了这种能力。


Matt Fata, Philippe-Joseph Arida, Patrick Hahn, Betsy Beyer - 公司到云端:谷歌的虚拟桌面
超过四分之一的 Googler 使用内部、数据中心托管的虚拟桌面。 这种本地产品位于公司网络中,允许用户从世界任何地方远程开发代码、访问内部资源和使用 GUI 工具。 在其最显着的功能中,虚拟桌面实例可以根据手头的任务进行调整大小,具有持久的用户存储,并且可以在公司数据中心之间移动以跟随出差的 Googler。 直到最近,我们的虚拟桌面都托管在使用名为 Ganeti 的自研开源虚拟集群管理系统的 Google 公司网络上的商用硬件上。 今天,这项重要且对 Google 至关重要的工作负载在 GCP(Google Compute Platform)上运行。





© 保留所有权利。

© . All rights reserved.