千核并发控制,如何评估其深渊之深?

摘要:凝视深渊:千核并发控制的评估 作者 Xiangyao Yu MIT CSAIL yxy@csail.mit.edu George Bezerra MIT CSAIL gbezerra@csail.mit.edu Andrew Pavlo 卡
凝视深渊:千核并发控制的评估 作者 Xiangyao Yu MIT CSAIL yxy@csail.mit.edu George Bezerra MIT CSAIL gbezerra@csail.mit.edu Andrew Pavlo 卡内基梅隆大学 pavlo@cs.cmu.edu Srinivas Devadas MIT CSAIL devadas@csail.mit.edu Michael Stonebraker MIT CSAIL stonebraker@csail.mit.edu 摘要 计算机架构正朝着多核时代迈进,单个芯片上集成了数十甚至数百个核心。这种前所未有的片上并行性引入了新的可扩展性维度,而当前的数据库管理系统(DBMS)并未为此设计。特别是随着核心数量的增加,并发控制问题变得极具挑战性。随着数百个线程并行运行,协调对数据的竞争访问的复杂性可能会削弱核心数量增加带来的收益。 为了更好地理解当前DBMS对未来CPU架构的准备不足,我们对多核芯片上的在线事务处理(OLTP)工作负载进行了并发控制评估。我们在一个主内存DBMS中实现了七种并发控制算法,并使用计算机模拟将系统扩展到1024个核心。我们的分析表明,所有算法都无法扩展到这种规模,但原因各不相同。在每种情况下,我们都识别出与特定数据库实现无关的根本瓶颈,并认为即使是最先进的DBMS也受到这些限制的影响。我们得出结论,与其追求渐进式解决方案,多核芯片可能需要一种从头开始构建并与硬件紧密耦合的全新DBMS架构。 1 引言 单线程性能指数级提升的时代已经结束。严格的功耗限制和复杂性迫使芯片设计者从单核转向多核设计。时钟频率在过去几十年中不断提高,但现在增长已经停止。激进的、乱序的、超标量处理器正被简单的、顺序的、单发射核心所取代[1]。我们正在进入多核机器的时代,这些机器由单个芯片上的大量小型、低功耗核心驱动。鉴于当前的功耗限制和单线程处理的低效性,除非出现颠覆性技术,否则增加核心数量是目前架构师能够提高计算能力的唯一途径。这意味着指令级并行性和单线程性能将让位于大规模的线程级并行性。 随着摩尔定律的继续,单个芯片上的核心数量预计将继续呈指数增长。很快,我们将拥有数百甚至上千个核心的芯片。单节点、共享内存DBMS的可扩展性在多核时代变得更加重要。但如果当前的DBMS技术不适应这一现实,所有这些计算能力都将浪费在瓶颈上,额外的核心将变得无用。 在本文中,我们窥探了这一严峻的未来,并研究了在一千个核心上进行事务处理时会发生什么。我们没有研究所有可能的可扩展性挑战,而是将范围限制在并发控制上。随着数百个线程并行运行,协调对数据的竞争访问的复杂性将成为可扩展性的主要瓶颈,并可能削弱核心数量增加带来的收益。因此,我们试图通过DBMS中最重要的组件之一来全面研究OLTP DBMS的可扩展性。 我们在主内存DBMS中实现了七种并发控制算法,并使用高性能的分布式CPU模拟器将系统扩展到1000个核心。从头开始实现系统使我们能够避免现有DBMS中的人为瓶颈,从而理解算法中的更根本问题。之前的可扩展性研究使用了现有的DBMS[24, 26, 32],但这些系统中的许多遗留组件并未针对多核CPU进行优化。据我们所知,尚未有在如此大规模的单DBMS上对多种并发控制算法进行评估的研究。 我们的分析表明,随着核心数量的增加,所有算法都无法扩展。在每种情况下,我们都识别出与DBMS实现无关的主要瓶颈,并认为即使是最先进的系统也受到这些限制的影响。我们得出结论,要解决这一可扩展性问题,需要与多核架构紧密协同设计的新并发控制方法。与其增加更多核心,计算机架构师将有责任提供硬件解决方案,以解决无法通过软件解决的DBMS瓶颈。 本文做出了以下贡献: 对七种并发控制方案的可扩展性进行了全面评估。 首次在1000个核心上对OLTP DBMS进行评估。 识别了并发控制方案中的瓶颈,这些瓶颈与具体实现无关。 本文的其余部分组织如下。我们首先在第2节中概述了评估中使用的并发控制方案。 VLDB Endowment会议论文集,第8卷,第3期 版权所有 2014 VLDB Endowment 2150-8097/14/11。 209 2 并发控制方案 OLTP数据库系统支持与最终用户交互的应用程序部分。最终用户通过发送请求与前端应用程序交互,以执行某些功能(例如,预订航班座位)。应用程序处理这些请求,然后在DBMS中执行事务。这些用户可以是个人电脑或移动设备上的人类用户,也可以是运行在世界其他地方的其他计算机程序。 在这些系统中,事务是在共享数据库上执行一个或多个操作(例如,SQL查询)以执行某些高级功能的序列[17]。
阅读全文