对九年来文件系统和存储标杆测试的研究

人们对文件和存储系统领域的标杆实践的认识还比较少,因此我们对最近几年来发表的相关的会议论文进行了广泛的调查。我们决定评价这些评估者。我们在2008年5月号的《美国计算机学会存储汇刊》上发表题为《对九年来文件系统和存储标杆测试的研究》的文章。这篇文章调查了四大会议(SOSP:ACM操作系统规范研讨会议,OSDI:USENIX操作系统设计与实施研讨会,USENIX:高级计算机系统协会,FAST:USENIX文件和存储技术大会)在1999年和2007年间所发表的106篇论文中的415个文件系统和存储标杆。

我们的怀疑得到了证实。我们发现大部分流行的标杆都有缺陷,而且许多研究论文使用不良的标杆实践,并且没有明确的指标来显示系统的真正性能。我们对这些标杆进行了定性和定量分析:我们进行了一系列试验来探寻一些广泛使用的标杆是否会忽略或过分强调某些系统开销。最后,我们给出了一系列指导方针,我们希望这能够更好地帮助未来的性能评估。我们已经给出了更新后版本的指导方针。

标杆通常被用于显示软件或硬件的速度和性能。标杆结果将增加或削减产品的价值(金钱上的或其他方面的)。例如,标杆有可能被潜在用户用来进行购买决定,或被研究者用来帮助决定系统的价值。

系统标杆是一项复杂而艰巨的任务。这篇文章中所得出的许多经验教训也可以用于其他的系统领域。不过,文件和存储系统有独特的性质。I/O设备、高速缓存、内核守护进程和操作系统其它组件之间的复杂互动使得其行为非常难以分析。此外,不同系统还有不同的功能和优化,因此,仅凭一个标杆是难以做出决断的。最后,这些系统在现实世界中工作负荷上的差异性也增加了分析的困难度。

当进行一个系统的性能评估时,评估结果和分析结论都应该易于理解。这需要准确描述系统在真实工作负荷下的行为表现以及在最差环境下的表现,并解释采用这种标杆测试方法的原因。此外,读者还应该可以验证标杆结果,并可以将系统的标杆性能同其他系统进行比较。要达成这些目标,必须仔细选择合适的标杆和设置,并且应该将准确的结果合适地传达给读者。

作为我们调查的一部分,我们分析了这些会议论文(其中包括我们的一些论文)是如何执行这些标杆测试任务的。例如,为了准确描述标杆行为,通常必须让系统运行至少几分钟,并且要多运行几次来搜集多个数据点,而且必须提供一些统计分布指标(例如,标准差,置信区间,四分位数等)。在被调查的论文中,只有29%的标杆测试运行了至少一分钟,大多数标杆测试时间太短,难以得到稳定的准确结果。此外,大约一半的论文没有明确指出它们的标杆测试运行了几次,而只有不到20%的标杆测试运行了五次以上。我们的建议是,至少运行十次,给出十个数据点才能提供清晰的结果。最后,只有大约45%的被调查论文有提到统计分布。至于对系统行为的准确描述,大约38%论文在性能分析中只使用了一个或两个标杆。这通常不足以提供完整的结论。我们已经在网上附录中提供了调查的原始数据,这样其他人也可以浏览并用于未来的研究。

我们的调查描述了被调查论文所用的每个宏观标杆,并对其进行了定性分析,同时还包括我们认为值得讨论的其他标杆。我们还进行了实验,对两个最流行的标杆进行了更加定量的分析:编译标杆和Postmark(一种邮件服务器工作负荷)。为了进行分析,我们修改了Linux ext2文件系统,放慢了某些操作;我们称这个新的文件系统为Slowfs。

编译标杆测试软件编译所需要的时间。为了进行OpenSSH编译,我们将Slowfs的读取操作(该标杆中最耗时间的操作)放慢至多32倍,不过我们观察到的最高的时间开销只有4.5%。至于Postmark实验,我们使用了三种不同的工作负荷设置,这些工作负荷来自ext2和Slowfs的发布。我们学到了两件事情。首先,Postmark的设置参数会导致结果出现巨大波动,即使在ext2上面也是一样:波动范围是从2秒到214秒,而在2秒设置中,根本就没有执行任何I/O操作。让这个问题更加严重的是,很少有论文显示所有的参数:在我们的调查中,30篇论文中只有5篇这么做。其次,在一些设置下,标杆对Slowfs效果的显示要比其他系统多。

我们的建议是,根据目前可用的标杆集,一定要至少进行一次宏观标杆测试并进行多次微观标杆测试才能准确地描述文件或存储系统的性能。宏观标杆能够给出系统在一定工作负荷下的大体表现。如果使用跟踪数据,那么就要特别注意这些数据是怎么得来的,又是怎么重放的,以及它们是否能够反映真实世界的工作负荷。此外,微观标杆测试可以用于帮助理解系统的性能,可以测试其中多项操作来更好地理解整体性能,或突出系统的某些特别功能(比如系统表现特别好或表现特别差的情况)。

在性能评估中,作者应该改进他们描述的方式,以及他们为什么要这么做的理由,这两件事同样重要。在研究中,解释研究者行为背后的原因是一个非常重要的原则,但是在文件系统和存储性能评估领域,这个原则没有得到很好的遵守。理想情况下,研究者应该给出对系统预期行为的分析,然后让标杆测试来支持或推翻他们原来的假设。比起单纯的图表,这种研究方法对系统行为的分析更为深入。

我们认为当前的性能评估状况有许多改进空间。我们的调查结果有力地支持了这个论点。计算机科学仍然是一个相对年轻的领域,而实验评估还需要进一步向精密科学的方向迈进。解决方法的一部分就是尽快建立和完善标准。这需要对评估越来越重视的评论家以及实施实验的研究者来进行。解决方法的另一部分就是这种讯息需要更好地传播给所有人。我们希望这篇文章,以及我们正在持续中的工作,能够帮助研究者和其他人理解目前在文件和存储系统标杆测试领域中所存在的问题。解决方法的最后一部分就是在文件系统和存储研究者公开讨论的基础上建立标准化的标杆,或标杆套件。

我们这篇文章重点放在学术会议和杂志所公布的标杆结果上。另一个方面就是标准化的工业标杆。这里,我们对标杆的选择和运行,以及标杆结果的呈现没有多少兴趣,因为这些都是标准化的。另一个有意思的问题就是这些标杆的有效性,以及这些标准对如今市面上销售的产品的影响(正面的,或者负面的)

这个项目的目的就是让人们重视文件和存储系统中的标杆实践问题。我们希望人们对此能有更多的重视,相应的标准也能够建立起来,希望出现更多更严谨更科学的评估。自从这篇文章在2008年5月发表后,我们在UCSC(加州大学圣塔克鲁斯分校)成立了一个存储标杆测试工作组,并且我们在2009年第七期USENIX文件与存储技术大会(FAST)上也同兴趣爱好者进行了讨论。您可以在这个网站上看到更多的信息:http://fsbench.filesystems.org/