2. Agenda
• Why profiling
• Installing Jprofiler
– Connecting Jprofiler to OVIRT
• Analyzing the results
– CPU analysis
– Memory analysis
– Threads analysis
– Database analysis
3. • "We should forget about small efficiencies, say
about 97% of the time: premature
optimization is the root of all evil"
– Donald Knuth
4. Profiler
• Connects to running code and instruments the
Java classes
• Application should run at least slower
than without a profiler
• Gives a very good insight on what's going on
inside our code
5. private static void test1() {
String s = "";
for (int i = 0; i < 100; ++i) {
s = s + "a";
}
}
private static void test2() {
StringBuffer sb = new StringBuffer();
for (int i = 0; i < 100; ++i) {
sb.append("a");
}
}
private static StringBuffer sb = new StringBuffer();
private static void test3() {
sb.setLength(0);
for (int i = 0; i < 100; ++i) {
sb.append("a");
}
}
6. Pretty Code vs. Fast Code
• What’s the clearer code?
• What’s the faster code?
7. Installing JProfiler
• We have licenses to Jprofiler 8.
• Contact me for serial number information
– We were asked not to publish S/N
8. OpenJDK Issues
• Install Oracle Java
• Update alternatives –config java or just the
jprofiler.sh script
# Uncomment the following line to override the JVM search sequence
INSTALL4J_JAVA_HOME_OVERRIDE=~/jre1.7.0_25
# Uncomment the following line to add additional VM parameters
# INSTALL4J_ADD_VM_PARAMS=
9. Configuring OVIRT
• Jprofiler automatic configuration updates
jboss’s script files.
• Since we use ovirt-engine service, add the
following line:
• I added it directly in /etc/init.d/ovirt-engine
under engineArgs.extend, but other options
are possible too
-agentpath:/root/jprofiler8/bin/linux-x64/libjprofilerti.so=port=8849,nowait
14. Analyzing Information
• CPU
– Check method execution time – only Runnable or
any state
• Memory
– Who allocates which objects
• Threads
– To check for thread leaks, dead-locks, etc.
• Database
– To check for query execution time
15. CPU
• CPU View
• Hotspots
– Inherent Time vs Avg Execution Time vs Num Of
Executions