Running Thermostat
Total Page:16
File Type:pdf, Size:1020Kb
Examining And Increasing Java Application Performance Omair Majid & Jon VanAlten Red Hat, Inc. June 12, 2013 throw new GrabAudienceException() Agenda ● Performance ● Existing Tools ● Thermostat ● Demos ● Plugins Performance Assumption: Java is slow. Reality: Java performance is much better than in the past, and out-performs many other languages that are used in the same space. But, we'd still like to improve. http://benchmarksgame.alioth.debian.org/u64q/java.php What sort of activity can be a sign of trouble? Object creation smells. Bad thread model. Locking and synchronization issues. Waiting on I/O. Application-specific issues. Misbehavior in dependencies (libraries, middleware). Issues opaque to JVM (native code, OS, hardware). Memory Allocation & GC ● Too much GC ● Many short-lived objects ● Memory 'Leaks' Locks ● Too much waiting on locks ● Deadlocks Threads ● Too much synchronization ● Not enough threads Input/Output ● File I/O ● Network I/O ● Open Files Something Different? Maybe, for your application, the only valid 'performance' is an application-specific metric? Tools Basic OpenJDK Tools ● jps ● jstack ● jmap ● jinfo jps jstack 1 2 3 jmap: Heap Information ● jmap -heap jmap: Heap Information ● jmap -histo jinfo Basic Linux Tools ● ps ● top Advanced Linux Tools ● Systemtap ● Byteman ● Oprofile oprofile Problems ● Only knows Java ● Doesn't know Java ● Too Simple? Too Hard? What is thermostat? Currently For Data Collection jvmstat oprofile JMX byteman jps jmap /proc jinfo Display Platform Integration ? Application Server and Platform Java Virtual Machine Operating System Hardware Horizontal Integration Design Storage Clients Agents Running Thermostat $ thermostat service & $ thermostat gui Running Thermostat Running Thermostat Running Thermostat Demo Examples Specific Examples and Demo ● Too Many GC invocations ● Thread trying to use the same locks ● Hangs/Deadlocks ● Memory Leaks ● Caches never released What about your application? Your Application ● The only metric is custom X per second Thermostat has you covered Plugins ● First Class Citizens ● Everything is a plugin Can introduce new data collection methods /proc/ Backend 1 Storage Core Backend 2 jvmstat Target JVM Agent Can Add Commands Can modify GUI ● Extend GUI OSGi ● Thermostat is built on top of OSGi ● Built-in code uses same APIs as plugins Plugin Layout ${THERMOSTAT_HOME}/plugins ${PLUGIN_NAME} thermostat-plugin.xml plugin-jar1.jar plugin-jar2.jar Client Agent Plugin Demo The Future Planned Features ● Better MBean Integration ● Memory Tracing and Leak Analysis ● Systemtap, Byteman & Oprofile Summary ● Performance ● Existing Tools ● Thermostat ● Plugins All of this is already available in Fedora Fedora and the Infinity design logo are trademarks of Red Hat, Inc Thanks! http://icedtea.classpath.org/thermostat ● [email protected] ● [email protected] .