这里先介绍一下用来做JVM性能评测的软件——Volano BenchMark,这是一个纯粹用Java写出来的服务器benchmark评测的软件。其实这本来是个WebChat的软件,制作者在Chat App的功能基础上发展出这个对JVM性能测试的小软件,用来在不同硬件配置的机器上或者是不同Kernel的操作系统上对不同的JVM进行性能测试。它是通过对服务器建立多个客户端的连接来测量客户端程序广播批量信息所需要的时间,从而达到对JVM性能测试的结果。
其实这个软件能对服务器的以下方面性能进行评测:调度程序,TCP/IP及Ethernet Driver的网络吞吐及响应,Pthreads线程,SMP(Symmetric Multi Processing对称多处理)性能测量。
Benchmark 的配置
CHAT 房间数量:10
每个房间用户数量:20
每个用户信息量:1000
服务器和客户端都在同一台电脑
测试用到的JVM
Sun Client JVM 1.6.0-beta-b59g :
Jdk-6-beta-windows-i586
Options used: -server –Xmx128m (default)
Sun Client JVM 1.5.0_01-b08 :
Jdk-1_5_0_01-windows-i586-p
Options used: -server –Xmx128m (default)
在这里我补充一下,JVM的启动Option我没有进行配置,因为这里做的只是在通常情况下Mustang(1.6)和Tiger(1.5)的对比,所以选用server还是Client/Hotspot、预分配Heap的大小是128M还是512M就不去讨论了。如果大家需要更深的讨论欢迎一起讨论,这里我个人感觉-server是比-Client(也就是Java选项中的Hotspot)快,启动会慢一点,但运行速度比较快。同时这里不使用Net模式进行测试,只使用Loop。
硬件配置
OS :Microsoft Windows XP [版本 5.1.2600] (Service Pack 2)
CPU: AMD Athlon(tm) XP 2200+ Thoroughbred-B Processor(0.13μm)
Memory: 512MB
Cache:64+64KB L1 Cache+258 KB L2 Cache
测试结果:
测试结果是以每秒信息数量来衡量的,测试结果取5次测试去掉***和***后的平均值:
JVM |
指标 |
1 |
2 |
3 |
4 |
5 |
1.6 β JVM Mustang |
持续时间(秒) |
46.235 |
43.5 |
45.063 |
44.016 |
44.719 |
平均吞吐量 |
8651 |
9195 |
8876 |
9088 |
8945 | |
1.5 JVM Tiger |
持续时间(秒) |
47.828 |
43.125 |
42.266 |
41.984 |
42.359 |
平均吞吐量 |
8363 |
9275 |
9464 |
9527 |
9443 |
测试结果:
Mustang JVM 1.6 β: 8969.667
Tiger JVM 1.5 : 9394
感觉有点不太对劲,重新启动电脑再试了一遍:
JVM |
指标 |
1 |
2 |
3 |
4 |
5 |
1.6 β JVM Mustang |
持续时间(秒) |
46.312 |
44.063 |
44.11 |
44.109 |
44.953 |
平均吞吐量 |
8637 |
9078 |
9068 |
9068 |
8898 | |
1.5 JVM Tiger |
持续时间(秒) |
46.813 |
43.621 |
42.512 |
42.684 |
43.012 |
平均吞吐量 |
8663 |
9145 |
9435 |
9456 |
9426 |