系统与数据库2015research.google.com编辑精选
Google 使用 Borg 的大规模集群管理
Large-scale cluster management at Google with Borg
进阶 · 约 50 分钟读完前置知识:分布式系统基础、操作系统调度与资源隔离、容器/虚拟化概念
导读
这篇论文介绍 Google 的大规模集群管理系统 Borg:它负责在数以万计的机器上调度、部署和隔离混合型工作负载。论文披露了 Borg 的架构与资源利用情况(评论提到图 12 显示利用率约为 40-50%),以及通过用户预留和资源回收来提升利用率的做法。
HN 关注点:这是 Google 首次正式发表其内部集群管理系统的论文,而 Borg 是 Kubernetes 和 Omega 的前身,因此 HN 上许多有亲历经验的工程师围绕利用率、性能隔离与超售展开讨论。
后来怎么样
Borg 论文成为大规模集群调度的标准参考文献,直接启发了 Omega 与 Kubernetes 的设计,也推动了利用率优化、资源超售与性能隔离等一整套后续研究。
HN 评论精选
这几条评论里:补充 2 亲历 2
亲历亲历者:性能隔离不错,但追求高利用率有风险,同节点任务的实际干扰仍是未解问题。
终于发表了,太好了。我以前多少次得忍住不说出“Borg”这个词,自己都数不清了。性能隔离做得不错,但如果计算成本对你公司不算大头,我不会刻意去追求高利用率。我们见过一些离谱的情况:名义上互不干扰的任务,在同一节点上却让别的任务性能明显下降。这方面还有得研究。
obstinate查看英文原文
Oh, fun, they finally published this. How many times I've had to catch myself from saying the word "Borg" I don't even know. The performance isolation is good, but I wouldn't really seek after high utilization unless compute costs are significant to your business. We've seen some crazy things where nominally non-interfering jobs cause significant performance degradation to other jobs on the same node. There's work yet to do here.
补充资深用户:论文是必读,但指出用户过度预留是利用率瓶颈,并补充了 right-sizing 与超售隔离两方面的前沿研究。
我们这些多年来用过 Borg 的人都很感激这项技术和它的能力。祝贺所有参与其中的 Google 现员工和前员工。做这个方向的人,这篇论文应该排在必读清单前列。不过,大规模集群管理仍有很多开放问题:一是“过度预留的诅咒”——Borg 等系统依赖用户预留,而用户系统性地夸大需求;把这些预留调整到合适大小,是突破论文中 40-50% 利用率的一条路,Christina Delimitrou 用分类技术做的工作很有前景。二是用更好的隔离机制做超售(论文里叫资源回收):把高优先级作业未使用但已预留的资源拿给 best-effort 分析任务用;David Lo 有篇即将发表的论文,讲如何协调 CPU sets、cache 分区、Linux TC、RAPL/DVFS,把 websearch 集群填充到 90% 以上利用率,同时完全不影响搜索——那可是 Google 搜索。
kozyraki查看英文原文
All of us who have used Borg over the years are very appreciative of the technology and its capabilities. Congrats to all the Googlers, current and ex, that contributed to it. This paper should be toward the top of the reading list for anyone working on the topic. Nevertheless, there are many open questions for large-scale cluster management for researchers and developer to address. Here are some of my favorite: - The curse of overprovisioning: Borg and many other systems rely on reservation which are systematically exaggerated by users. Right sizing these reservations is one way to go beyond the 40-50% usage shown in the Borg paper (see fig 12). A promising way of doing this is Christina Delimitrou's work using classification techniques (see http://goo.gl/vFf8oN) - Oversubscription using better isolation mechanisms): this is what the Borg paper calls resource reclamation. Take unused (but reserved) resources from priority jobs and use them for best effort analytics. David Lo (http://web.stanford.edu/~davidlo/) has a very interesting paper coming up on how to coordinate cpu sets, cache partitioning, Linux TC, RAPL/DVFS (power management) to run websearch clusters at >90% by packing them with analytics without causing ANY glitch on search. And that is Google search. There are definitely more interesting. Exciting times.
补充补充资料:推荐 John Wilkes 2011 年关于 Omega 的演讲视频。
John Wilkes(负责 Google 集群管理)2011 年在 Google Faculty Summit 上做过一个关于 Omega 的精彩演讲,能看到他们处理的问题规模之大,非常吸引人。
WestCoastJustin查看英文原文
There was a great talk by John Wilkes (Google Cluster Management) re: Omega in 2011 at Google Faculty Summit [1]. Absolutely fascinating to see the scope of the problems they are dealing with. [1] https://www.youtube.com/watch?v=0ZFMlO98Jkc Edit: remove error in my comment re: borg/omega order.
亲历亲历者:认为 Omega 远胜 Borg 与 Kubernetes,但看好 Kubernetes 的前景。
在 Google 时我一直对 Borg 和 Omega 心怀敬畏,很高兴终于看到他们发表论文。想必是系统已经成熟到可以公开的程度了。Omega 会比 Borg 和开源的 Kubernetes 强得多,但我对 Kubernetes 的未来抱有很高期望。
chuhnk查看英文原文
Was always in awe of Borg and Omega while at Google. Really nice to see them finally publish a paper on this. Guess they've more far enough along now that it makes sense to do so. Omega will be a far superior beast to Borg and the open source Kubernetes but I have high hopes for the future of Kubernetes.
相关资源
从这篇论文所有 HN 讨论帖的全部评论里整理出来的链接。
历次讨论
- 2015Hacker News 讨论帖150 分 · 35 评
同领域还值得读
I/O 比 CPU 更快——让我们划分资源并消除操作系统抽象
I/O Is Faster Than CPU – Let’s Partition Resources and Eliminate OS Abstractions
指出在现代服务器硬件上 I/O 速度已接近甚至超过 CPU,传统操作系统抽象反而成为瓶颈。
系统与数据库2019 · 817 分 · 277 评进阶 · 约 30 分钟编辑精选使用 io_uring 的高效 I/O
Efficient IO with io_uring
由 Linux 内核开发者 Jens Axboe 撰写,介绍 Linux 新的异步 I/O 接口 io_uring。
系统与数据库2019 · 426 分 · 96 评进阶 · 约 45 分钟编辑精选线程对大多数用途而言是个坏主意(1995)
Threads Are a Bad Idea for Most Purposes (1995)
这篇 1995 年的文章由 John Ousterhout 撰写,讨论为什么线程对大多数用途而言是坏主意,并主张事件驱动编程通常更简单、更高效。
系统与数据库2017 · 423 分 · 382 评进阶 · 约 25 分钟编辑精选学习型索引结构之论证
The Case for Learned Index Structures
提出把索引看作一种"模型":既然 B-tree 等结构本质上是在学习数据的分布,就可以用机器学习模型(如回归模型、神经网络)来近似键到位置的映射,从而替代 B-tree、哈希索引…
系统与数据库2017 · 398 分 · 66 评 · 引用 25进阶 · 约 60 分钟编辑精选FoundationDB:一个分布式、解耦的事务型键值存储
FoundationDB: A distributed, unbundled, transactional key value store
介绍 FoundationDB:一个分布式、解耦设计的事务性键值存储。
系统与数据库2021 · 283 分 · 99 评进阶 · 约 90 分钟编辑精选