快捷搜索:  xxx  as  1111

Linux 平台的 JVM 性能评测

在Linux平台上,Sun的Hotspot机能很一样平常,不犹如样情况下Windows下的Hotspot体现好;

IBM的JVM无论在Linux照样Windows平台机能很卓越,不过IBM主要照样把精力放在Linux/Unix平台上,它的Windows平台的JVM到1.3.1机能口碑很好,然则今后就没有再零丁宣布新版本,是以从IBM网站也只能下载到Windows下1.3.1版本JVM,至于Linux平台下的1.4.1版本的JVM机能体现尚待查验;

而BEA的JRockit针对Intel 的CPU进行了指令优化,作为办事器的JVM来说在业界彷佛一贯评价颇好,然则我还不清楚JRockit在Linux上体现若何。此次我是要在SuSE Linux上跑jroller,是以主要关注3个JVM在我的SuSE 9上面的机能体现。

由于要作为网站办事器来应用,是以我还对照关注JRockit和IBM JVM的License问题,分手查了一下BEA和IBM的协议,看到这两个JVM都是可以免费应用,不管是开拓目的,照样产品目的,假如是购买了其公司其他产品,那么可以获得免费的JVM方面的support,假如只是从网站下载应用其JVM,那么就没有免费的support,然则有商业付费的support。

在TSS上面有一个关于JRockit的Thread:

http://www.theserverside.com/news/thread.tss?thread_id=22895

Cameron Purdy对付3个JVM的评价如下:

引用:

Every application is different, so there is no single "best JVM." These JVMs only compete on the x86 platform anyway, and they perform differently on Windows and Linux. The IBM JVM has been much faster at math (all number processing it seems) compared to the Sun JVM. The jRockit JVM has been much better at handling large numbers of threads and sockets. The Sun JVM has been the fastest at general business logic running in server mode, but there used to be stability issues with the hotspot server mode that prevented its use for many server applications.

To be honest, with the above exception noted, we've seen the most stability and least weird behavior with the Sun JVMs. I haven't had a chance to look at the latest BEA release, though, and it's probably the one that's been improving the fastest.

IBM JVM处置惩罚数学运算速率最快,BEA JVM处置惩罚大年夜量线程和收集socket机能最好,而Sun JVM处置惩罚平日的商业逻辑机能最好。不过Hotspot的Server mode被申报有稳定性的问题。而他尚未有时机考试测验一下最新的JRockit。

架设Blog系统我最关心的着实照样JVM的多线程处置惩罚能力和收集socket处置惩罚能力,是以应用闻名的VolanoMark Benchmark进行了这方面的测试

VolanoMark Benchmark是一个JVM机能测试法度榜样,任何人都可以自己下载来测试:

http://www.volano.com/benchmarks.html

这是2003年5月的测试申报

http://www.volano.com/report/

我下载了VolanoMark Benchmark,在Server上面分手安装了Linux版本的JRockit1.4.2,Sun JDK1.4.2,和IBM JDK1.4.1。改动了一下VolanoMark的测试脚本(有些小问题)。VolanoMark测试主如果运行Volano自己开拓的一个chat的web application,然后从客户端进行压力测试,统计web application单位光阴内处置惩罚并发哀求的能力。测试主要有两项:

1、Loopback测试

不进行收集传输测试,是以可以测试出来JVM的performance

2、 Network测试

经由过程收集进行测试,模拟真实情况的JVM处置惩罚能力。

办事器软硬件情况:

办事器CPU:超线程1.8Gz Xeon CPU × 2

操作系统:SuSE Linux9.0 Professional

Linux Kernel版本:2.4.21-202-smp4G

Glibc版本:glibc-2.3.2-88

Volano应用的是Tomcat4.0.3来做App Server。这也相符我的选择,我正筹备应用Tomcat来做App Server。每个测试分手履行三次,测试结果如下:

1、机能测试(Loopback)

Performance

VolanoMark version = 2.5.0.9

Messages sent = 20000

Messages received = 380000

Total messages = 400000

代码:

Sun JDK1.4.2

Average throughput = 8848 messages per second

Average throughput = 8060 messages per second

Average throughput = 8046 messages per second

代码:

IBM JDK1.4.1

Average throughput = 15620 messages per second

Average throughput = 17665 messages per second

Average throughput = 15666 messages per second

代码:

BEA JRockit1.4.2

Average throughput = 16549 messages per second

Average throughput = 15564 messages per second

Average throughput = 15736 messages per second

2、收集办事处置惩罚能力测试

VolanoMark version = 2.5.0.9

Messages sent = 10000

Messages received = 190000

Total messages = 200000

代码:

BEA JRockit1.4.2

Average throughput = 3938 messages per second

Average throughput = 3290 messages per second

Average throughput = 3648 messages per second

Average throughput = 3328 messages per second

代码:

Sun JDK1.4.2

Average throughput = 2225 messages per second

Average throughput = 2163 messages per second

Average throughput = 2080 messages per second

代码:

IBM JDK无法履行测试

测试总结:

在第一项机能测试中,3个JVM都完成测试,然则正如上面Purdy提到的一样,Sun的Hotspot JVM在server mode环境下会掉足,必须应用cliet mode。在机能测试结果来看,IBM的JVM和BEA的JVM旗敌相称,分值都相称高,而Sun的JVM机能差了险些一倍。

在第二项收集办事测试中,IBM的JVM无法完成测试,会呈现段地址差错,JDK版本和glibc版本不兼容造成的。Sun的JVM也必要改动一下JVM参数才可以顺利履行,从测试结果来看,BEA的JRockit仍旧遥遥领先于Sun的Hotspot。

颠末本次测试,已经决出了优胜者,便是BEA的JRockit1.4.2。当然JRockit也有一些不够,例如在内存耗损和CPU负载方面要显着高于别的两个JVM。

JRockit除了机能上的上风,也有着富厚的机能调剂选项和一个图形监控对象,和一个机能申报阐发对象,这对付JVM的调优有着异常大年夜的赞助,鉴于机能方面的上风,以及可治理性方面的富厚功能,我抉择选择JRockit作为Tomcat的JVM来应用。

您可能还会对下面的文章感兴趣: