Upgrade to Pro — share decks privately, control downloads, hide ads and more …

Sagt mein Profiler die Wahrheit? - JAX 2014

Sagt mein Profiler die Wahrheit? - JAX 2014

Fabian Lange

May 15, 2014
Tweet

More Decks by Fabian Lange

Other Decks in Technology

Transcript

  1. JSR-163 • Java Platform Profiling Architecture • definiert folgende APIs

    • JVMTI (C API) als Nachfolger zu JVMPI • java.lang.instrument • ClassFileTransformer • java.lang.management • MemoryMXBean • ThreadMXBean
  2. Messmöglichkeiten • Nativer Agent • geschrieben in C • Kommt

    mit -agentpath in die JVM • Java Agent • java.lang.instrument • Wird mit -javaagent geladen • Extern • Logs, DTrace
  3. Genauigkeit • System.currentTimeMillis() /** * Returns the current time in

    milliseconds. Note that * while the unit of time of the return value is a millisecond, * the granularity of the value depends on the underlying * operating system and may be larger. For example, many * operating systems measure time in units of tens of * milliseconds. */ • System.nanoTime() /** * Returns the current value of the running Java Virtual Machine's * high-resolution time source, in nanoseconds. * * <p>This method provides nanosecond precision, but not necessarily * nanosecond resolution (that is, how frequently the value changes) * - no guarantees are made except that the resolution is at least as * good as that of {@link #currentTimeMillis()}. * * <p>The values returned by this method become meaningful only when * the difference between two such values, obtained within the same * instance of a Java virtual machine, is computed. */
  4. Zeit • Wall-Clock Time • Vergangene “echte” Zeit. • Messbar

    mit einer Uhr an der Wand. • CPU Time • Zeit die die CPU beschäftigt war. • Kaum messbar.
  5. Datensammlung • Sampling • Messung der JVM Aktivität in regelmäßigem

    Intervall • Instrumentation • Injektion von Messcode • Sampling II • Auslassen von Messungen zur Datenreduktion
  6. Aus der Praxis • Sampling für den Einstieg verwenden •

    Profiler sind keine Goldwaagen • Suchen die Nadel im Heuhaufen • < 10 ms ist beim Profiling irrelevant • Höhere Genauigkeit mit Benchmarking
  7. Weitere Lektüre • Dapper, a Large-Scale Distributed Systems Tracing Infrastructure

    • static.googleusercontent.com/media/research.google.com/de//pubs/archive/36356.pdf • Evaluating the Accuracy of Java Profilers • www-plan.cs.colorado.edu/klipto/mytkowicz-pldi10.pdf • Java Performance Messen • blog.codecentric.de/2011/10/java-performance-messen-mit-sampling-oder-instrumentierung • Java Microbenchmark Harness • openjdk.java.net/projects/code-tools/jmh/