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
    
  • OpenJDK6 b20_5
  • 
    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
    
  • Java sun-linux-i586
  • Jako, że ta maszyna została uruchomiona za pomocą emulatora Linuksa przedstawia się jako:
    
    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
    
  • Stara dystrybucja sunowej javy. Ma zostać oznaczona w portach jako deprecated.
  • 
    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