|
<P>众所周知,当今许多应用软件都是用Java编写的,其优势是经过一次编写后,可运行在不同的操作系统平台上,有很大的灵活性。但不同的Java版本运行在不同的硬件平台上,会反映出不同的性能。如何判定不同硬件平台运行Java程序的效率,是Java使用者所普遍关心的问题。</P>
<P><B>1. </B><B>SPECjbb2000 Java基准测试</B></P>
<P>SPECjbb2000 是SPEC委员会制定的一套Java基准测试程序,它是用于测试Java服务器性能的。SPECjbb2000模拟了三层客户/服务器模型结构,所有的三层结构都在一个JVM(Java虚拟机)内实现。</P>
<P>这三层结构模拟了一个典型的商业应用结构:第一层是用户(客户端输入);第二层是商业应用逻辑;第三层是数据库。在SPECjbb2000里,第一层是用进程或线程模拟客户系统的随机输入;由Java类和Java对象形成的Btree模拟第三层的数据库;在第二层里是对Btree数据库中的数据进行操作,其结构图如下:<BR></P>
<P>SPECjbb2000 基准测试借用了TPC-C基准测试的概念、输入产生、和交易模式。只不过,SPECjbb2000用Java类取代数据库中的表(Table),用Java对象取代数据库中的记录(Record)。SPECjbb2000主要关心的是第二层业务逻辑的处理能力,即考察用Java编写的应用程序运行在某台服务器上所表现出的性能。</P>
<P>SPECjbb2000规则中要求只运行一个Java虚拟机(JVM)。在整个测试中,以下因素是影响测试性能的关键:</P>
<UL>
<LI>
<P> JVM(Java虚拟机)</P>
<LI>
<P> JIT(即时编译)</P>
<LI>
<P> Garbage Collection(垃圾收集)</P>
<LI>
<P> Thread(线程)等技术</P>
<LI>
<P> 操作系统的内核处理</P>
<LI>
<P> CPU的整型处理能力、Cache的大小,内存大小和结构。</P>
<LI>
<P> 服务器SMP的线性扩展能力。</P></LI></UL>
<P>SPECjbb2000测试中,并没有考察到网络、磁盘I/O、和图形处理能力。</P>
<P><B>2. SPECjbb2000 Java</B><B>基准测试结果分析</B></P>
<P>下表收集了一些厂商的服务器运行SPECjbb2000基准测试的结果。</P>
<TABLE cellSpacing=1 cellPadding=2 width=443 border=0>
<TBODY>
<TR bgColor=#999999>
<TD><B>机器型号</B></TD>
<TD><B>CPU</B></TD>
<TD><B>Memory</B></TD>
<TD><B>JVM版本</B></TD>
<TD><B>结果(ops/s)</B></TD></TR>
<TR>
<TD>HP Superdome</TD>
<TD>64-way (875MHz, PA-8700+)</TD>
<TD>256GB</TD>
<TD>Hotspot 64-bit Server VM 1.4.0.01</TD>
<TD>614358</TD></TR>
<TR bgColor=#e7e7e7>
<TD>Sun Fire 15K</TD>
<TD>104-way (1050 MHz, UltraSPARC III)</TD>
<TD>576GB</TD>
<TD>HotSpot 64-Bit Server VM on Solaris/SPARC version 1.4.0_01</TD>
<TD>602270</TD></TR>
<TR>
<TD>Sun Fire 15K</TD>
<TD>72-way(1050 MHz, UltraSPARC III)</TD>
<TD>288GB</TD>
<TD>HotSpot 64-Bit Server VM on Solaris/SPARC version 1.4.0_01</TD>
<TD>433166</TD></TR>
<TR bgColor=#e7e7e7>
<TD>HP Superdome</TD>
<TD>32-way (875MHz, PA-8700+)</TD>
<TD>128GB</TD>
<TD>Hotspot 1.4.1.02 64-bit VM on HP-UX11i for PA-RISC 8700+</TD>
<TD>346862</TD></TR>
<TR>
<TD>pSeries 690 Turbo</TD>
<TD>32-way (1300 MHz, POWER4)</TD>
<TD>128GB</TD>
<TD>J2RE 1.3.1 IBM AIX 5L for PowerPC (64 bit JVM)</TD>
<TD>339484</TD></TR>
<TR bgColor=#e7e7e7>
<TD>Sun Fire 6800</TD>
<TD>24-way (1200 MHz, UltraSPARC III)</TD>
<TD>48GB</TD>
<TD>HotSpot Server VM on Solaris/SPARC, version 1.4.2</TD>
<TD>231121</TD></TR></TBODY></TABLE>
<P>上述结果截止于2003年5月31日。</P>
<P>SPECjbb2000测试值的好坏更多的依赖于Java虚拟机的性能,而且受系统带宽的影响较小。在硬件台不变的情况下,JVM版本的升级会带来性能几倍的提升。</P>
<P>从上表中可看到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。</P>
<P>Sun Fire 15K 104-way 的测试值高于IBM p690 32-way,除了JVM版本较高外,其测试时的CPU个数很多。另外,我们还要看到Sun Fire 15K在启动到55个客户端时的测试值是334986 ops/s,低于IBM p690 32-way(32个客户端)的值。</P>
<P><B>2.</B><B>小结</B></P>
<P>SPECjbb2000反映的是Java虚拟机的性能,但在实际中该值常被用来说明服务器的扩展性,尤其是我们的友商常用它来证明它们的服务器的性能是最优的、扩展能力是线性的。</P>
<P>SPECjbb2000基准测试完全是在内存中运行,不涉及I/O操作、网络操作等。如果用它来衡量服务器的整体能力和扩展性,这未免以点带面过于主观,TPC/C、Oracle ASB11i、SAP等这些基准测试更能贴近客户的实际情况,更能代表服务器的性能和扩展性。</P>
[ 本帖最后由 Kingson 于 2007-5-29 16:10 编辑 ] |
|