Java UpdatePlanned product releases in 2007
Sanjib GuhathakurtaProduct Manager, [email protected]+1.408.517.6767
© 2006 Hewlett-Packard Development Company, L.P. The information contained herein is subject to change without notice
February 27, 2007 2
NonStop Server for Java Update
Currently working on−NSJ 5.1 on Integrity NonStop
• API set same as NSJ 5.0 – JDK 5.0• Upgrade to latest HP-UX HotSpot compiler
− Expected performance improvement in the 5-10% range• Improved diagnostics with support for improved profiling and
Garbage Collection information− Incorporate HP-UX JVM options –Xeprof and –Xverbosegc into
NSJ• Incorporate upcoming PThreads enhancements
− Nowaited OSS file IO operations• Expected FCS date: August 2007
−NSJ 6.0, Java SE 6.0 certified JDK
Released US DST tool for NSJ 4.x and NSJ 5.0−available at: http://www.hp.com/go/javaDSTtool
February 27, 2007 3
NSJSP Server (Tomcat) Update
Currently working on−NSJSP 6.0 on Integrity NonStop
• Based on Tomcat 6.0.x code base• Implements latest Servlet and JSP spec
− Servlet 2.5 and JSP 2.1 spec• JMX MBean support for improved manageability• Performance expected to be same as that of NSJSP 5.0• Will require NSJ 5.0 and above• Expected FCS date: August 2007
February 27, 2007 4
BEA WebLogic Server Update
Currently working on−WLS 9.2 (latest WLS release) certification on Integrity
NonStop• WLS 9.2 is still a Java EE 1.4 certified app server• Improved system administration and management with new Admin
Console• Improved availability with WLS server instance migration to
another machine and HTTP session replication across WAN• Updated Web Services APIs • Target availability date: July 2007
Java Performance on Integrity NonStop servers
Frans JongmaBCS-NED Competence Center, EMEA
February 27, 2007 6
Agenda
•Introduction
•Java performance, what does this mean?
•What is it that you are testing?
•Simple Java performance comparisons: NonStop servers
•Does Industry Standard hardware give Industry Standard performance?
•Close
February 27, 2007 7
What started this…
February 27, 2007 8
“We accept Java to perform at 60% of ‘C’.Your Java performance is at 3%.”
Unhappy customer
February 27, 2007 9
Java performance: What does this mean?
February 27, 2007 10
Things coming together
•Java, the promise of “Write Once Run Anywhere”
•Java, the myth of needing to know only Java
•Developers, the “need for speed”
•Performance, the assumption that performance is a hardware problem
•The Internet, the availability of “easy” benchmarks
February 27, 2007 11
“It is easy to compare Java performance between different platforms”
Presumption
February 27, 2007 12
What does Java mean to you?
•A programming language?
•A toolbox?
•A programming environment?− Including workbench, test tools etc.
•A lifestyle?
•An operating environment running and scheduling multiple tasks?
February 27, 2007 13
The Java VM Operating Environment
• Multi-threaded environment
• Manages the JVM memory
• Creates Objects
• Collects garbage
• Runs applications− Calculations− Object create / delete− Access database
• Compiles bytecode
• Optimizes code
February 27, 2007 14
What are you testing?
Or:
What gets executed?
February 27, 2007 15
What are you testing?
•So-called “Microbenchmarks”−Small and easy−Downloaded from Internet− Examples: SciMark, HeapTest
•Testing the CPU speed of the platform−Your typical developer laptop? 2-3 GHz−S-series CPU? 500-800 MHz− Itanium®2? 1.3-1.6GHz
February 27, 2007 16
What are you testing? -2-
• C program− Compile− Optimize at compile time− Compiler optimize levels− Machine dependent code
• Execute− Once compiled and
optimized, the code is static
C source Compile
and
optimize
Executable
February 27, 2007 17
What are you testing? -3-
• Java program− Compile into bytecode− No compiler optimize options− Machine independent code
• Execute− Interpret code− Compile code− JIT or HotSpot compilers− Profile code (n times)− Optimize code (n times)
Java source
Class
javac
“execute”
JVM
February 27, 2007 18
What gets executed?
• What does NOT get executed?− Compiler/optimizer may
eliminate “dead” code without you knowing it!
• What else gets executed?− Interpreter− Compiler− Application code− Garbage collector
public static void doSomeStuff()
{ double uselessSum = 0;
for (int i=0; i<1000; i++){
for (int j=0;j<1000; j++) {
uselessSum +=
(double) i + (double) j;
}
}
}
http://www-128.ibm.com/developerworks/library/j-jtp12214/
February 27, 2007 19
JVM 1.4 Warmup
0
50
100
150
200
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20
JVM needs “warming up”
• Test may be too short
• SciMark runs a few seconds only
• Investigation included:− Potential performance: Use of
–Xcomp option− Code may be optimized but
not run− Manually changed code− Show Warm-up phenomena
February 27, 2007 20
SciMark 2.0 Java Benchmark
• Scientific/engineering code
• Developed by National Institute of Standards (NIST)
• For i=1; i<loopcount; ++i {
• Five computation “kernels”− Fast Fourier Transformation− Jacobi Successive Over-Relaxation− Monte Carlo Integration− Sparse matrix multiply− Dense LU matrix factorization− Report the results
• } // end of loop
February 27, 2007 21
Warm up depends on JVM technology
JVM Warming up
0
5
10
15
20
25
30
35
40
45
50
1 2 3 4 5 6 7 8 9 10 11 12 13
NSJ4
NSJ5
February 27, 2007 22
Comparing
S-series vs Integrity NonStop
February 27, 2007 23
Performance ratio S versus NS-series
0.00
1.00
2.00
3.00
4.00
5.00
6.00
7.00
S86000 S88000 NS1000 NS14000 NS16000
Order entry ratio
February 27, 2007 24
Performance ratio S versus NS-series
0.00
1.00
2.00
3.00
4.00
5.00
6.00
7.00
S86000 S88000 NS1000 NS14000 NS16000
Order entry ratio
SciMark ratio
February 27, 2007 25
Leverage the Industry Standard
February 27, 2007 26
The promise
•Itanium® processing power
•Building blocks from HP
•Compiler technology
•JVM technology
February 27, 2007 27
It works! The proof
• Java 5 VM
• JRockit on Win64 rx2620
• HP-UX on rx2620
• NonStop OS NS16000
• Intel Itanium2 1.6GHz 6MB L3 Cache
JVM Performance test results based on SciMark 2.0
0
20
40
60
80
100
120
140
160
180
200
Win64 JRockit 1.5 NonStop OS 1.5 HP-UX 1.5
February 27, 2007 28
Fun Stuff:
Anomalies
February 27, 2007 29
Java 4 appears faster than Java 5
0
20
40
60
80
100
120
140
160
180
Java4 HP-UX Java5 HP-UX Java4 NonStop Java5 NonStop
February 27, 2007 30
Magic options
Both: -XX:LoopOptsCount=43
HP-UX:–XX:RangeCheckElimination
0
20
40
60
80
100
120
140
160
180
Java4 HP-UX Java5 optimized HP-
UX
Java4 NonStop Java5 optimized
NonStop
February 27, 2007 31
What about the warm up?
JVM Warming up
0
5
10
15
20
25
30
35
40
45
50
1 2 3 4 5 6 7 8 9 10 11 12 13
NSJ4
NSJ5
February 27, 2007 32
Short tests can show skewed results
Can S-series be faster than Integrity NonStop ?
0
20
40
60
80
100
120
140
160
180
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18
S86000
S88000
NS16000
February 27, 2007 33
What is executing during warm-up?
JVM spawns a compiler thread to compile classes
If workload is CPU-intensive and there is only one CPU to work with ……
0.0
20.0
40.0
60.0
80.0
100.0
120.0
140.0
160.0
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20
NS14000Standard -XX:-BackgroundCompilation
February 27, 2007 34
What Measure can show you
•Do not forget everything you know because the application is written in Java
•Measure tells you more than you may think
•The following slides illustrate Weblogic Server on Integrity NonStop
Februa
ry 27
, 20
07
35
The effect of B
ackg
round
Co
mp
ilatio
n
Effect of BackgroundCompilation on WLS startup
0
200
400
600
800
1000
1200
23:36:46
23:36:53
23:37:00
23:37:07
23:37:14
23:37:21
23:37:28
23:37:35
23:37:42
23:37:49
23:37:56
23:38:03
23:38:10
23:38:17
23:38:24
23:38:31
23:38:38
23:38:45
23:38:52
23:38:59
23:39:06
CPU ms per second
CPU std
CPU noBG
Februa
ry 27
, 20
07
36
Effect of File IO
on C
PU b
usy-time
0
200
400
600
800
1000
1200
23:36:46
23:36:53
23:37:00
23:37:07
23:37:14
23:37:21
23:37:28
23:37:35
23:37:42
23:37:49
23:37:56
23:38:03
23:38:10
23:38:17
23:38:24
23:38:31
23:38:38
23:38:45
23:38:52
23:38:59
23:39:06
CPU std
File-Open-Calls
Februa
ry 27
, 20
07
37
Ca
nnot d
o m
uch if you’re w
aiting
for IO
0
200
400
600
800
1000
1200
23:36:46
23:36:53
23:37:00
23:37:07
23:37:14
23:37:21
23:37:28
23:37:35
23:37:42
23:37:49
23:37:56
23:38:03
23:38:10
23:38:17
23:38:24
23:38:31
23:38:38
23:38:45
23:38:52
23:38:59
23:39:06
CPU std
OSSNS-W
ait-T
ime
File-Open-Calls
Februa
ry 27
, 20
07
38
Crea
ting new
files is expensive
0
200
400
600
800
1000
1200
23:36:46
23:36:53
23:37:00
23:37:07
23:37:14
23:37:21
23:37:28
23:37:35
23:37:42
23:37:49
23:37:56
23:38:03
23:38:10
23:38:17
23:38:24
23:38:31
23:38:38
23:38:45
23:38:52
23:38:59
23:39:06
0 5 10
15
20
25
30
35
CPU std
OSSNS-W
ait-T
ime
File-Open-Calls
OSSNS-DD-Calls
February 27, 2007 39
Closing remarks
February 27, 2007 40
Your mileage may vary ….
•This customer’s test now runs at 90% of ‘C’
•Real applications require real tests
•There is a whole world outside the VM− JDBC−SQL Compilations− The I/O subsytem− The TCP/IP stack
February 27, 2007 41
Summary
•“Java on Integrity NonStop simply screams” – a “very excited NonStop Java developer in 2006”
•Performance of NSJ is on par with the JVMs from HP and BEA running on the same chipset
•Power of Itanium® processor is reflected more in CPU-Intensive (Java) processing than in simple OLTP
•The Integrity NonStop server is the choice for Java
February 27, 2007 42
References
• The Sun HotSpot compiler− http://java.sun.com/developer/technicalArticles/Networking/HotSpot/ind
ex.html− http://java.sun.com/products/hotspot/index.html
• Micro benchmarks− http://discuss.develop.com/archives/wa.exe?A2=ind0103&L=advanced-
java&D=0&T=0&P=25235− http://www-128.ibm.com/developerworks/library/j-jtp12214/
• SciMark benchmark− http://math.nist.gov/scimark2
• The writeup− KB 3216 ‘A Java Micro benchmark on HP NonStop and other servers’. July
2006.
February 27, 2007 43