浅谈基准测试SPECjbb2000
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
浅谈基准测试SPECjbb2000
IBM 互联网服务器部李一峰
众所周知,当今许多应用软件都是用Java编写的,其优势是经过一次编写后,可运行在不同的操作系统平台上,有很大的灵活性。
但不同的Java版本运行在不同的硬件平台上,会反映出不同的性能。
如何判定不同硬件平台运行Java程序的效率,是Java使用者所普遍关心的问题。
1. SPECjbb2000 Java基准测试
SPECjbb2000 是SPEC委员会制定的一套Java基准测试程序,它是用于测试J ava服务器性能的。
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基准测试的结果。
HP 64-way 256GB Hotspot 64-bit Server 614358
Superdome (875MHz,
PA-8700+)
VM 1.4.0.01
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
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等这些基准测试更能贴近客户的实际情况,更能代表服务器的性能和扩展性。