實例解析Linux平臺的JVM性能評測
本文向大家簡單介紹一下Linux平臺的JVM性能評測,在Linux平臺上,Sun的Hotspot性能很一般,不如同樣環(huán)境下Windows下的Hotspot表現(xiàn)好。
Linux平臺的JVM性能評測
在Linux平臺上,Sun的Hotspot性能很一般,不如同樣環(huán)境下Windows下的Hotspot表現(xiàn)好;IBM的JVM無論在Linux還是Windows平臺性能很卓越,不過IBM主要還是把精力放在Linux/Unix平臺上,它的Windows平臺的JVM到1.3.1性能口碑很好,但是以后就沒有再單獨發(fā)布新版本,因此從IBM網(wǎng)站也只能下載到Windows下1.3.1版本JVM,至于Linux平臺下的1.4.1版本的JVM性能表現(xiàn)尚待檢驗;
而BEA的JRockit針對Intel的CPU進行了指令優(yōu)化,作為服務(wù)器的JVM來說在業(yè)界似乎一向評價頗好,但是我還不清楚JRockit在Linux上表現(xiàn)如何。這次我是要在SuSELinux上跑jroller,因此主要關(guān)注3個JVM在我的SuSE9上面的性能表現(xiàn)。
因為要作為網(wǎng)站服務(wù)器來使用,因此我還比較關(guān)注JRockit和IBMJVM的License問題,分別查了一下BEA和IBM的協(xié)議,看到這兩個JVM都是可以免費使用,不管是開發(fā)目的,還是產(chǎn)品目的,如果是購買了其公司其他產(chǎn)品,那么可以得到免費的JVM方面的support,如果只是從網(wǎng)站下載使用其JVM,那么就沒有免費的support,但是有商業(yè)付費的support。
在TSS上面有一個關(guān)于JRockit的Thread:
http://www.theserverside.com/news/thread.tss?thread_id=22895
IBMJVM處理數(shù)學運算速度最快,BEAJVM處理大量線程和網(wǎng)絡(luò)socket性能***,而SunJVM處理通常的商業(yè)邏輯性能***。不過Hotspot的Servermode被報告有穩(wěn)定性的問題。而他尚未有機會嘗試一下***的JRockit。
架設(shè)Blog系統(tǒng)我最關(guān)心的其實還是JVM的多線程處理能力和網(wǎng)絡(luò)socket處理能力,因此使用著名的VolanoMarkBenchmark進行了這方面的測試
VolanoMarkBenchmark是一個JVM性能測試程序,任何人都可以自己下載來測試:
http://www.volano.com/benchmarks.html
這是2003年5月的測試報告
http://www.volano.com/report/
我下載了VolanoMarkBenchmark,在Server上面分別安裝了Linux版本的JRockit1.4.2,SunJDK1.4.2,和IBMJDK1.4.1。修改了一下VolanoMark的測試腳本(有些小問題)。VolanoMark測試主要是運行Volano自己開發(fā)的一個chat的webapplication,然后從客戶端進行壓力測試,統(tǒng)計webapplication單位時間內(nèi)處理并發(fā)請求的能力。測試主要有兩項:
1、Loopback測試
不進行網(wǎng)絡(luò)傳輸測試,因此可以測試出來JVM的performance
2、Network測試
通過網(wǎng)絡(luò)進行測試,模擬真實環(huán)境的JVM處理能力。
服務(wù)器軟硬件環(huán)境:
服務(wù)器CPU:超線程1.8GzXeonCPU×2
操作系統(tǒng):SuSELinux9.0Professional
LinuxKernel版本:2.4.21-202-smp4G
Glibc版本:glibc-2.3.2-88
Volano使用的是Tomcat4.0.3來做AppServer。這也符合我的選擇,我正準備使用Tomcat來做AppServer。每個測試分別執(zhí)行三次,測試結(jié)果如下:
1、性能測試(Loopback)
Performance
VolanoMarkversion=2.5.0.9
Messagessent=20000
Messagesreceived=380000
Totalmessages=400000
代碼:
SunJDK1.4.2
- Averagethroughput=8848messagespersecond
- Averagethroughput=8060messagespersecond
- Averagethroughput=8046messagespersecond
代碼:
IBMJDK1.4.1
- Averagethroughput=15620messagespersecond
- Averagethroughput=17665messagespersecond
- Averagethroughput=15666messagespersecond
代碼:
BEAJRockit1.4.2
- Averagethroughput=16549messagespersecond
- Averagethroughput=15564messagespersecond
- Averagethroughput=15736messagespersecond
#p# 2、網(wǎng)絡(luò)服務(wù)處理能力測試
VolanoMarkversion=2.5.0.9
Messagessent=10000
Messagesreceived=190000
Totalmessages=200000
代碼:
BEAJRockit1.4.2
- Averagethroughput=3938messagespersecond
- Averagethroughput=3290messagespersecond
- Averagethroughput=3648messagespersecond
- Averagethroughput=3328messagespersecond
代碼:
SunJDK1.4.2
- Averagethroughput=2225messagespersecond
- Averagethroughput=2163messagespersecond
- Averagethroughput=2080messagespersecond
代碼:
IBMJDK無法執(zhí)行測試
測試總結(jié):
在***項性能測試中,3個JVM都完成測試,但是正如上面Purdy提到的一樣,Sun的HotspotJVM在servermode情況下會出錯,必須使用clietmode。在性能測試結(jié)果來看,IBM的JVM和BEA的JVM旗鼓相當,分值都相當高,而Sun的JVM性能差了幾乎一倍。
在第二項網(wǎng)絡(luò)服務(wù)測試中,IBM的JVM無法完成測試,會出現(xiàn)段地址錯誤,JDK版本和glibc版本不兼容造成的。Sun的JVM也需要修改一下JVM參數(shù)才可以順利執(zhí)行,從測試結(jié)果來看,BEA的JRockit仍然***于Sun的Hotspot。
經(jīng)過本次測試,已經(jīng)決出了優(yōu)勝者,就是BEA的JRockit1.4.2。當然JRockit也有一些不足,例如在內(nèi)存消耗和CPU負載方面要明顯高于另外兩個JVM。
JRockit除了性能上的優(yōu)勢,也有著豐富的性能調(diào)整選項和一個圖形監(jiān)控工具,和一個性能報告分析工具,這對于JVM的調(diào)優(yōu)有著非常大的幫助,鑒于性能方面的優(yōu)勢,以及可管理性方面的豐富功能,我決定選擇JRockit作為Tomcat的JVM來使用。
【編輯推薦】