浅谈基准测试SPECjbb2000

发表于:2007-05-22来源:作者:点击数: 标签:测试基准浅谈基准测试specjbb2000
众所周知,当今许多应用软件都是用 Java 编写的,其优势是经过一次编写后,可运行在不同的操作系统平台上,有很大的灵活性。但不同的Java版本运行在不同的硬件平台上,会反映出不同的 性能 。如何判定不同硬件平台运行Java程序的效率,是Java使用者所普遍关

众所周知,当今许多应用软件都是用Java编写的,其优势是经过一次编写后,可运行在不同的操作系统平台上,有很大的灵活性。但不同的Java版本运行在不同的硬件平台上,会反映出不同的性能。如何判定不同硬件平台运行Java程序的效率,是Java使用者所普遍关心的问题。

1.     SPECjbb2000 Java基准测试

SPECjbb2000 是SPEC委员会制定的一套Java基准测试程序,它是用于测试Java服务器性能的。SPECjbb2000模拟了三层客户/服务器模型结构,所有的三层结构都在一个JVM(Java虚拟机)内实现。

这三层结构模拟了一个典型的商业应用结构:第一层是用户(客户端输入);第二层是商业应用逻辑;第三层是数据库。在SPECjbb2000里,第一层是用进程或线程模拟客户系统的随机输入;由Java类和Java对象形成的Btree模拟第三层的数据库;在第二层里是对Btree数据库中的数据进行操作,其结构图如下:

结构图

SPECjbb2000 基准测试借用了TPC-C基准测试的概念、输入产生、和交易模式。只不过,SPECjbb2000用Java类取代数据库中的表(Table),用Java对象取代数据库中的记录(Record)。SPECjbb2000主要关心的是第二层业务逻辑的处理能力,即考察用Java编写的应用程序运行在某台服务器上所表现出的性能。

SPECjbb2000规则中要求只运行一个Java虚拟机(JVM)。在整个测试中,以下因素是影响测试性能的关键:

  •   JVM(Java虚拟机)

  •   JIT(即时编译)

  •   Garbage Collection(垃圾收集)

  •   Thread(线程)等技术

  •   操作系统的内核处理

  •   CPU的整型处理能力、Cache的大小,内存大小和结构。

  •   服务器SMP的线性扩展能力。

SPECjbb2000测试中,并没有考察到网络、磁盘I/O、和图形处理能力。

2. SPECjbb2000 Java基准测试结果分析

下表收集了一些厂商的服务器运行SPECjbb2000基准测试的结果。

机器型号 CPU Memory JVM版本 结果(ops/s)
HP Superdome 64-way (875MHz, PA-8700+) 256GB Hotspot 64-bit Server VM 1.4.0.01 614358
Sun Fire 15K 104-way (1050 MHz, UltraSPARC III) 576GB HotSpot 64-Bit Server VM on Solaris/SPARC version 1.4.0_01 602270
Sun Fire 15K 72-way(1050 MHz, UltraSPARC III) 288GB HotSpot 64-Bit Server VM on Solaris/SPARC version 1.4.0_01 433166
HP Superdome 32-way (875MHz, PA-8700+) 128GB Hotspot 1.4.1.02 64-bit VM on HP-UX11i for PA-RISC 8700+ 346862
pSeries 690 Turbo 32-way (1300 MHz, POWER4) 128GB J2RE 1.3.1 IBM AIX 5L for PowerPC (64 bit JVM) 339484
Sun Fire 6800 24-way (1200 MHz, UltraSPARC III) 48GB HotSpot Server VM on Solaris/SPARC, version 1.4.2 231121

上述结果截止于2003年5月31日。

SPECjbb2000测试值的好坏更多的依赖于Java虚拟机的性能,而且受系统带宽的影响较小。在硬件台不变的情况下,JVM版本的升级会带来性能几倍的提升。

从上表中可看到HP Superdome 32-way比IBM p690 32-way测试值高,虽然HP Superdome的CPU主频低于IBM p690的CPU主频,但是其使用的JVM的版本已经是1.4.1.02,而IBM p690上的JVM版本是1.3.1。从详细的测试结果中去看,HP Superdome 64-way的机器在启动到32个客户端时的值是335403 ops/s,低于其32-way(32个客户端)机器的测试值。原因就在于32-way机器测试时使用的是JVM 1.4.1.02,而64-way机器使用的是JVM 1.4.0.01。

Sun Fire 15K 104-way 的测试值高于IBM p690 32-way,除了JVM版本较高外,其测试时的CPU个数很多。另外,我们还要看到Sun Fire 15K在启动到55个客户端时的测试值是334986 ops/s,低于IBM p690 32-way(32个客户端)的值。

2. 小结

SPECjbb2000反映的是Java虚拟机的性能,但在实际中该值常被用来说明服务器的扩展性,尤其是我们的友商常用它来证明它们的服务器的性能是最优的、扩展能力是线性的。

SPECjbb2000基准测试完全是在内存中运行,不涉及I/O操作、网络操作等。如果用它来衡量服务器的整体能力和扩展性,这未免以点带面过于主观,TPC/C、Oracle ASB11i、SAP等这些基准测试更能贴近客户的实际情况,更能代表服务器的性能和扩展性。

原文转自:http://www.ltesting.net