acm-header
登录

ACM通信

研究突出了

技术视角:评估计算机系统性能的方法


计算机科学在评估算法性能方面早就有了坚实的基础。一种算法所需时间的渐近复杂度定义得很好,通常也很容易处理,因此可以清楚地评估一种算法是否比另一种算法具有根本性的改进。更细微的和可选的评估,如平摊和随机分析,提供了对不同算法的基本优势的额外洞察。

不幸的是,在评估计算机系统的性能时,无论该系统是计算机体系结构、编译器、图形处理器还是运行时系统,情况都更加糟糕。给定一个特定的应用程序,在不同的系统上执行应用程序并评估哪个系统在提供的输入上执行该应用程序更快通常是相当简单的。当然,一旦应用程序在特定的输入上运行,一般就不需要在相同的输入上重新运行它。

程序员真正想要的是某种方法来评估哪个系统可能为未来运行的应用程序和数据集提供更好的性能,从而使其成为“更好的”系统。基准测试还提供了一种方法来检查各种系统组件在负载下的行为和交互。即使由独立的研究人员或测试组织重新运行,基准测试也应该给出可重复的结果。基准可以是真实的应用程序,也可以是合成的应用程序。

合成应用程序不计算任何有用的东西,而是设计成具有代表一系列实际应用程序的性能特征。

基准测试在计算机科学中有着悠久的历史。第一个被广泛使用的合成基准测试是1972年用Algol60编程语言编写的磨刀石基准测试,后来被翻译成许多其他语言。一些基准变得众所周知,并广泛应用于研究或商业环境,或两者。例子包括Livermore循环、Dhrystone基准测试、Linpack基准测试和Perfect Club基准测试。

然而,基准的设计和选择传统上一直是艺术和品味的问题,既是科学也是工程。DaCapo团队的这篇论文是我见过的为选择基准提供可靠基础的最好的文章。从历史上看,还没有任何标准方法来决定基准测试是否确实提供了特定领域内系统性能的代表性度量。基准的一个更严重的问题是,它们跟不上时代。在提出基准测试时,基准测试通常可以合理地评估应用程序的性能。然而,随着时间的推移,有三件事往往会使基准变得不那么有用:

  • 随着机器和内存增长得更快更大,应用程序数据集的大小也会增长。在提出基准测试时,被认为是合理的问题大小很快就变成了适合处理器上缓存的微不足道的示例。
  • 人们使用系统的实际应用程序随着时间的推移而发展,曾经具有代表性的基准变得越来越不具有代表性。
  • 附加在基准测试性能上的权重鼓励计算机系统的开发人员优化、调优和调整他们的系统,以提高他们在基准测试上的性能,而不是更普遍地,使基准测试再次不具有代表性。

几乎每一个系统研究人员和商业软件开发人员都有一个关于设计糟糕的基准测试的可怕故事,这些基准测试很难使用,产生了误导的结果,或者将注意力集中在错误的问题上太长时间。在我自己的经历中,有一个这样的故事,涉及到用于表示数据库基准的SPEC JVM98 db基准。一些关于从Java程序中删除冗余或无用同步的早期论文主要关注这个基准测试,因为删除这样的同步可以使基准测试的速度提高20%到30%。然而,更仔细的检查发现,这个基准测试中超过70%的CPU时间花在了一个写得很糟糕的20行Shell排序上;用调用内置排序函数替换手写排序,即使不删除无用的同步,执行速度也会翻倍。

DaCapo研究小组为评估Java计算机系统提供了一套精心设计的基准测试。这不仅包括选择基准应用程序,还包括设计一个支持基准执行的执行和评估的基础设施。

比实际选择基准和工程基础设施更重要的是,DaCapo团队对使用基准来评估Java系统性能的最佳实践进行了极好的描述,并提供了一种有原则的方法来评估一组基准应用程序实际上是否足够多样化。这种方法包括测量每个应用程序的许多特征,然后应用主成分分析(PCA)来确定应用程序是否存在根本差异,或者它们是否基本上测量系统的相同方面。我希望本文中描述的方法将允许对DaCapo基准套件和其他工具进行评估,以便它们能够以一种既有用又有意义的方式发展,而不仅仅是昙花一现。

回到顶部

作者

威廉·普(pugh@cs.umd.edu)是马里兰大学帕克分校计算机科学系的教授。

回到顶部

脚注

DOI: http://doi.acm.org/10.1145/1378704.1378722


©2008 acm 0001-0782/08/0800 $5.00

允许为个人或课堂使用本作品的全部或部分制作数字或硬拷贝,但不得为盈利或商业利益而复制或分发,且副本在首页上附有本通知和完整的引用。以其他方式复制、重新发布、在服务器上发布或重新分发到列表,需要事先获得特定的许可和/或付费。

数字图书馆是由计算机协会出版的。版权所有©2008 ACM, Inc.


没有发现记录

登录为完全访问
»忘记密码? »创建ACM Web帐号
文章内容:
Baidu
map