Abstract
参数调优很有效,但是难度很大,自动调参系统很有必要。尝试了很多黑盒调优技术,做了大量实验,并对它们的有效性、收敛速度、调参过程中存储系统的吞吐量进行了比较。发现最优参数配置会随着硬件、软件、工作负载变化而变化。基于这个结果和领域专业知识,我们开始从系统角度解释这些自动黑盒优化方法的功效。
1 Introduction
存储系统参数很多,默认参数配置性能通常不高,通过调参可以带来巨大的性能提升。
人工调参效果不好,而黑盒自动调参的方法很受欢迎。例如,遗传算法(GA
)用于优化基于HDF5
的应用程序的 I/O
性能;
贝叶斯优化(BO
)用于为云虚拟机寻找一个接近最佳的配置。其他方法包括进化策略、智能爬山和模拟退火。
黑盒自动调参的基本机制是迭代地尝试不同的配置,测量目标函数的值,并基于先前学习的信息,选择下一个配置进行尝试。对于存储系统,目标函数可以是吞吐量、能源消耗,甚至是结合不同指标的公式。
目前,这些方法应用在调参上的功效和效率没有深入了解,本文首次在存储系统上应用并分析比较了多种黑盒技术。并做了很多实验,会公布数据集。尝试的方法有:模拟退火(SA
)、遗传算法(GA
)、贝叶斯优化(BO
)、深度Q网络(DQN
),在足够的时间内,可以收敛到良好的配置,但是它们的效率差异很大。GA
和BO
无论是在收敛速度和瞬时吞吐量上,效果都比SA
和DQN
好。而且这些优化算法的超参数设置(例如GA
中的突变率)可能会影响调整结果。
本文进一步比较了三个行为维度上的技术创新:
- Exploration(探索) :该技术随机搜索了多少空间
- Exploitation(利用):该技术在多大程度上利用了当前候选人或先前的搜索历史的“邻居”来寻找更好的配置
- History(经验): 在整个搜索过程中保留和利用了先前评估得出的数据量。
自动调整存储系统是相当复杂且具有挑战性的。在收集详尽的数据时,我们进行了一些必要的假设和简化,我们将在第3节中详细介绍。因此,当我们将某些观察结果应用于生产系统时,可能会有所不同。
本文的其余部分安排如下:
- 第2节阐述了自动调整存储系统的挑战并提供了必要的背景知识。
- 第3节介绍了我们的实验方法和环境。
- 第4章中,我们应用了多种优化方法,并从各个方面进行了评估和说明。
- 第5章介绍了我们的工作限制和未来计划。
- 第6章列出了相关工作。
- 第7节中总结并讨论了未来的发展方向
2 Background
存储系统作为计算机系统的重要组成部分,存在大量可调参数。调整这些参数,可以极大影响系统的性能表现、能源消耗等。
在配置存储系统时,用户通常会坚持使用供应商提供的默认配置,因为
1) 几乎不可能知道跨多个层的每个参数的影响;
2) 存储系统的默认配置被认为“足够好”;
但是,以往的研究表明:即使调整一小部分的参数,都会极大提升存储系统的性能。
2.1 Challenges
由于以下四个挑战,存储系统的调优任务很困难。
-
巨大的参数空间
现代存储系统相当复杂,很容易带有数百甚至数千个可调参数。对存储系统的一次评估可能需要几分钟甚至几 小时,这使得详尽的搜索变得不切实际。即使是人类专家也无法知道每个参数的确切影响,因此对如何优化也知之甚少。
-
非线性
当输出与输入不成正比时,系统是非线性的。许多计算机系统都是非线性的,包括存储系统。如下图所示,
pagepool Size
的改变和性能改变并不成比例。
-
不可重用的结果
以前的研究表明,存储系统和数据库的评估结果取决于特定的硬件和工作负载。当环境变化时,一个良好的配置可能也会变差。
-
离散和非数字参数
一些存储系统参数采用连续的实值,而许多其他参数则是离散的并且只采用有限的一组值。一些参数不是数字(例如,
I/O
调度程序名称或文件系统类型)。这增加了使用基于梯度的调参方法的难度。
2.2 Applied Methods
遗传算法 (GA
) 、模拟退火 (SA
) 、贝叶斯优化 (BO
) 和深度 Q 网络 (DQN
) ,尽管这些方法最初是在不同的学术领域中提出的,但它们都可以归为黑盒优化。
-
Simulated Annealing (
SA
)其灵感来自于冶金学中的退火过程,这涉及到材料的加热和控制冷却,以达到热力学自由能最小的状态。当应用于存储系统时,一个状态对应于一个配置。一个状态的邻居指的是仅通过改变当前状态的一个参数值而实现的新配置。热力学自由能类似于优化目标。SA通过保持系统的温度来工作,这决定了接受某种移动的可能性。SA并不像爬坡方法那样总是朝着更好的状态前进,而是定义了一个接受概率分布,这使得它可以接受短期内一些不好的动作,从而获取以后更好的动作。系统初始化时温度较高,因此在开始时接受较差状态的概率较高。温度根据预先定义的冷却时间表逐渐降低,从而随着时间的推移减少接受不良状态的概率。
-
Genetic Algorithms (
GA
)其灵感来自于自然选择的过程。它维护一个染色体群(配置),并对其应用一些遗传算子。交叉法是将两个染色体进行交叉并产生新的染色体。如图所示,两个父
Nilfs2
配置在同一交叉点被切割,然后交叉点之后的子部分在它们之间进行交换,生成两个新的子配置。更好的染色体将有更高的概率在未来的筛选阶段 "存活"。突变随机挑选一个染色体,突变一个或多个参数值,从而产生一个完全不同的染色体。 -
Reinforcement Learning (
RL
)其是一个受行为主义心理学启发的机器学习领域。
RL
探索代理如何在一个环境中采取行动,以最大化定义的累积奖励。大多数RL
算法可以被表述为一个由以下部分组成的模型:- 一组环境状态;
- 一组代理行动;
- 一组标量奖励。
在存储系统的情况下,状态对应于配置,动作意味着改变到不同的配置,奖励是评价结果的差异。代理人记录其以前的经验(历史),并通过一个价值函数使其可用,这可用于预测“状态-行动”对的预期奖励。政策决定了代理人如何采取行动,保持探索与开发的平衡。价值函数可以采取表格形式,但这并不能很好地扩展到许多维度。为了处理高维度的问题,人们提出了函数近似的方法,但人们仍然知道这种方法是不稳定的,甚至是分歧的。随着最近深度学习的进展,人们提出了深度卷积神经网络工程,称为深度Q网络(
DQN
),以参数化价值函数,并已成功地应用于解决各种问题。许多DQN
的变体已经被提出来了。 -
Bayesian Optimization (
BO
)其是一个解决优化问题的流行框架。它将目标函数建模为一个随机过程,参数对应于一个存储配置。在开始时,给出一组先验点(配置),以获得整个参数空间的公平估计。
BO
的工作方式是根据以前的评价结果计算目标函数的置信区间,它被定义为评价结果最有可能落入的数值范围(例如,95%的概率)。下一个配置是根据预先定义的获取函数来选择的。每次新的评估都会更新置信区间和获取函数。BO
已经成功地应用于各个领域,包括超参数优化和系统配置优化。BO及其变体的不同之处主要在于其概率模型和获取函数的形式。在本文中,我们主要关注高斯先验和预期改进的获取函数。
2.3 Other Methods
尽管已经提出了许多优化技术,但我们认为并非所有优化技术都能为自动调整存储系统做出很好的选择。例如,由于存储系统的许多参数是非数值的,大多数基于梯度的方法(即基于线性回归)不太适合此任务。
-
控制理论(CT)
CT 历来用于管理线性系统参数 。 CT 为系统构建一个控制器,使其输出遵循所需的参考信号 。然而,CT 已被证明具有以下三个问题:
- CT 在控制非线性系统时往往不稳定 。尽管提出了一些变体,但它们不能很好地扩展。
- CT不能处理非数值参数;
- CT在学习阶段需要大量数据来构建一个好的控制器
-
监督机器学习 (ML)
监督机器学习已经在多个领域成功应用。然而,ML模型的准确性大量取决于训练数据的质量和数量,但是对于我们的问题,收集大量的参数空间是很困难的。
2.4 Unified Framework
已知大多数优化技术遵循“探索 -- 利用”的模式。在这里,我们引入第三个因素“历史”与上述的两个方法结合,扩展了统一的框架。
-
Exploration
定义如何搜索未知的区域。这通常包括纯随机性的搜索和基于历史引导的搜索。
-
Exploitation
定义如何利用历史来查找下一个样本。
-
History
定义之前的探索评估后,保留的数据。历史信息可用于帮助指导未来的探索和利用(例如,避免探索没必要的区域,或者选择以前从未探索过的区域)。
下表总结了上述技术如何通过维持这三个关键因素之间的平衡来工作的。
3 Experimental Settings
本节描述实验环境,参数空间,参数空间和优化算法的实现的细节。
-
Hardware
我们在两组机器上进行了实验,该机器具有不同的硬件,分为低端(
M1
)和中档(M2
)。我们在表3中列出了硬件详细信息。我们还使用Watts Up Pro ES Power Meter
来测量能源消耗 -
Workload
我们使用
FileBench
生成的四个典型的工作负载基准测试-
Mailserver
模拟多线程电子邮件服务器的
I/O
工作负载。 -
Fileserver
模拟托管用户主目录的服务器的
I/O
工作负载 -
Webserver
以高比例的读取呈现典型的静态
Web
服务器的I/O
工作负载 -
Dbserver
模仿在线事务处理(
OLTP
)数据库的行为
工作集大小会影响实验的持续时间。我们在这项研究中的目标是迅速探索大量的“参数 -- 性能值"。因此,我们决定牺牲工作集规模,从而增加我们可以探索的配置数量。我们在
FileBench
中使用了默认工作集大小,并运行了每个工作负载100秒,这足以在此设置下获得稳定的评估结果。实验收集了各种性能数据,适用于评估不同的优化方法 -
-
Parameter Space
由于主要目标是比较多种优化技术,我们希望我们的存储参数空间足够大而复杂。但是,存储系统的评估需要很长时间。考虑到多个硬件设置和工作负载的实验,我们决定使用最相关的存储器系统参数的合理子集进行实验。我们在与多个存储专家密切合作中选择了参数,这些存储专家有些多年的经验。
我们实验了7种
linux
文件系统,包括:Ext2
,Ext3
,Ext4
,XFS
,Btrfs
,Nilfs2
, andReiserfs
。我们的实验主要在两组参数上进行,称为存储V1
和存储V2
。我们从七个常见文件系统参数开始(显示在表2的前7行)中,并将其称为存储架
V1
,在M1
机器上测试存储V1
。然后,我们将搜索空间扩展了一个参数,I/O Scheduler,
,并将其称为存储V2
,在M2
服务器中评估存储V2
。请注意,某些参数值的组合可以产生无效的配置。例如,对于
ext2
,日记选项毫无意义,因为ext2
没有日志。要处理此操作,我们将值N/A
添加到现有参数范围内。具有N/A
值的任何参数被认为是无效的,无效的配置将始终以0作为评估结果(即没有吞吐量)。对于每一个工作负载和存储设备,V1
有1074个合法配置,V2有6222个。我们相信我们的搜索空间很大、很复杂,足以证明各种优化算法的效率差异。此外,许多所选择的参数通常通过存储专家进行和研究 ,对这些参数有着基本理解,这有助于我们理解自动调整的结果。
-
Experiments and implementations
我们的实验和应用包括两部分:
首先,我们在`M1`和`M2`机器上的每个工作负载和设备测试所有配置,并将结果存储在关系数据库中。我们收集了吞吐量,运行时间(包括设置时间)以及电源和能量消耗。为了获取更准确和稳定的结果,我们在相同的环境下对每个配置至少运行了3次,总实验总共超过450,000次。上面的数据收集将有益于后面的自动调参算法的评估,因为我们只需查询数据库以获取不同配置的评估结果,我们就可以简单地模拟各种算法,而无需重新运行进行实验。上面大量的测试结果也使我们明白全局最优的配置是多少,所以我们之后只需计算优化算法的输出和全局最优配置的差距即可。 其次,我们通过运行所需的优化方法获取输出的配置,并在数据库查询该配置的性能,以此来模拟自动调整存储系统的过程。我们的各种优化方法的实现主要基于开源库。我们使用`Pyevolve` 实现遗传算法,`Scikit`-`Optimize` 实现贝叶斯优化,以及基于`TensorFlow`实现`DQN`。我们实施了一个简单的模拟退火版本,具有线性和几何冷却时间表。我们的大部分都是通过将存储相关的概念转换为特定算法中的概念。例如,对于`GA`,我们将每个**存储参数**定义为**基因**,以及每个**配置**作为**染色体**。对于`DQN`,我们为状态、操作和奖励提供了特定于存储的定义。
4 Evaluations
我们的评估主要侧重于比较多种优化技术对自动调整存储系统的效果和速度,以及对我们观察的见解。
4.1 Overview of Data Sets
我们的实验方法是首先在不同的工作负载和测试机器下详尽地运行所有配置,我们将结果存储在数据库中以备将来使用。由于篇幅限制,在本节中,我们只展示了 18 个中的 6 个代表性数据集:M1
上的 2 个工作负载和 M2
上的 4 个设备×4 个工作负载。选择它们是为了
- 展示了硬件和工作负载对优化结果的影响
- 展示了更多的
SSD
结果,鉴于SSD
越来越受欢迎
图 3 显示了每个硬件设置和工作负载的所有配置中的吞吐量 CDF
。 Y
轴由每个实验设置下的最大吞吐量归一化。
每行上的符号标记默认的 Ext4
配置。正如所见,对于大多数设置,吞吐量值在很大范围内变化。最差的吞吐量与最好的吞吐量之比大多在 0.2-0.4 之间。在一种极端情况下,对于 M2
机器上的 File-server
和 HDD3
设备(缩写为 M2-Fileserver-HDD3
),与全局相比,最差配置相比于全局1最优配置每单位时间仅产生 1% 的 I/O
操作。这强调了调整存储系统的重要性:一个配置不当的系统可能会被明显地利用不足,从而浪费大量资源。然而,M2-Webserver-SSD
的吞吐量范围要窄得多,最差与最佳的比率接近 0.9。这主要归因于 Webserver
主要由顺序读取操作组成,这些操作由不同的 I/O
堆栈配置进行类似处理。图 3 还显示,默认的 Ext4
配置总是次优的,在大多数设置下,排名低于前 40% 的配置。对于 M1-Mailserver-HDD1
,默认的 Ext4
配置显示标准化吞吐量为 0.39,这意味着最佳配置的性能提高了 2.5 倍。
表 4 列出了相同的六种硬件和工作负载设置的最佳配置。正如我们所见,最佳配置取决于特定的硬件以及运行的工作负载。
-
改变硬件
对于
M1-Mailserver-HDD1
,全局最好的是Nilfs2
配置。但是,如果我们更改硬件并获得M2-Mailserver-HDD3
,则最佳配置变为Ext4
配置。 -
改变工作负载
同样,将硬件固定到
M2-*-SSD
并在不同的工作负载下进行试验会导致不同的最佳配置。
4.2 Comparative Analysis
在这里,我们提供了对自动调整存储系统的多种黑盒优化技术的第一次比较研究。正如 §2.2 中所讨论的,我们将评估重点放在一组有代表性的优化方法上,以及它们常见的超参数设置,包括
1) 模拟退火 (`SA`) -- 线性冷却表;
2) 遗传算法(`GA`)-- 种群规模为8,变异率为2%;
3) 深度 Q 网络 (`DQN`) -- 具有经验回放池和 α = 0.2,其中 α 表示代理采取随机行动的概率;
4) 贝叶斯优化 (`BO`) -- 具有预期改进 (`EI`) 和高斯先验;
5) 随机搜索(RS)-- 只执行随机选择而不替换;
请注意,SA
、DQN
和 RS
实验从默认的 Ext4
配置开始。 GA
和 BO
需要几个初始配置(先验点),我们将其设置为所有七个文件系统的默认配置。这使我们能够模拟真实世界的用例,其中用户经常使用默认设置部署他们的系统(并且可以从默认设置开始手动优化)。在当前的实验中,我们假设更改参数值是没有开销的。实际上,像块大小这样的参数可能需要重新格式化文件系统。图 4 显示了每种优化方法在 M2-Mailserver-HDD3
上的模拟运行; Y 轴显示目前找到的最佳配置的吞吐量值,X 轴是运行时间。本文中所有与时间相关的指标均基于评估每个存储配置的实际运行时间,该时间存储在我们的数据库中,这包括设置时间和基准测试时间。图 4 是在 Y ∈[15 : 19] 范围内放大绘制的,Y 轴上的蓝色数字(15.2)表示默认值,而红色数字(18.7)表示全局最优。在这里,我们将接近最优的配置定义为吞吐量高于全局最优值 99% 的配置。如图 4 所示,所有五种方法都能够逐渐找到更高性能的配置,但它们的效率和速度差异很大。 SA
表现最差,并陷入吞吐量值低于 18K IOps
的配置中。DQN
能够收敛到一个好的配置,但比 RS
花费更多的时间来实现这一点。 GA
和 BO
在这五种经过测试的优化方法中表现最好。他们都在一小时内成功地确定了一个接近最佳的配置。有趣的是,我们观察到纯随机搜索(RS
)比其他一些优化方法产生了更好的结果;原因是在搜索空间 M2-Mailserver-HDD3
中,总配置的 4.5%
接近最优。 RS 只需要击中其中一个即可达到良好的自动调整结果。
由于探索是优化的一个关键组成部分(见 §2.4),他们的评估结果也可能表现出一定程度的随机性。为了更彻底地比较它们,我们在相同的环境中运行每种优化技术 1,000 次。图 5 显示了评估技术找到接近最优配置的概率的结果,其定义与图 4 相同。Y 轴显示在特定时间内(X 轴)找到接近最优配置时所用次数占总运行次数的百分比。在 M2-Mailserver-HDD3
下,如图 5 上半部分所示,SA
的概率在 5 种算法中最低。即使在 5 小时之后,也只有大约 80% 的运行找到了一种接近最优的配置,这表明 SA
有时会陷入局部最优。对于其他优化方法,如果有足够的时间,超过 90% 的运行收敛到接近最优的配置,BO
优于 GA
,GA
优于 DQN
。RS
显示在接近5小时时找到近最佳配置的最高概率。这是合理的,因为给出了足够的时间,随机选择最终会达到近乎最佳点。
然而,当在M2-FILESERVER-HDD3
下进行相同的实验时,找到近最佳配置变得更加困难。 GA
和BO
仍然是最好的,尽管只有65%的运行能够在5小时内找到近最佳配置。 SA
,RS
和DQN
的概率低于40%,DQN
执行最差。这是因为M2-Fileserver-HDD3
下的全局最佳最优值是BTRFS
配置(参见表4)。优化算法更难以挑选这样的配置,原因如下:
1) 很少有`BTRF`配置驻留在默认`Ext4`配置的附近。
2) `BTRF`的有效配置少于所有配置的2%,这使得它们不太可能通过突变而被选择。
3) 相比于`MailServer-HDD3`的4.5%,该环境下的近乎最佳的配置数量仅占所有配置的0.2%;
以上结果聚焦于找到近最佳配置。但是,比较的另一个重要方面是算法在自我调整过程中的系统性能。如果目标系统部署在线的话,这尤其重要。在搜索参数空间时,需要一些随机(探索),但理想的优化算法应该在不良配置上花费更少的时间。要比较这一点,在图6中,我们在M2-MailServer-HDD3
下使用每种方法,绘制每次运行,在运行时间(X 轴)下的实时吞吐量(Y 轴)。BO
和GA
在瞬时吞吐量方面仍然是最好的两种方法。在调谐过程中,偶尔将挑选比当前的配置更糟糕的配置。但是,它们都具有快速丢弃这些不良配置的能力。通过在基于适应力(即吞吐量)来指定下一代生存概率来实现这一目标。具有低吞吐量值的配置具有较低的机会作为父母被选中,因此他们的基因就会有较低的机会出现在下一代的配置中。BO
瞬时吞吐量稳定的原因是它使用智能获取函数来指导选择下一步,其目标最大化潜在增益;这使得BO
不太可能选择不良配置。相比之下,SA
可能表现不佳,因为它缺乏指导利用和探索阶段的历史,并且只使用其邻域信息(和当前温度)来选择下一个配置。 DQN
显示与RS
的类似结果,这可能是由于DQN
最初被设计为与未知环境交互的代理机器人,因此在训练阶段发生了很多探索(随机性)。
总之,我们的结果表明,不同优化算法的有效性在自动调整存储系统中变化很多。利用,探索和历史之间的权衡在找到近乎最佳配置中发挥着重要作用。然而,许多调参技术的众所周知的问题是它们的性能大量取决于超参数设置。我们的一些观测结果可能只适用于我们的特定设置和搜索空间。本文的主要目标不是提供更多适合自动调整存储系统的准则;相反,我们专注于比较多种方法并在不同条件下了解它们的作用。
4.3 Impact of Hyper-Parameters
许多优化方法的功效取决于特定的超参数设置,并选择合适的超参数对研究人员造成了很长时间的困难。在本节中,我们以GA
为例研究,并展示了一个超参数:突变率,对自动调整结果的影响。突变率控制着将一个参数随机突变为不同值的概率(即探索)。
图7展示了在M2-Mailserver-HDD3
环境下,不同突变率(从1%到64%)下的七组实验。每个实验都被重复了1,000次运行。它类似于图5,但目标是找到吞吐量值高于全局最佳的99.5%的最佳配置。这使得优化更具挑战性,因为GA
在更容易任务(§4.2)上已经非常好。如图所示,当增加突变率时,GA具有更高的概率在较短的时间内收敛到近最佳配置。这是因为GA
通过识别优势基因子集(参数)的等位基因(参数值)的主要组合来作用。我们定义了优势参数,即比其他参数产生更大影响的参数。更高的突变率意味着更高的探索可能,从而在较短的时间内发现了显性基因的良好等位基因的组合。我们在§4.4中解释了这一效果。然而,64%的突变率实际上表现比32%更差。这是因为为了达到近乎最佳的配置,GA
需要同时探索和利用。Exploration让GA
识别未知的子空间(即某些参数值的组合),而Exploitation有助于GA
在有希望的子空间内搜索。在这种情况下,突变率为64%,GA在Exploration中花费太多时间(太多的随机),导致Exploitation机会较少。
4.4 Peering into the Black Box
尽管黑盒优化在自动调整系统参数上有一些成功的应用,但很少有人解释某些技术是如何以及为什么在某些问题上比其他技术更好。在这里,我们迈出了解开“黑匣子”的第一步,并根据我们的评估结果和存储领域知识提供了对其内部的一些见解。
我们对解释的尝试源于 GA
在实验中有些出乎意料但有益的行为。我们发现,当 GA 运行时,通常有一小组等位基因(参数值)占主导地位,并且不太可能改变。我们在图 8 中展示并解释了这一观察结果。该实验是在由 M2-Fileserver-SSD
下的 2,208 个 Ext3
配置组成的参数空间上进行的。X
轴显示用红线分隔的5个基因(参数),而一列代表一个等位基因(参数值)。参数用表 2 中的缩写表示。Y 轴显示基因代数,我们只绘制了前 8 代。根据每一代的等位基因数量对细胞进行着色,更频繁的等位基因用较深的颜色着色。在第一代中,基因的等位基因(参数值)非常多样化。例如,Block Size
基因有 3 个等位基因(1K
、2K
、4K
),Journal Option
基因有 3 个等位基因(journal
、ordered
、writeback
)。然而,等位基因的多样性在后代减少,几个基因开始占主导地位,甚至收敛到一个等位基因。对于 Block Size 基因,只有 4K
等位基因幸存下来,另外两个已经灭绝。由于 GA
是通过模拟自然选择过程提出的,其中具有更好适应度的等位基因更有可能存活,这表明 GA
通过识别良好等位基因的组合(存储参数值)并产生具有这些等位基因的后代来发挥作用。如图 8 所示,在第 8 代中,所有配置的 Block Size
为 4K
,Journal Option
为 writeback
。
为了证实上述观察结果,在图 9 中,我们绘制了所有 Ext3-SSD
配置,一个点对应一种配置。配置根据Journal Option
分开(X
轴),并根据其Block Size
着色。为了清楚地看到每个 X
轴部分内的所有点,我们按照数据库中的唯一标识号对配置进行了排序。Y
轴代表吞吐量值。这导致在图上形成九个“集群”,每个对应一个固定的<Journal Option, Block Size
>对。我们可以看到,data=ordered
的配置往往比 data=journal
的配置产生更高的吞吐量,而 data=writeback
产生的吞吐量最好。从存储的角度来看,这在一定程度上是预料之中的,因为 Ext3
中日志选项(data=journal
)更加容错,可能会因为首先将数据和元数据写入日志,从而影响到吞吐量。此外,在 data=writeback
的日志配置中,具有 4K
块大小的日志配置会产生最高的吞吐量。这与我们在图 8 中的观察一致,即 GA
通过识别对性能具有更大影响的基因子集(Block Size and Journal Option
),并为它们找到合适的参数值([4K, data=writeback]
)来工作。
基于这些观察,一个有趣的问题是,参数子集对性能的影响比其他参数更大的结论是否也适用于其他文件系统和工作负载。为了回答这个问题,我们量化了每个参数和吞吐量值之间的相关性,由于我们的大多数参数是分类或离散数值,而吞吐量是连续的,我们采用了一种通用方法来量化分类变量和连续变量之间的相关性。我们以Block Size
参数为例进行说明,由于它可以取 3 个值,我们将此参数转换为三个二进制变量 x1
、x2
和 x3
。如果 Block Size
为 1K
,我们分配 x1 = 1
,x2
和 x3
设置为 0,让 Y
代表吞吐量值。然后我们在 Y
和 x1
,x2
,x3
上使用普通最小二乘法 (OLS
) 进行线性回归。 是统计学中的常用指标,用于衡量数据如何拟合回归线。在我们的方法中, 实际上量化了所选参数和吞吐量之间的相关性。我们认为 > 0.6 表明该参数对性能有显着影响,这在统计学中很常见。相同的计算适用于 M2-Fileserver-SSD
和 M2-Dbserver-SSD
下每个文件系统的所有参数。表 5 中具有最高 值的参数以黄色背景(最重要的参数)着色。如果所有 值都低于 0.6,我们只需将条目留空,这意味着没有发现高度相关的参数。为了找到第二个重要参数,对其余参数应用相同的过程,但最重要的参数的值是固定的(以隔离其对其余参数重要性的影响)。在M2-fileserver-ssd
下ext4
作为一个示例,我们在使用相同Journal Option
的前提下,计算所有其他参数的 值。对于一个参数,3个Journal Option
导致三个值; 然后,我们将最大值作为此参数的值。我们在表5中将最高的以绿色背景(第二重要的参数)着色。
我们可以看到相关参数是完全不同的,并且很大程度上取决于文件系统。例如,在M2-Fileserver-SSD
下,Ext3
最重要的两个参数是Journal Option
和 Block Size
,这与我们在图8和9中的观察结果保持一致。但是,对于Reiserfs
,前2名就变成了 I/O Scheduler
和Journal Option
。有趣的是,BTRF
的所有参数都具是较低的值,这表明没有参数对具有BTRF
的M2-Fileserver-SSD
下的系统性能显着影响。
参数的相关性也取决于工作负载。例如,M2-fileserver-ssd
下的XFS
的两个主导参数是Block Size
和Allocation Group
。当工作负载更改为M2-DBSERVER-SSD
时,XFS
的所有参数似乎对性能产生了轻微的影响。在本文中,我们正在研究每个参数的影响,从而假设它们对吞吐量的影响是独立的。请注意,上述观察是基于我们所收集的数据集,并可能随着工作负载和硬件变化,观测结果也会变化。但是,我们的方法是普遍设用的。此外,本文的主要目标不是在某些工作负载下建议对特定存储配置的指导;相反,我们专注于比较多种优化方法,并在实验中给出我们的见解。
参数重要性变化的事实也可能有助于解释§4.2中的自动调整结果。虽然我们的参数空间有8个参数,但是只有它们中的一些子集是与性能高度相关的。只要优化算法识别出这些主导参数的“正确”组合,它就能够找到近最佳配置。类似的行为已经在超参数优化问题中被观测到。对于图4所示的实验,近乎最佳配置占整个搜索空间的4.5%。
- 随机搜索(
RS
)需要只搜到其中一个就可以实现良好的自动调整结果。 -
GA
的有效性来自于它可以增大那些包含主导参数的配置生存的几率。 -
BO
将其先前的搜索经验(历史)存储在它建立的概率代理模型中,最终会输出可能导致好吞吐量值的主导参数值的组合。 -
SA
表现不好,是因为它缺乏历史信息来识别主导参数,它把时间浪费在改变对性能没用的参数上,并且收敛速度很慢。 - 同样,
DQN
也花了很多努力探索希望不大的空间,这减缓了找到近最佳配置的速度。
5 Limitations and Future Work
在本文中,我们提供了第一次在自动调整存储系统上应用多种优化方法的比较分析。但是,自动调整是一个复杂的主题,需要更多的努力。我们列出了这项工作的一些限制以及我们未来的研究方向。
1) 我们计划将评估范围扩展到更复杂的工作负载和搜索空间。我们将调查更多技术,例如实验设计,以及算法超参数设置的影响。
2) 我们计划改进传统的优化技术,使其具有新的功能,例如应对花费巨大的参数改变动作的惩罚功能,停止/重启的标准,工作负载识别,处理嘈杂和不稳定的结果等,这样自动调整算法对环境变化就具有更好的鲁棒性,并且更普遍适用于生产系统。
6 Related Work
-
Auto-tuning computer systems
近年来,人们进行了多次尝试以实现存储系统调优的自动化。
Strunk
等人建议使用结合不同系统指标和应用GA
的实用功能来自动化调整存储系统配置。Babak
等人利用 GA 来优化HDF5
应用程序的I/O
性能。GA
也已应用于存储恢复问题。最近,Deep Q-Networks
已成功应用于优化Lustre
的性能。自动调优也是其他计算机系统中的一个热门话题:Bayesian Optimization
被应用于为数据库和云虚拟机寻找近乎最优的配置。其他应用技术包括Evolutionary Strategies
、Simulated Annealing
、Tabu Search
等。然而,以前的工作都集中在一种或几种技术上。我们工作的一个贡献是对多种适用的优化方法从各个方面在自动调整存储系统中的功效进行了首次比较研究。我们还提供了一些关于自动调整工作机制的见解。 -
Hyper-parameter tuning
进化算法、强化学习和贝叶斯优化已应用于
ML
算法的超参数优化,Bergstra
和Bengio
发现随机选择的试验对于超参数优化比在网格上的试验更有效,并将原因解释为目标函数具有低有效维数。另一个研究方向侧重于消除所有超参数并尝试提出优化方法的非参数版本。这方面的例子包括GA
和BO
7 Conclusions
优化存储系统可以提供显着的好处,尤其是在提高 I/O 性能方面。但是,存储系统变得越来越复杂,包含许多参数和大量可能的配置;因此手动调整是不切实际的。更糟糕的是,其中许多参数是非线性的或非数字的;传统的基于线性回归的优化技术不能很好地解决此类问题。曾多次尝试将黑盒优化技术应用于自动调整存储系统,但它们都只使用了一种或几种技术。在这项工作中,我们进行了第一次比较研究,并提供了以下四点贡献
1) 我们评估了五种流行但不同的自动调整技术,改变了它们的一些超参数,并将它们应用于存储和文件系统。
2) 我们表明,这些技术找到最佳或接近最佳配置(在吞吐量方面)的速度取决于硬件、软件和工作负载;这意味着没有一种单一技术可以“统治所有这些”。
3) 我们解释了为什么某些技术似乎比其他技术更有效。
4) 两年多来,我们收集了超过450,000个数据点的大数据集;该数据集用于本研究,我们计划发布。