论文部分内容阅读
规模经济带来的效益促使越来越多的计算向数据中心转移,而数据中心的资源利用率一直偏低。通过负载聚合的方式使一个服务器内同时运行多个任务成为一种提高资源利用率的有效方法。但是,服务器内运行的单体操作系统并不能很好地保证聚合的多任务间的性能隔离,尤其是在线应用的服务质量极易受到聚合应用的干扰。同时,在服务器内处理器核数快速增长的背景下,操作系统由于大量共享内核数据结构的同步与竞争而暴露出的可扩展性问题变得越来越严重,这种问题对于延迟敏感类应用表现得更加明显。本文以提高操作系统的隔离性和可扩展性为目的,提出来一种新的面向数据中心混合负载和众核处理器平台的操作系统模型,详细设计了第一个水平操作系统RainForest,并经过四年多的努力完成了系统原型的实现和评测。 本文的主要贡献和创新点如下: (1)提出了一种新的操作系统模型——水平操作系统模型。该模型基于三个基本原则:“水平分解的操作系统功能”、“操作系统实例的隔离性和弹性”和“受限和按需创建的状态共享”。模型将一个操作系统水平地分解成一个资源供应者supervisor和若干资源管理者subOS,使supervisor发现、监控和供应资源给subOS,而subOS独立地管理资源和运行应用程序。模型严格地限制了subOS之间共享的数据结构,但又允许按需地进行局部的共享。同时,本文提出了一种新的操作系统抽象——subOS,该抽象拥有类似操作系统进程的属性含义,并且与现有的系统抽象正交。 (2)设计了第一个遵循水平操作系统模型三个基本原则的操作系统RainForest。首先,RainForest使用先启动的操作系统作为supervisor,并通过内核模块RFcontroller集中地管理subOS实例。其次,系统基于处理器间中断和共享内存构建了一种新的实例间基础通讯机制。最后,将共享数据结构根据其更新频率和共享范围进行分类管理,完成了subOS的完整生命周期管理。 (3)实现了功能完整的系统原型RainForest V1.0。其主要功能包括:subOS的启动和销毁,CPU、内存和PCIe设备的高效管理,基本的通信机制,物理资源的快速调整,各种虚拟化设施,和用户态运行管理工具等,涉及到的修改或新增代码超过1.5万行。长期的测试表明其能够稳定运行于五种X86处理器平台。 (4)设计和构建了领域内第一个混合负载操作系统基准测试程序集。通过详细调研最近二十年来操作系统研究人员使用的操作系统基准测试程序,发现以往的工作忽略使用“混合负载”评测操作系统,并因此设计和构建了一个新的操作系统基准测试程序集Mbench,实现了一个可扩展的混合负载的测试工具。 (5)全面、深入地评测了水平操作系统原型RainForest的性能。通过使用包含Mbench在内的大量微基准测试程序和应用级测试程序,我们评测了RainForest原型针对五个设计目标的达成情况,并且与Linux-2.6.32、Linux-3.17.4、Linux-2.6.35M、LinuxContainers(LXC)和Xen进行了详细对比和分析。实验结果显示:1)subOS完全兼容Linux应用并且保持了本地Linux的性能;2)RainForest可以提高分布式部署的延迟敏感类应用的长尾延迟性能和CPU利用率,例如,如果以200毫秒作为服务质量,RainForest中Search的吞吐率比Linux、LXC和Xen依次高25.0%,42.8%和42.8%,同时,CPU利用率最大可提高16.6%。3)在静态和动态的混合负载中,RainForest相对于其它系统都表现出更好的性能隔离。其中,在动态混合负载且系统资源可灵活调整的场景中,RainForest上离线负载的运行时间相比LXC和Xen分别可以缩短11.5%和67.9%。4) RainForest具有更好的可扩展性。5)RainForest在运行内存计算(Spark)的负载时相对于Linux、LXC和Xen的最大加速比分别达到1.43x、1.16x和2.60x。