[论文笔记]Auto-tuning RocksDB for High Bandwidth and Low Latency(1)

319 阅读8分钟

[论文笔记]Auto-tuning RocksDB for High Bandwidth and Low Latency(1)

开启掘金成长之旅!这是我参与「掘金日新计划 · 2 月更文挑战」的第1天,点击查看活动详情

2023年,我将开始研究机器学习在数据库的应用,而论文csyjia.github.io/csyjia/pape…,就是新年工作的第一篇

摘要

基于Log-Structured Merge(LSM)的树状键值存储被广泛部署在数据中心。由于其复杂的内部结构,适当地配置一个现代的键值数据存储系统是一项非常具有挑战性的任务,该系统可以有50多个参数,有各种硬件和系统设置。目前,业界仍然严重依赖传统的、基于经验的、手工调整的方法来进行性能调整。许多人只是简单地采用开箱即用的默认设置,不做任何改变。因此,自动调整作为一种自适应的解决方案,对于在现实世界的部署中实现最佳或接近最佳的性能是非常有吸引力的。 在本文中,我们定量地研究和比较了五种优化方法,用于自动调整基于LSM树的键值存储的性能。为了评估自动调整过程,我们在RocksDB(一个有代表性的LSM树数据存储)上进行了一系列详尽的实验。我们在6个月内收集了超过12,000条实验记录,在不同的硬件设置上有6个参数的约2000个软件配置。我们从吞吐量、第99百分位数的尾部延迟、收敛时间、实时系统吞吐量和迭代过程等方面比较了五个代表性的算法。我们发现,多目标优化(MOO)方法可以在多个目标之间实现良好的平衡,满足了键值服务的独特需求。用户能提供的服务质量(QoS)要求越具体,这些算法就能达到更好的性能。我们还发现,并发线程的数量和写缓冲区的大小是决定不同硬件和工作负载的吞吐量和第99百分位的尾部延迟的两个最有影响的参数。最后,我们为自动调整的结果提供了系统级的解释,并讨论了对系统设计者和从业者的相关影响。我们希望这项工作将为键值数据存储系统的实用、高速自动调整解决方案铺平道路。

I. 简介

在今天的数据中心,基于日志结构化合并(LSM)树[46]的键值数据存储(例如LevelDB[24]和RocksDB[4])正在被广泛部署,用于高速数据处理。由于其复杂的内部结构,现代键值数据存储提供了许多可配置的参数(如缓冲区大小、线程数、表大小等),允许用户针对不同的硬件和工作负载调整系统性能。经过多年的优化,这样一套可配置的参数对于用户获得性能调优的细粒度定制能力来说是不可或缺的。例如,RocksDB,一个高度流行的键值数据存储在工业领域,在其最新版本中向系统管理员公开了50多个可调整的参数[4]。适当地配置一个键值存储对于运行时的性能至关重要。每个配置参数都控制着系统行为的某个方面,如并行度、I/O大小、事件触发频率等。所选择的配置参数实际上决定了观察到的性能。进一步考虑到现实世界部署中高度多样化的工作负载和硬件属性,在一个特定场景中运行最佳的配置可能不会在另一个场景中同样运行良好。换句话说,很难有一个普遍适用于所有情况的最佳设置。由于这个原因,在部署键值数据存储时,性能调整是一项重要的,但众所周知的繁琐、耗时和case-by-case的工作。 在目前的实践中,该行业仍然严重依赖传统的、基于经验的手工调谐方法,这大大增加了管理成本并推迟了部署时间。因此,自动调谐作为一种自动的自适应方法,具有很强的吸引力。作为一个通用的系统解决方案,自动调谐最初是为了克服人工调谐的不可扩展性而提出的。它已经被研究在各种场景中,如云存储、数据库、并行系统等[5]、[20]、[34]、[38]、[40]。这些先前的工作侧重于优化一个目标函数,如吞吐量、功耗或货币成本等。然而,这样的解决方案不能轻易满足快速部署键值存储系统的需要。 自动调整键值数据存储的一个独特挑战是,我们必须同时实现多个服务水平目标(SLO)[36], [49]。在一个典型的企业级应用场景中,数据存储系统需要保证实现两个重要但有时相互冲突的优化目标:吞吐量和延迟1(1 延迟SLO的主要优化目标通常是95 th, 99th甚至99.9th百分位数的尾部延迟[16], [28], [36], [49], [55])。这样的要求使得基于LSM树的键值数据存储的自动调优更具挑战性。

在本文中,我们定量研究并比较了五种有代表性的优化方法,用于自动调整RocksDB的性能,RocksDB是一种非常流行的基于LSM树的键值存储,为闪存SSD优化,以满足其独特的服务质量(QoS)要求。据了解,这是第一项对RocksDB上的自动调谐算法的功效和效率进行定量分析的工作,并对自动调谐过程提供了系统级的解释。我们的研究分两个阶段进行。

第一阶段。数据收集。为了定量展示自动调整算法的能力,我们用超过2000个软件配置、4个硬件设置和3个代表性工作负载对RocksDB进行了评估。我们在6个月内执行了超过12,000次实验运行。性能指标和相关信息被保存在一个MySQL[3]数据库中,供离线参考。这些信息包括硬件和工作负载的细节、参数设置、吞吐量、尾部延迟等。在本文中,我们专注于优化两个主要的SLO,吞吐量和尾部延迟(第99个百分点)。我们在本文中使用的方法也可以应用于实现其他优化目标,如功耗和货币

第二阶段:算法分析。我们选择了五种优化算法进行自动调整,即遗传算法(GA)[8]、非主导排序遗传算法II(NSGA-II)[19]、速度约束多目标群优化(SMPSO)[44]、ϵ约束法(ECM)[56]和加权和法(WSM)[43],并将它们应用于收集的真实实验数据,找到(接近)最优配置。在我们的研究中,所选的五种算法涵盖了单目标和多目标的优化方法,并代表了用于解决多目标优化问题的三种常见技术(第二节中讨论的先验法、正验法和无先验法)。我们的实验结果表明,虽然它们的功效不同,但如果有足够的时间,所有这五种算法都能够最终收敛,提供稳定的性能。然而,最佳算法根据服务质量要求而不同。我们还发现,多目标优化算法能够在多个目标之间实现良好的平衡。我们在这项工作中提出了12个发现,总结了我们对自动调谐算法的主要观察和理解,同时也为RocksDB提供了优化建议。

这在不同的平台上可能有所不同。相反,我们的主要目的是比较和了解在RocksDB上应用自动调整算法的实际效果,特别是多目标优化算法,并获得关于它们在现实世界部署中的行为的重要见解。我们希望我们的研究结果和相关的系统含义将为系统设计者和从业者铺平道路,为键值数据存储开发一个实用、高效和有效的自动调整解决方案。

本文的其余部分组织如下。第二节给出了背景。第三节介绍了研究方法。第四节介绍了对五种自动调谐算法的比较分析。第五节讨论了超调算法的影响。第七章讨论了这项工作的局限性和成本。第八节介绍了相关工作。最后一节是本文的结论。