Application Performance Management Synergien zwischen Compuware und JKU Prof. Dr. Hanspeter Mössenböck Institut für Systemsoftware, JKU DI Christian Schwarzbauer Compuware Austria
Compuware / dynatrace Who we are & what we do Christian Schwarzbauer (Chief Software Architect)
About / 2005 dynatrace was founded in Linz 3 Founders 5 Employees, 3 (Beta) Customers 2007 Headquarters in Linz and Boston 40 Employees worldwide (20 Linz), 50 Customers 2011 Acquisition by Compuware 200 Employees worldwide (80 Linz), 450 Customers 2014 R&D Departments in Linz, Gdansk, Boston & Detroit 4500+ Employees worldwide (150 Linz), 8000+ Customers
Only Vendor to truly converge UEM with APM
PurePath Technology Java.NET Native & Mainframe dynatrace Collector Performance Warehouse Sessions Store dynatrace Client dynatrace Server
Visualization World Map
8 Visualization Transaction Flow
9 Visualization Method Hotspots
10 Visualization Memory Dump
Application Performance Management Synergien zwischen Compuware und JKU Prof. Dr. Hanspeter Mössenböck Institut für Systemsoftware, JKU DI Christian Schwarzbauer Compuware Austria
Kooperationsrahmen Christian Doppler Labor Monitoring and Evolution of very-large-scale Software Systems Ziel: Anwendungsrelevante Grundlagenforschung im Bereich der Industriepartner Industriepartner JKU Compuware Siemens VAI KEBA CD-Labor Institut für Software Systems Engineering Institut für Systemsoftware 15. Mai 2014 ITC-Roadshow @ Perg 2
Einige Fakten zum Labor Leitung: Dauer: Budget: Prof. Dr. Paul Grünbacher Max. 7 Jahre (Evaluierung nach 2 und 5 Jahren) ~ 420 T / Jahr 50% CDG, 50% Industriepartner Mitarbeiter: 4 Senior Researchers 5 Doktoranden 5 Masterstudenten Gründung: Februar 2013 15. Mai 2014 ITC-Roadshow @ Perg 3
Kooperation Compuware - JKU Compuware Führend in APM-Technologie Continuous Path Profiling Multi-tier Profiling State Analysis (heap, threads, locks,...) Applikation Agents dynatrace Server Monitoring außerhalb der VM VM Inst. für Systemsoftware Langjährige Kooperation mit Sun/Oracle Compiler-Technologie (JIT-Compilation, Optimierung) VM-Technologie (Garbage Collection, Dyn. Code Evol.) Applikation Agents dynatrace Server Teile des Monitoring innerhalb der VM VM 15. Mai 2014 ITC-Roadshow @ Perg 5
Teilprojekt Automatic Garbage Collection Tuning Philipp Lengauer Verena Bitto Hanspeter Mössenböck
Problemstellung Garbage Collection ist Teil der Java VM Java-Applikation Java VM Interpretation JIT-Compilation Threading Dyn. Loading GC Parameter Heapgröße Generationengröße Tenuring-Threshold... Häufige Probleme Lange GC-Pausen Hoher Anteil der GC-Zeit an der Gesamtlaufzeit 6 verschiedene GCs in Hotspot VM Concurrent Mark & Sweep (CMS) Garbage First (G1) Parallel GC... manuelles Tuning äußerst mühsam => GC Tuning 15. Mai 2014 ITC-Roadshow @ Perg 7
~ 300 GC-Parameter in Hotspot spärlich dokumentiert Anwendung erfordert detailliertes GC-Wissen und Hotspot-Kenntnisse 15. Mai 2014 ITC-Roadshow @ Perg 8
Automatisches GC Tuning Java-Applikation Java VM GC Parametermodell par 1 : v 11, v 12, v 13 par 2 : v 21, v 22... par n : v n1, v n2, v n3, v n4 + constraints Parameter (Hill Climbing) Parameter- Konfigurationsgenerator GCzeit Beste Parameterkonfiguration Optimierungszeit bei uns 4 Stunden (konvergiert aber rascher) Optimiert hinsichtlich einer bestimmten Applikation (Workload) Optimiert nur für einen einzigen Garbage Collector 15. Mai 2014 ITC-Roadshow @ Perg 9
Benchmarks DaCapo-Suite (daraus die speicherintensiven Benchmarks) h2 jython sunflow tomcat tradesoap xalan Bank-Applikation mit JDBC-Transaktionen Python-Interpreter Ray-Tracing Apache Web-Server J2EE-Applikation (Day Trading) mit SOAP XSLT-Übersetzung von XML nach HTML SPECjbb 2013 Web-Warenhausserver, der Transaktionen unter hoher Last abarbeitet dynatrace Server Sammelt und aggregiert Profiling-Daten diverser Agenten 15. Mai 2014 ITC-Roadshow @ Perg 10
Ergebnisse (mit Parallel GC) Default-Konfiguration unsere optimierte Konfiguration 15. Mai 2014 ITC-Roadshow @ Perg 11
Detailanalyse Xalan-Benchmark YoungGen OldGen YoungGen OldGen 15. Mai 2014 ITC-Roadshow @ Perg 12
Detailanalyse Xalan-Benchmark Was wurde verändert? Parameter default optimized AdaptiveSizeDecrementScaleFactor 4 2 AdaptiveSizeMajorGCDecayTimeScale 10 5 AdaptiveSizePolicyCollectionCostMargin 50 40 AdaptiveSizeThroughputPolicy 0 1 BindGCTaskThreadsToCPU - + CollectGen0First - + MinHeapFreeRatio 40 20 MinSurvivorRatio 3 1 NewRatio 2 1 OldPLABSize 1024 2048 PLABWeight 75 80 ResizeOldPLAB + - SurvivorPadding 3 2 Verhältnis OldGen:YoungGen Hier 1:1 statt 2:1 Füllgrad nach Young-Collection => Objekte bleiben länger in YoungGen Parameter default optimized TargetSurviorRatio 50 70 TenuredGenerationSizeIncrement 20 30 TenuredGenerationSizeSupplement 80 85 TenuredGenerationSizeSupplementDecay 2 16 UseAdaptiveGCBoundary - + UseAdaptiveGenerationSizePolicyAtMajor + - UseAdaptiveGenerationSizePolicyAtMinor + - UseAdaptiveSizeDecayMajorGCCost + - UseAdaptiveSizePolicyFootprintGoal + - YoungGenerationSizeIncrement 20 30 YoungPLABSize 4096 1024 YoungGenerationSizeSupplement 80 75 YoungGenerationSizeSupplementDecay 8 2 Promotion Local Allocation Buffer (zum Kopieren zwischen Bereichen der YoungGen) Kleinerer Puffer besser! 15. Mai 2014 ITC-Roadshow @ Perg 13
Dasselbe für dynatrace-server GC-Zeit um 40% reduziert Durchsatz um 10% gesteigert Was wurde geändert? 15. Mai 2014 ITC-Roadshow @ Perg 14
Zusammenfassung Kooperation Industrie / Universität ist beiderseits befruchtend Zahlreiche geförderte Kooperationsmöglichkeiten (CD-Labore, FFG, SCCH, bilateral,...) Günstige Möglichkeit, um an Forschungsergebnisse und gute Mitarbeiter zu kommen. Weitere Themen unserer Kooperation - Effizientes Stack-Trace-Sampling - Memory Tracing - Monitoring des Virtualisierungsoverheads 15. Mai 2014 ITC-Roadshow @ Perg 15