(转载自 科大新创公益基金会

计算机系统领域的顶级国际学术会议SOSP 2017(操作系统原理大会)前不久在上海举行。自1967年首届SOSP以来,操作系统和分布式系统教科书里大半的内容都出自SOSP会议。因此,系统领域的研究者普遍把在SOSP上发表论文视作一种荣誉。今年SOSP收录的39篇论文中,仅有两篇的第一作者来自中国大陆,其中就有中国科学技术大学三年级博士生李博杰和大四本科生阮震元合著的KV-Direct系统。这也是中国科学技术大学首次在SOSP上发表论文。作为本科生,阮震元是如何一步步实现科大在SOSP会议上“零的突破”的呢?

超算鸿雁队:追求极致性能

阮震元在参加超算比赛阮震元在参加超算比赛

凭借中学在计算机编程竞赛的积累,阮震元早在本科低年级,就加入了科大计算机科学与技术学院安虹教授的高性能计算实验室。自2012年组建超算鸿雁队以来,先后组织了17支队伍、102人次参加国内外高性能计算竞赛,所参加的赛事均取得了优异成绩。超算鸿雁队凭借先进的实验基础设施和赴美参加国际高性能计算大会(SC)的机会,吸引了计算机科学与技术专业最优秀的一批本科生。

超算竞赛对学生的系统设计和实现能力是一次全面的锻炼,从应用优化、软件框架到硬件平台,参赛学生需要与厂商一起设计和组装一套小型超算系统,在3000W的功耗限制内对指定的一系列应用优化出尽可能高的性能。这些应用横跨多个学科领域,所用的Infiniband网络、GPU加速卡、高性能服务器等硬件也是学生难得一见的顶级配置,在参赛现场短短的三天时间里更是要争分夺秒地组装调试系统、分工运行应用,对学生学习新知识、分析性能瓶颈、调试解决故障、团队协作的能力提出了很高的挑战。

连续五年,超算鸿雁队培养的本科生王元戎(0911)、兰武伟(1011)、贺松涛(1111)、张智帅(1211)、阮震元(1311)获得了中国科大本科毕业生的最高荣誉——郭沫若奖学金。阮震元作为超算鸿雁队 2015 年的技术骨干和系统管理员,获得了2015年国际大学生超算竞赛的第三名,并担任 2016 年超算鸿雁队的教练,为2016年包揽总分和Linpack性能双料冠军贡献了技术积累。阮震元个人也在2014年国际学生RDMA编程竞赛中取得冠军,在2015年中国计算机学会与Intel公司联合举办的全国并行计算竞赛中取得冠军。凭借这些成绩,阮震元不仅获得了郭沫若奖学金,还获得了更加稀有的中国计算机学会杰出本科生奖、安徽省杰出本科毕业生奖等。安虹老师指导阮震元所做的本科毕业论文也被评为校优秀毕业论文。

在学生高性能计算竞赛中小有所成后,阮震元开始进一步挑战更为专业的学术研究。这一次,他选择了新创校友基金会资助的UCLA CSST暑期科研项目。

UCLA海外交流:学术研究的开端

阮震元在UCLA师从计算机体系结构领域的泰山北斗Jason Cong(丛京生)教授,研究课题是Apache Spark的性能预测模型。在短短两个月的交流中,阮震元不仅需要学习课程,还要与一个博士后一起,从选题、调研、设计、实现到投稿,完成一篇论文的整个流程。在两个月的时间内完成一篇论文,每周要在组会上做一次进度报告,即使对于一个有经验的研究员而言,也是充满挑战的。阮震元凭借卓越的计算机系统基础和强大的“码力”(快速编写代码实现算法的能力),与合作的博士后花了几周时间调研清楚了相关工作和背景知识,在交流结束前取得了很大的进展。回国后,阮震元继续完善了后续的工作,并投稿到计算机体系结构领域的重要会议IPDPS’17上。

经过UCLA的交流,阮震元学会了做科研的整个流程,加上在科大超算竞赛期间对硬件体系结构和应用优化的经验积累,俨然像一个专业的研究员而不像懵懵懂懂的本科生了。在UCLA交流期间,导师Jason Cong教授尽管是华人,但学术交流都要求使用英文,对英文水平是很好的锻炼。通过在美国高校交流的亲身体验,阮震元坚定了出国深造、攻读博士学位的信念。新创校友基金会提供的奖学金和资助使阮震元能专注于此次暑期项目。新创曾报道过阮震元的此次交流经历:“海外交流奖学金”交流心得——阮震元

阮震元与Jason Cong教授结下了深厚的友谊,几乎未经犹豫,就选择了Jason Cong教授继续攻读博士学位,Jason Cong教授也对科大学生的专业能力交口称赞。一年后,阮震元推荐了科大创新试点班的崔天一(1400)参加同样的UCLA CSST交流项目,Jason Cong教授与北京大学联合培养的优秀博士毕业生张宸也回国加入了微软亚洲研究院。

从UCLA交流结束,阮震元又踏上了新的征程——与中国科学技术大学长期合作的微软亚洲研究院。

微软实习:科大校友的接力

微软亚洲研究院无线与网络组被誉为中国网络学术界的一面旗帜。连续五年,获得郭沫若奖学金的科大本科生兰武伟(1011)、贺松涛(1111)、李弈帅(1200)、阮震元(1311)、崔天一(1400)来到微软亚洲研究院无线与网络组实习。贺松涛在实习期间在移动计算领域的顶级会议MOBICOM 2015上发表了第一作者论文,并获得最佳演示奖。两年后,阮震元也在系统领域的顶级会议SOSP 2017上发表了第一作者论文。

阮震元来到微软实习的过程充满了科大校友相互提携的故事。2013年,大三的李博杰(1000)经班主任黄松筠老师推荐,通过层层筛选,被微软亚洲研究院无线与网络组首席研究员张永光博士招收为联合培养博士生。大四期间,李博杰在微软亚洲研究院资深研究员谭焜导师的指导下,进行了高性能网络数据包处理的研究,投稿到了SIGCOMM’14上,虽然没有被录用,但收获了学术研究的经验。下半年,李博杰研究了容错路由器的软件架构,并作为本科毕业论文。在这项研究中,李博杰接触到了宝贵的可编程交换机资料,为博士期间研究可编程数据中心网络奠定了基础。

李博杰等发表在SIGCOMM’16上的ClickNP高性能网络编程平台李博杰等发表在SIGCOMM’16上的ClickNP高性能网络编程平台

2015年,罗人千(1211)也被中国科学技术大学与微软联合培养项目录取了。在谭焜博士的指导下,李博杰与罗人千、彭燕庆(上海交大ACM班本科生)等合作,在计算机网络的顶级会议SIGCOMM 2016上发表了论文ClickNP,实现了中国科大在SIGCOMM会议上“零的突破”。ClickNP是一个在可重构硬件(FPGA)上用高级语言编程的框架,解决了FPGA编程难这个困扰网络学术界数十年的难题,使得软件工程师也能快速开发出高效处理网络数据包的FPGA硬件加速器,把当时最高效的网络处理软件的性能提升了10倍。

ClickNP投稿到SIGCOMM后,罗人千就推荐了他的同学、编程语言方面的专家李弈帅(1200)来微软进行三个月的实习。罗人千和李弈帅合作用可编程网卡实现RDMA协议,罗人千负责硬件实现,李弈帅负责编程接口,并以之作为毕业论文。李弈帅在实习结束前,推荐了他的师弟阮震元(1311)来微软实习,计划继续推进这个RDMA的项目。

在SOSP上发表的KV-Direct系统的四位合作者赶在截稿前提交论文之后,在微软亚洲研究院的电梯里:(从右到左)李博杰(1000)、阮震元(1311)、陆元伟(0902)、肖文聪(北航2010级)在SOSP上发表的KV-Direct系统的四位合作者赶在截稿前提交论文之后,在微软亚洲研究院的电梯里:(从右到左)李博杰(1000)、阮震元(1311)、陆元伟(0902)、肖文聪(北航2010级)

由于阮震元在科大超算比赛期间就有使用RDMA和系统性能优化的经历,尽管阮震元没有加入联合培养博士项目,谭焜导师仍破例批准了一年的实习期。阮震元第一次参加组会,就被经验资深、聪明机智的主管研究员熊勇强博士评价为“非常专业”。跟阮震元合作SOSP论文的李博杰(1000)、肖文聪(北航2010级)、陆元伟(0902)等微软联合培养博士生都认为他是见过的最强的本科生之一。事实上,除了在SOSP上发表的KV-Direct系统,阮震元还帮助陆元伟等同学在首届亚太网络研讨会(APNet’17)上发表了一篇论文,名列第三作者。

十倍加速:键值存储的里程碑

由于公司重组,2016年10月起,阮震元师从微软亚洲研究院系统组首席研究员张霖涛博士,研究重心从网络切换到系统,开始进行可编程硬件加速键值存储(key-value store)的研究。尽管键值存储对于非计算机行业的人来说非常陌生,但对淘宝、微信、微博之类的云端服务器系统来说是必不可少的部分。像“双十一”当天全国人民齐心协力开启扫货的模式,或者鹿晗的微博点击量爆表,就会对整个系统形成巨大挑战,键值存储的访问需求高达每秒上百亿次。阮震元和他的合作者在做的,就是一个高性能分布式系统的基础架构KV-Direct,仅用357W的功耗就可以实现最高每秒12.2亿次的内存键值访问,把系统的性能提升了10倍,被誉为“通用键值存储性能的里程碑”。举一个形象的例子,假如春运火车票抢票的操作是一次键值访问,那么只需一台KV-Direct服务器,就几乎能实现全国人民每人每秒抢票一次。

能支持最高每秒12亿次键值存储访问的KV-Direct系统(插了10块FPGA加速卡)能支持最高每秒12亿次键值存储访问的KV-Direct系统(插了10块FPGA加速卡)

在设计实现KV-Direct系统时,阮震元、李博杰和张霖涛导师有一个共同的疑虑:系统中有哪些挑战和创新。挑战和创新是一篇高质量论文的必备要素。2016年暑假,崔天一(1400)在微软亚洲研究院无线与网络组实习,开发了非常高性能的加密网络连接(HTTPS)加速器,虽然获得了微软Hackathon(黑客马拉松)全球第二名的好成绩,但由于创新性不足,并不值得在顶级会议上发表。幸运的是,KV-Direct系统并不像想象的那么简单。

KV-Direct系统结构(c)与最经典的结构(a)和较新一些的结构(b)的比较KV-Direct系统结构(c)与最经典的结构(a)和较新一些的结构(b)的比较

在经典键值处理系统里(如上图a所示),网络请求都是在服务器端的CPU上处理的,CPU的处理速度较为缓慢。因此一些较新的系统(如上图b所示)把请求处理从服务器端转移到客户端,解除了服务器端CPU的瓶颈,然而增加了网络传输的代价,多个客户端竞争同一个资源时还需要客户端间自行协调和同步。为此,KV-Direct提出用可编程逻辑门阵列(FPGA)取代CPU来进行网络请求处理(如上图c所示),请求仍然在服务器端处理,但是换了一个更合适的硬件体系结构。

然而,键值都是存储在内存里面,CPU访问内存带宽高、延迟低,而FPGA访问内存需要通过PCIe总线,带宽小了10倍左右,延迟高了10倍左右,经典键值存储系统的设计不再适用了。为了节约访问带宽、隐藏内存延迟,阮震元和他的合作者提出了一系列的优化方法,实现了接近硬件极限的键值存储性能。由于单块FPGA加速卡的接口带宽有限,还定制了一台服务器,服务器上插了10块FPGA加速卡,这就是前面那张插满卡的服务器照片所示的系统。

在长达半年的实现过程中,阮震元还克服了FPGA编程框架中存在的各种困难,踩了无数的坑,修了无数的bug,烧坏了六块FPGA板,终于实现了预期的性能。距离SOSP投稿截止还有两周的时候,只是测出了系统的基本性能,但还没来得及跟真实世界的应用整合在一起。阮震元、李博杰等不得不硬着头皮加班加点撰写论文,在张霖涛导师的指导和肖文聪、陆元伟同学的帮助下,在投稿截止前夜终于改出了一个可以拿上台面的版本。可想而知,很多审稿人认为没有评估真实应用场景下的性能是论文的一个重大缺陷。尽管如此,KV-Direct系统的卓越性能和精巧设计还是折服了审稿人,SOSP程序委员会最终决定录用这篇论文。

越走路越宽

上图为中国科学技术大学师生在SOSP的合影。其中包括微软亚洲研究院系统组发表的KV-Direct共同第一作者李博杰(1000,后排右三)、阮震元(1311,后排右一),以及来参加SOSP学生研究竞赛的微软亚洲研究院系统组实习生陆元伟(0902,前排右二)、崔天一(1400,前排左二)、左格非(1400,后排左七)。上图为中国科学技术大学师生在SOSP的合影。其中包括微软亚洲研究院系统组发表的KV-Direct共同第一作者李博杰(1000,后排右三)、阮震元(1311,后排右一),以及来参加SOSP学生研究竞赛的微软亚洲研究院系统组实习生陆元伟(0902,前排右二)、崔天一(1400,前排左二)、左格非(1400,后排左七)。

2017年10月,系统学术界举世瞩目的SOSP会议在上海召开。为了提高会议提问效率,SOSP’17首创在线提问,与会者在演讲进行过程中在线提交问题并投票,每个演讲结束后选出得票数最高的问题请演讲者回答。三天的会议上的39篇论文涵盖了系统方方面面,每篇论文只有一个在线提问机会。在850多位与会者中,阮震元提出的问题至少5次被选中,体现了广阔的知识面和对论文本质敏锐的洞察力。

2017年9月,阮震元开始在加州大学洛杉矶分校(UCLA)就读博士。相比很多发愁毕业的博士生,阮震元早在入学前就已经发表了两篇论文,其中KV-Direct实现了中科大在SOSP会议上“零的突破”。相比之下,以计算机学院GPA第一名获得的郭沫若奖学金已经算是个小荣誉了:郭沫若奖年年有,论文“零的突破”却不常有,本科生创造的“零的突破”更是凤毛麟角。从中科大超算鸿雁队,到新创校友基金会资助的UCLA CSST海外交流项目,再到微软亚洲研究院联合培养项目,阮震元的研究之路越走越宽。

阮震元 Linkedin 个人主页

Comments