从现在放出来的文章标题和作者信息来看,不吹不黑,Microsoft是最让人眼前一亮的,参与了大会47篇文章中的13篇的工作。MIT拿下了其中的5篇,是所有大学里面最多的,其中Frans一人就贡献了4篇Orz。Madison和UW也各有3篇入账。
至于文章,OSDI涵盖的方面太大了,亮不亮很主观的。并且对于在这局游戏中的研究人员来说,往往越熟悉的领域越不觉得有亮眼的工作。(此处应该有捂脸表情)
在大的文章分类的感受上,我感觉OSDI的文章还是一如既往很关注系统质量相关的研究,因为现在的软硬件系统越来越复杂。错误分析、debug、形式化验证、安全等相关topic还是非常的火热,超过1/3的文章属于这个内容。另外一个发现就是,今年面向应用的计算系统相关的文章较往年似乎多了一些,特别是机器学习相关系统研究,在今年的OSDI上迎来了一个爆发。
下面按照我的个(zhi)人(shi)喜(ju)好(xian)给出一个今年OSDI文章导读。
第一篇文章应该是跟Ryan之前发表在HotOS’17上的Gray Failure一脉相承的工作,可以在大型复杂的系统中捕捉到不易被发现的错误,从而进行相应的处理避免更严重的错误发生。Ryan师从Yuanyuan Zhou老师,在复杂系统分析和研究上有很深造诣,毕业后在MSR当过postdoc,现在是JHU的AP。据CX说这是一篇质量很高的工作,很期待!
第二篇文章REPT,微软资深抓bug团队出品。在成熟的广泛使用的系统中找bug,其对于工业界的意义也是毋庸置疑,找出来一两个都是巨大的贡献。去年他们团队在SOSP上也有一篇分析和加速复现Concurrency Bug的文章,感觉这篇OSDI文章应该也是一篇实战催生的扎实工作。
第三篇和第四篇failure analysis的文章分别来自UT Austin和University of Waterloo,目前找不到额外的信息。
这个section的topic叫OSs,从这个名字看起来就已经包罗万象了。
第一篇文章LegoOS,一个为resource disaggregation设计的全新OS。Yiying Zhang的实验室最近在System领域的顶会上表现很强势,去年的SOSP上他们的工作LITE,做了一个kernel-level RDMA support,保持RDMA的低延迟高性能的同时提供一个高层次的抽象从而可以更好的构建基于RDMA的应用。感觉应该是名字起的不是那么好,不是很好搜索到,虽然是在github上开源,但是关注的人并不多。这里给个传送门。 LegoOS这个名字就起得非常好,容易搜索而且非常形象。一作是我的本科同班同学,单老板颜值高身材棒性格赞特别帅(点赞爆照??)。在我看来,resource disaggregation是所有构建应用的人的梦想,即透明地使用data-center内所有的资源,将其当作一台大电脑,不需要去考虑server boundary,resource locality等。如今,随着网卡技术的飞速发展,数据中心内部网络延迟,特别是rack内部的延迟已经非常可观,很多人做梦都想在某种程度上将其变成现实,而这也是近年一个研究的热点。OSDI'16上伯克利的文章就讨论了实现resource disaggregation所需要的网络,SOSP'17上还有一个Workshop on Resource Disaggregation。
第二篇文章出自MIT,标题就说明了一切,探讨了用高级语言编写POSIX kernel的好处和代价,非常的有意思。很期待这个高级编程语言是什么,python?(哈哈哈哈哈哈哈哈哈哈)
=====
经评论区大神指出是Frans大神用Go写的。Go有大厂推再加上还有k8s这样的killer app,现在已经在系统圈子占据相当的地位了。
第三篇文章出自UT-Austin和VMware,从Reconfigurable判断应该是FPGA相关的工作。
第四篇是来自CMU的关于checkpointing的文章。在一个异步执行的系统中,做checkpointing的标准做法是Chandy-Lamport algorithm。Flink就采用这个算法来做到exactly-once这个feature。很好奇这篇文章的Adaptive和Dynamic所对应的方法。
Arachne是斯坦福John Ousterhout带队出品的一个user-level thread lib,现在可以看到一个预览版,对于KV store有显著的加速效果,可以减少超过10x(卧槽!)的tail latency。很难想象在这种经典的问题,没有GPU没有FPGA,就是普通的CPU内存,还能有这么显著的突破,感觉是黑科技!
第二篇文章和第三篇文章目前还找不到任何相关信息,分别是UW-Madison和University of Michigan做的工作。
第四篇文章RobinHood的一作是CMU的一个Postdoc,之前在NSDI'17上发表了AdaptSize,一个用ML方法优化CDN缓存的工作,带来的性能提升非常的显著,让我印象深刻。而RobinHood这篇文章的idea从他的NSDI poster也可以得窥一二。
第一个工作Noria,来自MIT,相关的短文在网上可以找到,只不过system换了个名字,主要的idea是说通过streaming和暂存一些状态,从而加速query。
第二个工作来自上交的IPADS实验室,海波老师是真的强,年年有SOSP和OSDI。这篇文章的idea从名字上判断是把transaction进行解耦分类,然后对不同类型应用不同的优化从而达到整体最优。一作Xingda Wei是做分布式transaction的高手,在这个topic上有SOSP,ATC和OSDI三篇高水平的工作了,很强!
======
感谢评论区大神指出这个工作是按照OCC协议的阶段解耦,按阶段行为、硬件特性来选择适合的primitive
第三篇文章还是UW-Madison的工作,不过可以在Mosharaf教授的博文中得窥一二,主要的idea是根据当前data-center的resource的状态来改变query plan。
第四个文章是CMU,Microsoft和ETH合作的文章,在ArXiv上有预览版。主要是说在Video上运行CNN做Object detection非常消耗计算资源,而他们提出一种低代价低精度的CNN检测方法,并且配合高精度的CNN校验,并基于此设计了一个系统。这个idea其实很直观而且获得的资源节省性能提升也是可以预期的,主要是这一系统设计方法到底有多通用,以及这里面是否需要新的系统设计方法的支持,这些都需要仔细阅读他们的文章。
第一篇文章是Xi Wang大神的工作,跟他之前的OSDI'16的工作Push-Button Verification和SOSP'17的工作Hyperkernel一脉相承。第二篇和第三篇的工作是Xi Wang大神的老师Frans Kaashoek和Nickolai Zeldovich的工作。而最后一篇的工作来自于Microsoft Research。我对这种形式化验证的方法了解颇浅,这里就不班门弄斧了。
FuzzyLog是一个放宽一致性限制的log系统,不严格要求total-ordered,允许partially-ordered的更新和存储,很好奇这会给application端带来什么新的好处和机会。代码已经开源在github。
Maelstrom是facebook做的一个数据中心级别的容灾系统,目前还找不到额外的资料,不过感觉还是很值得一看的。
第三个工作还是UW-Madison出品的工作,探讨分布式系统上fault-tolerance的经典问题。
第四个工作关注的是可复现性的问题,从现在的摘要看来,他们关注的问题是:同样的程序在同样的机器上反复执行有可能会有不同的性能(interesting...)。这篇文章分析了一个10个月之久的超大trace来分析这种variance的原因,值得关注。
第一篇文章Pocket是斯坦福和IBM合作打造的一个弹性分布式数据存储系统。这里可以看到预览版的文章和slides,值得一读。
第二篇文章是Facebook的工作,现在还没有相关的信息。
第三篇文章是来自华科的工作,应该是华科的第一篇OSDI工作,恭喜恭喜!这个工作是提出一个在NVM上全新设计高性能Hash结构,针对写入操作做特别优化,按照作者的github判断,这个工作应该也会在近期开源。他们团队的工作最近在NVM上的工作取得了很大的突破,在今年的MICRO和OSDI上都有斩获。
第四个工作FlashShare是好多不同学校的韩国人合作的SSD上的存储优化工作。
这个章节的工作都不太熟悉,略过。
深度学习毫无疑问是当下系统届最为关注的应用之一,在上一届OSDI上面,Google发表了Tensorflow,宣告了以data-flow为抽象的通用的深度学习框架的到来。2年过去了,无论是学术界还是工业界,很多人都在思考,深度学习系统的设计是否适合当前深度学习算法应用的发展,深度学习基础架构是否已经到了终极形态,深度学习迈向实用和广泛部署还有什么挑战等问题。去年SOSP上相关的文章几乎没有,沉寂许久之后,今年Deep learning system卷土重来。在这个machine learning section里面,一共录取了4篇文章:Ray, TVM, Gandiva, PRETZEL, 分别讨论了深度学习系统应用的四个重要的问题: 1. 针对新型深度学习应用的系统设计 2. 深度学习程序在异构硬件上全自动编译器设计 3. 深度学习计算平台的设计 4. 深度学习模型服务部署上的优化
其中Ray是伯克利打造的分布式执行框架,从ArXiv预览版的文章看来,重点用于支持强化学习这类新型的重要机器学习应用。其设计的重点是将worker无状态化,并且配合高效的分布式调度器来提升整个系统的throughput。
TVM是陈天奇大神打造的全自动深度学习编译器,希望能支持异构硬件上的自动代码生成和优化。在我看来,这是深度学习走向实用和异构硬件飞速发展的今天非常实用的一个问题,也是非常具有挑战性的一个问题,如何把传统的编译技术和全新的应用、异构的硬件特性做一个好的抽象整合,非常考验系统设计的能力。知乎上的讨论都比较多,这里我就不赘述了。
Gandiva是我们通过对于微软内部深度学习训练平台的观察和思考,从而提出的全新的深度学习平台调度系统。深度学习任务对比以往big-data任务的本质不同在于其是一个feedback-driven的过程,用户往往为了一个特定的目标做着模型结构或者参数的搜索,而达到这个目标通常需要一系列的任务。于是,优化其中的某个任务并完成它,有的时候显得并不是那么的重要,而为用户提供early feedback则往往能加速搜索的过程。另外一方面,深度学习的发展使得不同计算任务间在资源需求和使用上呈现heterogenity,很难在一开始为一个任务找到最佳位置。不同于传统集群调度器把一个job或者task当作黑盒,仅在到达的时候做调度,我们利用了深度学习任务的周期性特性,通过观察和获取运行时的任务特性和数据来进行内省的反复调度,从而可以显著降低深度学习整个pipeline的时间,并且提升整个GPU集群的资源利用率。在Gandiva中,我们引入了对于计算资源的over-subscription并且提供了一系列全新的调度机制:suspend-resume, packing, time-slicing, migration, grow-shrink等等,从而做到了26%的集群资源利用率提升和10倍以上的AutoML加速。
PRETZEL是Seoul National University,Politecnico di Milano和Microsoft联合打造的Serving系统,从题目上判断应该是通过引入机器学习相关的特性来提升Serving系统本身的性能。
Splinter是犹他大学的一篇文章,关注Multi-tenant下存储的优化。
第二篇文章来自KAIST,是一篇Neural network for system的工作,这一系列的工作之前发表在HotNets'17上,分析了在CDN中引入DNN有什么潜在的机会和挑战,相信这篇OSDI文章就是对于这一问题的回答,非常值得期待。DL for system/networking也是最近讨论很多的一个焦点的话题,越来越多的文章证明DL可以在Job scheduling, congestion control上做到比传统的rule-based要好的结果,但是也开始有一些反对的声音,指出DL也有不佳的表现,并且因为DL是个黑盒,基本无从得知其原因。可解释性其实是DL的根本性问题,整个ML届还在为之努力,但是因为这样就完全放弃DL算法为系统和网络带来的好处在我看来是不对的,取而代之的应该是更好的系统抽象设计和方法,使得DL fail的时候可以被检测和处理,做到fail safety。
第三个工作Floem是伯克利,UW, UT-Austin多校合作的一个工作,在gitlab上开源,其描述是“Floem is a language, compiler, and runtime for NIC-accelerated network applications.”,感觉是希望打造一个统一的软件栈来构建支持SmartNIC的网络应用。
扫了一眼这个章节四个工作的标题,最吸引我的是第一篇文章Graviton,这是微软出品的Confidential Accelerators,旨在GPU上提供可信执行环境的工作,大致的idea可以从这个slides里面窥得一二。GPU能够提供高效的计算性能,现在变得越来越重要,但是GPU的设计之初就缺乏可信原语,这给很多的攻击带来了可乘之机。这篇文章希望能提供安全性的支持,并且尽量不损害GPU的使用性能。这是一个全新的问题,而且由于这个工作是微软而不是英伟达做的,没法有硬件或者驱动的支持,应该是一个纯软件的设计。我很好奇其系统的接口抽象和设计细节。
这一章节包含了传统的big-data system,graph system,和streaming system,总计有4篇文章入选,其中两篇关于graph mining。
ASAP利用了近似计算来加速graph mining。Graph mining和query approximation都是数据库领域近些年很火的topic,很多时候用户并不需要精确值也渐渐成为了大家的共识,很期待它们能给系统设计带来全新的insight。
RStream把graph mining做到单机上面,利用了关系代数的方法。感觉是一个crazy idea,反正我是没想出来怎么能做到,非常期待这篇文章。
第三篇工作是来自ETH的streaming system,应该和NSDI'18文章SnailTrail一脉相承的,我挺喜欢他们组做的文章,两个字,扎实。
最后一篇工作Flare是针对Spark在中等规模数据处理场景下做优化,由斯坦福和普渡联合完成(仿佛有什么不对?)。文章的投稿版本已经公开。作为大数据基础设施的标准之一,Spark在工业界里面可谓必不可少,而针对Spark的性能分析的文章从未停止过。早在15年,Kay的NSDI文章指出IO或者说commmunication并不是瓶颈所在,一时让人大跌眼镜。Flare这篇文章也指出Spark在处理中等规模数据上的性能问题,这其实跟Frank McSherry在COST文章中关于Efficiency和Scalability的讨论相呼应。从系统设计的角度来说,不同的系统设计的时候往往有潜在的关于应用场景和底层依赖的assumption,不可能适用于所有的情况,而深入的思考系统设计的局限性所在,往往是优化之道乃至有破旧立新的机会。