折腾系统,让它的性能提升10倍

(转载自 微软亚洲研究院

国际计算机系统架构体系学术会议SOSP 2017(Symposium on Operating Systems Principles)此刻正在上海如火如荼地举行。SOSP作为计算机系统领域最顶级的学术大会之一,若论文有幸被收录,影响力自然不言而喻。前不久,微软亚洲研究院与中国科技大学的联合培养博士生李博杰的一篇关于内存键值存储的论文就被该会议收录了。对于绝大多数非计算机行业的人而言,“内存键值存储”可谓大脑知识的盲区,是好奇心号船舶的一片深海。但对于92年的李博杰来说,这却已成为他生活的一部分。关于他的成长故事,可以从这个对我们陌生,而对他却万分熟悉的词语讲起。

“折腾”系统就是我的爱好

李博杰研究的内存键值存储,其实离我们的生活并不遥远。他的研究成果,也着实能让人感受到“科技,让生活更美好”的含义。李博杰举例道,如同我们在网上买东西,每一次购买过程的点击行为都需要计算反馈。像“双十一”当天全国人民齐心协力开启扫货的模式,就会对整个系统形成巨大挑战,键值存储的访问需求则高达每秒上百亿次。李博杰在做的,就是一个高性能分布式系统的基础架构,仅用357W的功耗就可以实现最高12.2亿次内存键值的访问,这意味着系统的性能可以提升10倍。

KV-Direct结构KV-Direct结构

李博杰所做的这个系统名叫KV-Direct,脱胎于2016年他和几位微软亚洲研究院实习生合作的一个老项目——ClickNP系统,该项目曾发表在网络领域的顶级会议SIGCOMM 2016上。ClickNP系统用FPGA可编程网卡加速了网络功能的处理,并提出了一个用高级语言编程FPGA的框架。

虽然ClickNP的架构已足够出色,但业界的相关研究并不少,李博杰觉得还可以更进一步,将它实现出来,并用到真正需要的场景中去。因此,他与另一位实习生阮震元合作,在微软亚洲研究院首席研究员张霖涛博士的指导以及肖文聪、陆元伟等同学的帮助下,用了八个月的时间完成了KV-Direct系统。在实现的过程中,他们还发现很多算法可以继续优化,而且以往键值存储是用于缓存的,现在则扩展到了内存计算的通用存储基础设施,如稀疏机器学习、图计算等都能用到非常密集的键值存储,这大大提升了该系统的实用价值。

KV-Direct系统KV-Direct系统

KV-Direct到底有多强大?李博杰举了个形象的例子:假如春运火车票抢票的操作是一次键值访问,那么只需一台KV-Direct服务器,就能无障碍实现全国人民每人每秒抢票一次。

介绍项目时,这位年仅25岁的博士生脸上洋溢着研究者独有的自豪感。而介绍自己时,李博杰说“折腾系统就是我的爱好”,如今爱好成为了自己的研究方向,感觉自己很幸福。而之所以进入系统研究领域,微软亚洲研究院可谓是他的“引路人“。

从高不可攀到触手可及

起初,李博杰没想到自己会来微软亚洲研究院。本科时期的他给自己的规划是出国深造,与微软则缘起于当年的“微软小学者”奖学金项目,在面试的时候意外地了解到了“中国科学技术大学-微软亚洲研究院联合培养博士项目”,该项目可以在微软亚洲研究院进行硕博连读的学习。深思熟虑之后,李博杰决定加入微软亚洲研究院系统组,成为一名联合培养博士生。随着时间的推移,在这条路越走越顺的李博杰越发觉得这是个明智的选择。

在加入微软亚洲研究院之前,李博杰一直觉得这是“大神“的聚集地、“牛人”的试验田,做的都是炫酷无比、飞在云端的黑科技,谈理论、搞尖端,全部高不可攀。而来到研究院没多久后,他发现,做研究一点也不神秘,这里“大神”们的成果其实都是源于每个人的勤奋认真、独立思考和创新务实。

经历了4年实地锤炼打磨,李博杰不仅收获了“将研究成果熟练总结成文”、“不断开拓业界视野”、“学会如何分析地思考(Analytical Thinking)”等硬技能,还发觉了微软亚洲研究院的“另一面”——它更像是年轻人释放潜能的战场、实习生迸发活力的舞台,在这里大家研究的都是实实在在变革行业的新技术,接地气,讲方法,一切触手可及。

与李博杰有着类似经历的,还有系统组曾经的实习生赵旭和陈海波。赵旭目前正在加拿大多伦多大学深造,对于在微软亚洲研究院“触手可及”的最新技术、最新产品,他感受颇深:“相比本科生在学校实验室能参与到的研究,微软亚洲研究院提供了更加贴合实际的研究机会。而且微软独一无二的大型云平台系统和遍布全球的大规模数据中心,让我们有可能进行一些非常独特且实用的研究,并可以直接在现有系统上进行测试。”赵旭当年在微软亚洲研究院的实习成果,也以联合作者的身份发表在了国际计算机系统领域另一顶级会议OOPSLA 2014上。

现为上海交通大学教授的陈海波,是微软亚洲研究院2007年的实习生。他回忆道,在实习期间,恰逢麻省理工学院(MIT)的Frans Kaashoek教授在微软亚洲研究院学术休假,于是便在Frans的指导下开展了Corey众核操作系统的研发工作。Frans的点拨,尤其是对于自己批判性思维的建立,至今都令他受益匪浅。在微软亚洲研究院,因为能人辈出所以才更有可能接触到业界的顶尖思路,而对于系统研究这门极为前沿和概括的学科来说,导师的引领、思路和灵感同样关键。

对微软亚洲研究院的实习生而言,研究员们的谦逊和细致,同事们的能量和活力,都是经验补足之余,生活的温暖馈赠。李博杰回忆起他刚加入微软亚洲研究院时,最未意料到的是导师早在他项目开始之前便已亲自写好上千行的代码,设计好了系统的基本架构,之后又从简单的模块手把手教起,事无巨细、循序渐进地指引他独自“上路”。

而最令导师欣慰的是,包括李博杰、赵旭、陈海波等在内的多位系统组现在和曾经的实习生,都在今年的SOSP大会上有论文入选(文末附有论文列表),在自己的学术之路上又踏出了坚实的一步。

从小打小闹到全力以赴

李博杰在计算机方面的才能并非无迹可寻。早在中学时期,对数学、计算机饶有兴致的他就开始学做一些简单的编程。微软在硬件方面先驱性的投入,以及导师们的指导和帮助更是让李博杰如虎添翼,把这份爱好发挥到了极致。李博杰如今的“折腾”,早已不是小打小闹,他不仅已经做出了初步的成绩,甚至还咂摸出了一些哲学意味。

在刚刚结束的第十九届二十一世纪的计算大会上,微软全球资深副总裁Peter Lee和微软全球资深副总裁、微软亚太研发集团主席兼微软亚洲研究院院长洪小文为李博杰等10位优秀博士生颁发了“微软学者”称号。(中间:李博杰)在刚刚结束的第十九届二十一世纪的计算大会上,微软全球资深副总裁Peter Lee和微软全球资深副总裁、微软亚太研发集团主席兼微软亚洲研究院院长洪小文为李博杰等10位优秀博士生颁发了“微软学者”称号。(中间:李博杰)

系统研究,即便对计算机科班出身的人来说都是很抽象的,但李博杰却乐此不疲,而且他发现系统研究领域吸引了大量的聪明人,为了解释这个现象,他引用了爱因斯坦《探索的动机》中所讲的观点。

首先是消极动机的驱动,如叔本华所说,把人们引向艺术和科学的最强烈的动机之一,是要逃避日常生活中令人厌恶的粗俗和使人绝望的沉闷,是要摆脱人们自己反复无常的欲望的桎梏。在一个项目里,总有许多非技术的因素、许多的历史遗留问题,而解决这些问题,耗费了工程师大量的时间,让工程师成了维护员。结果导致,修养有素的系统工程师会渴望逃避这种复杂性,不断创造出更简便的方法,最终让系统可以高效、自动的运转。

另一方面则是积极动机的引领。人们总想以最适当的方式画出一幅简化的、易领悟的世界图像。于是就有人试图用这样的世界体系来代替经验的世界,去征服现实——这就是画家、诗人、思辨哲学家和自然科学家所做的,他们都在按自己的方式去改造世界。在李博杰看来,本质上系统研究者亦是其中一员。他们所着眼的是现实系统中最通用的模块,他们的最高使命是得到那些普遍的基本抽象,并在此基础上用演绎的方法搭建高性能、可扩展、高可用、易编程的系统。

在这样一正一反两股冲劲儿的推动下,李博杰十分享受系统研究给他带来的乐趣。“拼了力,尽了兴,”李博杰如此形容到。

对于更多像李博杰一样想要加入微软亚洲研究院的同学而言,李博杰的建议是:不要只重视成绩,更要多动手自己做系统,去不同的实验室提升研究能力,多做工程项目提高代码能力,多花时间来开阔眼界。李博杰觉得这样做不仅仅是为求职增加砝码,更因为爱智与探索自有其魅力。

部分微软亚洲研究院系统组现在和曾经的实习生在SOSP 2017的录用论文信息如下,供大家参考、了解:

KV-Direct: High-Performance In-Memory Key-Value Store with Programmable NIC
Bojie Li (USTC and Microsoft Research); Zhenyuan Ruan (UCLA and Microsoft Research); Wencong Xiao (Beihang University and Microsoft Research); Yuanwei Lu (USTC and Microsoft Research);Yongqiang Xiong (Microsoft Research); Andrew Putnam (Microsoft); Enhong Chen(USTC); Lintao Zhang (Microsoft Research)

Sub-millisecond Stateful Stream Querying over Fast-evolving Linked Data
Yunhao Zhang, Rong Chen, HaiboChen (Shanghai Jiao Tong University)

Log20: Fully Automated Optimal Placement of Log Printing Statements under Specified Overhead Threshold
Xu Zhao, Kirk Rodrigues, Yu Luo, Michael Stumm, Ding Yuan (University of Toronto); Yuanyuan Zhou(University of California, San Diego)

Hyperkernel: Push-Button Verification of an OS Kernel
Luke Nelson, Helgi Sigurbjarnarson, Kaiyuan Zhang, Dylan Johnson, James Bornholt, Emina Torlak, Xi Wang (University of Washington)