Maszyna Wirtualna Javy i FreeBSD
Przy okazji realizacji projektu Hosting Aplikacji Jira zaszła potrzeba uruchomienia stabilnej i wydajnej platformy aplikacji javowych. Jako, że posiadam 3 maszyny działające pod kontrolą FreeBSD postanowiłem dokonać małego rozeznania tematu. Sprawdziłem dostępność różnych dystrybucji JVM korzystając z Portów. Przy okazji porównałem jak poszczególne maszyny radzą sobie z benchmarkiem scimark2 (wyniki całkowicie powtarzalne). Testy przeprowadzałem w jailu na FreeBSD 8.1-RELEASE działającym na architekturze amd64.
Z testów wynika, że wyniki w scimark2 zależą od wersji javy, a emulacja maszyny linuksowej nie odbija się negatywnie na wydajności.
Atlassian wspiera uruchamianie swoich aplikacji na JDK od Suna w wersji >=1.6.0_10. Na OpenJDK i JDK-1.6.0_03-p4 Jira w ogóle nie daje się uruchamiać. W związku z powyższym jedynym wyjściem jest uruchamianie aplikacji za pomocą JDK 1.6.0_22.
Dostępne dystrybucje JVM:
- FreeBSD Foundation i Sun - Diablo Jest to certyfikowana przez Sun dystrybucja JVM dla FreeBSD 6.3 i 7.0.
atlasdev# /usr/local/diablo-jdk1.6.0/bin/java -classpath scimark2lib.jar jnt.scimark2.commandline
Composite Score: 664.6549121052705
FFT (1024): 412.7403011043958
SOR (100x100): 803.5675589938768
Monte Carlo : 222.95303725124444
Sparse matmult (N=1000, nz=5000): 545.4515466431296
LU (100x100): 1338.5621165337054
Large:
Composite Score: 552.2310372670028
FFT (1048576): 137.3415263852999
SOR (1000x1000): 749.5987671443289
Monte Carlo : 222.76800534426087
Sparse matmult (N=100000, nz=1000000): 617.0533282522424
LU (1000x1000): 1034.3935592088817
java.vendor: The FreeBSD Foundation
java.version: 1.6.0_07
atlasdev# /usr/local/openjdk6/bin/java -classpath scimark2lib.jar jnt.scimark2.commandline
Composite Score: 706.9402420427739
FFT (1024): 443.82712732095234
SOR (100x100): 801.2286236571911
Monte Carlo : 277.8115967271881
Sparse matmult (N=1000, nz=5000): 610.773490353325
LU (100x100): 1401.0603721552136
Large:
Composite Score: 573.5892185029008
FFT (1048576): 139.81007538126704
SOR (1000x1000): 747.4059609022504
Monte Carlo : 277.88348892575317
Sparse matmult (N=100000, nz=1000000): 658.7327183529624
LU (1000x1000): 1044.1138489522714
java.vendor: Sun Microsystems Inc.
java.version: 1.6.0
os.arch: i386
os.name: Linux
os.version: 2.6.16
Wyniki testu nie odbiegają od maszyn uruchamianych natywnie.
atlasdev# /usr/local/linux-sun-jdk1.6.0/bin/java -classpath scimark2lib.jar jnt.scimark2.commandline
Composite Score: 655.7105107795103
FFT (1024): 422.74373985461665
SOR (100x100): 800.5629231755761
Monte Carlo : 236.81996692694443
Sparse matmult (N=1000, nz=5000): 485.092498716581
LU (100x100): 1333.3334252238335
Large:
Composite Score: 535.5700537403515
FFT (1048576): 137.03358708362558
SOR (1000x1000): 748.8664325454699
Monte Carlo : 237.97471575876642
Sparse matmult (N=100000, nz=1000000): 509.45273873558205
LU (1000x1000): 1044.5227945783133
java.vendor: Sun Microsystems Inc.
java.version: 1.6.0_22
atlasdev# /usr/local/jdk1.6.0/bin/java -classpath scimark2lib.jar jnt.scimark2.commandline
Composite Score: 489.35240477924543
FFT (1024): 328.3585372390125
SOR (100x100): 771.0904170115832
Monte Carlo : 220.7528275623278
Sparse matmult (N=1000, nz=5000): 495.9212779307397
LU (100x100): 630.6389641525637
Large:
Composite Score: 448.6316465556324
FFT (1048576): 114.75827911386207
SOR (1000x1000): 743.0584405856318
Monte Carlo : 220.48087253224506
Sparse matmult (N=100000, nz=1000000): 566.6851005873712
LU (1000x1000): 598.1755399590519
java.vendor: Sun Microsystems Inc.
java.version: 1.6.0_03-p4
Napisane 22 grudnia, 2010 przez kwiat