Java Performance Tuning From A Garbage Collection Perspective. Nagendra Nagarajayya MDE

Similar documents
Java & Coherence Simon Cook - Sales Consultant, FMW for Financial Services

JVM Memory Model and GC

Java Performance Tuning

Do Your GC Logs Speak To You

Performance Implications of Memory Management in Java

Attila Szegedi, Software

Garbage Collection. Hwansoo Han

Fundamentals of GC Tuning. Charlie Hunt JVM & Performance Junkie

Java Performance Tuning and Optimization Student Guide

JBoss Performance Tuning. Bill Meyer JBoss Sr. Solutions Architect

JVM Troubleshooting MOOC: Troubleshooting Memory Issues in Java Applications

MEMORY MANAGEMENT HEAP, STACK AND GARBAGE COLLECTION

NG2C: Pretenuring Garbage Collection with Dynamic Generations for HotSpot Big Data Applications

2011 Oracle Corporation and Affiliates. Do not re-distribute!

Java Garbage Collection Best Practices For Tuning GC

Generational Garbage Collection Theory and Best Practices

JVM Performance Tuning with respect to Garbage Collection(GC) policies for WebSphere Application Server V6.1 - Part 1

The Garbage-First Garbage Collector

Exploiting the Behavior of Generational Garbage Collector

The Fundamentals of JVM Tuning

Debugging Your Production JVM TM Machine

Java Platform, Standard Edition HotSpot Virtual Machine Garbage Collection Tuning Guide. Release 10

G1 Garbage Collector Details and Tuning. Simone Bordet

THE TROUBLE WITH MEMORY

Low latency & Mechanical Sympathy: Issues and solutions

10/26/2017 Universal Java GC analysis tool - Java Garbage collection log analysis made easy

Concurrent Garbage Collection

Typical Issues with Middleware

HBase Practice At Xiaomi.

Lesson 2 Dissecting Memory Problems

IBM Cognos ReportNet and the Java Heap

High Performance Managed Languages. Martin Thompson

Algorithms for Dynamic Memory Management (236780) Lecture 4. Lecturer: Erez Petrank

Java Garbage Collection. Carol McDonald Java Architect Sun Microsystems, Inc.

Enabling Java-based VoIP backend platforms through JVM performance tuning

Java Without the Jitter

Java performance - not so scary after all

Towards High Performance Processing in Modern Java-based Control Systems. Marek Misiowiec Wojciech Buczak, Mark Buttner CERN ICalepcs 2011

The G1 GC in JDK 9. Erik Duveblad Senior Member of Technical Staf Oracle JVM GC Team October, 2017

Garbage collection. The Old Way. Manual labor. JVM and other platforms. By: Timo Jantunen

Java Performance: The Definitive Guide

Sat 1/6/2018 JAVA (JVM) MEMORY MODEL MEMORY MANAGEMENT IN JAVA... 3 WHERE STORAGE LIVES... 3

Kodewerk. Java Performance Services. The War on Latency. Reducing Dead Time Kirk Pepperdine Principle Kodewerk Ltd.

Memory management has always involved tradeoffs between numerous optimization possibilities: Schemes to manage problem fall into roughly two camps

Habanero Extreme Scale Software Research Project

CA341 - Comparative Programming Languages

Java Application Performance Tuning for AMD EPYC Processors

Sustainable Memory Use Allocation & (Implicit) Deallocation (mostly in Java)

Lecture 13: Garbage Collection

Java Memory Management. Märt Bakhoff Java Fundamentals

High Performance Managed Languages. Martin Thompson

CMSC 330: Organization of Programming Languages

J2EE Performance Tuning. Jayesh Patel Northern Virginia Java/BEA User Group January 11 th, 2005.

CMSC 330: Organization of Programming Languages

Garbage Collection. Akim D le, Etienne Renault, Roland Levillain. May 15, CCMP2 Garbage Collection May 15, / 35

Top Ten Enterprise Java performance problems. Vincent Partington Xebia

Name, Scope, and Binding. Outline [1]

Configuring the Heap and Garbage Collector for Real- Time Programming.

Runtime. The optimized program is ready to run What sorts of facilities are available at runtime

IBM Tivoli Composite Application Manager for Microsoft Applications: Microsoft.NET Framework Agent Fix Pack 13.

Webcenter Application Performance Tuning guide

Workload Characterization and Optimization of TPC-H Queries on Apache Spark

CMSC 330: Organization of Programming Languages. Memory Management and Garbage Collection

New Java performance developments: compilation and garbage collection

SAP ENTERPRISE PORTAL. Scalability Study - Windows

Shenandoah An ultra-low pause time Garbage Collector for OpenJDK. Christine H. Flood Roman Kennke

Hard Real-Time Garbage Collection in Java Virtual Machines

Oracle JRockit. Performance Tuning Guide Release R28 E

Garbage-First Garbage Collection by David Detlefs, Christine Flood, Steve Heller & Tony Printezis. Presented by Edward Raff

JVM and application bottlenecks troubleshooting

Real Time: Understanding the Trade-offs Between Determinism and Throughput

It s Good to Have (JVM) Options

CS 345. Garbage Collection. Vitaly Shmatikov. slide 1

The C4 Collector. Or: the Application memory wall will remain until compaction is solved. Gil Tene Balaji Iyengar Michael Wolf

JamaicaVM Java for Embedded Realtime Systems

How to keep capacity predictions on target and cut CPU usage by 5x

Contents. Created by: Raúl Castillo

Part I Garbage Collection Modeling: Progress Report

JVM Performance Study Comparing Java HotSpot to Azul Zing Using Red Hat JBoss Data Grid

The Z Garbage Collector Scalable Low-Latency GC in JDK 11

A Side-channel Attack on HotSpot Heap Management. Xiaofeng Wu, Kun Suo, Yong Zhao, Jia Rao The University of Texas at Arlington

Garbage Collection. Steven R. Bagley

A JVM Does What? Eva Andreasson Product Manager, Azul Systems

Running class Timing on Java HotSpot VM, 1

NUMA in High-Level Languages. Patrick Siegler Non-Uniform Memory Architectures Hasso-Plattner-Institut

JVM Performance Study Comparing Oracle HotSpot and Azul Zing Using Apache Cassandra

New Features Overview

The Memory Management Unit. Operating Systems. Autumn CS4023

Diagnostics in Testing and Performance Engineering

Release 12 Java Infrastructure. Brian Bent April 17, 2008

Performance Best Practices Paper for IBM Tivoli Directory Integrator v6.1 and v6.1.1

Garbage Collection (aka Automatic Memory Management) Douglas Q. Hawkins. Why?

A new Mono GC. Paolo Molaro October 25, 2006

CS Computer Systems. Lecture 8: Free Memory Management

Announcements. Reading. Project #1 due in 1 week at 5:00 pm Scheduling Chapter 6 (6 th ed) or Chapter 5 (8 th ed) CMSC 412 S14 (lect 5)

SELF-AWARE APPLICATIONS AUTOMATIC PRODUCTION DIAGNOSIS DINA GOLDSHTEIN

Acknowledgements These slides are based on Kathryn McKinley s slides on garbage collection as well as E Christopher Lewis s slides

CS 241 Honors Memory

Understanding Java Garbage Collection

Agenda Process Concept Process Scheduling Operations on Processes Interprocess Communication 3.2

Transcription:

Java Performance Tuning From A Garbage Collection Perspective Nagendra Nagarajayya MDE

Agenda Introduction To Garbage Collection Performance Problems Due To Garbage Collection Performance Tuning Manual Automatic Application Monitoring Garbage Collection Perspective Summary 2 JA-SIG 2004

Introduction To Garbage Collection 3 JA-SIG 2004

What is Garbage Collection (GC)? 4 JA-SIG 2004 GC enables automatic memory recycling This part of JVM called the Garbage collector Most collectors are stop-the-world Application is paused while the garbage collector runs Generational system Young generation Old generation Permanent generation

Generational Garbage Collection Efficient memory re-cycling Aging of objects Program Allocation Young Generation Objects are allocated by the program in the young generation Young Generation constantly filters out most objects (2/3), moves the rest to old generation (promotion) 5 JA-SIG 2004 Old Generation Old generation reclaims objects once in a while

Two Types Of Collectors Low Pause Collectors For applications where pause is a criteria, like Real Time Applications (telco), VoIP, Call Centers (Response time), Front Ends (GUI) Throughput Collectors For enterprise applications where pause is not such a criteria, like Financial systems, Application Servers, Billing Systems, Health Care, Decision Support Systems 6 JA-SIG 2004

Low Pause Collectors to serve the needs of applications where pause is a criteria Parallel Copy Collector Use many threads to process young generation collection Still stop-the-world Cost of collection is now dependent on live data and number of CPUs (single threaded pause / CPUs) Concurrent Old Generation Collector Use one thread to process collection while application threads run on remaining CPUs Cost is a percentage of CPU 7 JA-SIG 2004

Low Pause Collectors Parallel Copy Collector (Young Generation) Concurrent Mark-Sweep Collector (Old Generation) O O1 E E E Application Threads Parallel GC InitialMark Marking ReMark Sweeping Reset 8 JA-SIG 2004 E O O1 Eden Old Generation Heap Old Generation Heap After A Concurrent Collection

Throughput Collectors - serve the needs of enterprise applications where pause is not such a criteria Parallel Throughput Collector Uses many threads to process young generation collection Works very well with large young generation heaps, and lots of CPUs Still, stop-the-world collection Cost of collection is dependent on live data and CPUs Mark-Compact Old Generation Collector Uses one thread to process collection Stop-the-world collection 9 JA-SIG 2004

Throughput Collectors E S E Parallel Throughput Collector (Young Generation) Application Threads Parallel GC Mark-Sweep Collector (Old Generation) Single Thread GC O O1 S E 10 JA-SIG 2004 E S O O1 Eden Survivor Space Old Generation Heap Old Generation Heap After Collection

Heap Layout For The Collectors Low Pause Collectors Smaller young generations and larger older generations Keep young generation pause low Old generation concurrent collection pause should be low Throughput Collectors Larger young generations, and smaller old generations Young generation pause is dependent on number of CPUs Old generation pause could be big, so keep old generation small, to hold only needed long term objects 11 JA-SIG 2004

Performance Problems Due To Garbage Collection 12 JA-SIG 2004

Problems of Garbage Collection Application is paused during GC Adds latency High GC sequential overhead (serialization) leads to low throughput Limits efficiency and scalability of most server applications GC pauses make application behavior non-deterministic 13 JA-SIG 2004

Client Side Problems Applications like mobile and desktop GUIs (thick and thin client) Requirements fast response times very low pause time Problems See default collector used most of the time heaps not sized applications run with defaults 1 or 2 CPUs, less memory GC frequency increase as heap fills up faster GC takes over application time, leading to performance problems 14 JA-SIG 2004

Server Side Problems (1) Serving Front end and Back end applications Requirements Front end applications application servers, callprocessing, web applications fast response time to interact with users low pause time Backend applications MOMs, Billing, Financial, DSS throughput based applications, no interaction with users tolerate higher pauses, need more application time Lots of CPUs, and memory 15 JA-SIG 2004

Server Side Problems (2) Serving Front end and Back end applications Problems See Same as client side, default collector used most of the time heaps are sized bigger stop the world collection larger pauses as heap sizes are bigger GC frequency dependent on load CPUs are idle during collection scalability problems 16 JA-SIG 2004

Solution 17 JA-SIG 2004

Performance Tuning Manual tuning by application modeling What is application modeling GC Portal General Tuning Tips Automatic tuning Ergonomics 18 JA-SIG 2004

Application Modeling From A GC Perspective 19 JA-SIG 2004

Application Modeling and Performance Analysis What is it? Recommendations based on the model Empirical modeling Theoretical projections 20 JA-SIG 2004

Application Modeling And Performance Tuning: GC Perspective Goal : remove the unpredictable behavior of an application Construct a mathematical model by mining the verbose GC log files The model takes into account Incoming load information Data in verbosegc log files 21 JA-SIG 2004

The Model Incoming load information Transaction Rate (Allocation Rate) Active Transaction Duration Lifetimes of short and long lived data Size of objects per transaction 22 JA-SIG 2004

The Model (1) Data in the verbose GC log files GC pauses Young and Old generation pauses Time to start-stop application threads Application time GC frequency Young and old generation periodicity Rate of allocation/promotion of objects Direct allocation of objects in old generation 23 JA-SIG 2004

The Model (2) Data in the verbosegc log files (Contd.) Total 24 JA-SIG 2004 GC time, Application time Objects promoted Garbage collected Heap sizes Size of Young generation (Eden, Semi-Space) Size of Old generation Initial and Final Size of old generation Size of Permanent generation Average occupancy, and heap thresholds for GC

Verbosegc Log Sample 0.740905: [GC {Heap before GC invocations=8: Heap def new generation total 1536K, used 1055K [0xf2c00000, 0xf2e00000, 0xf2e00000) eden space 1024K, 99% used [0xf2c00000, 0xf2cfdfe0, 0xf2d00000) from space 512K, 7% used [0xf2d00000, 0xf2d09c50, 0xf2d80000) to space 512K, 0% used [0xf2d80000, 0xf2d80000, 0xf2e00000) concurrent mark-sweep generation total 59392K, used 540K [0xf2e00000, 0xf6800000, 0xf6800000) concurrent-mark-sweep perm gen total 4096K, used 1158K [0xf6800000, 0xf6c00000, 0xfa800000) 0.741773: [DefNew Desired survivor size 262144 bytes, new threshold 1 (max 31) age 1: 280048 bytes, 280048 total age 2: 40016 bytes, 320064 total : 1055K->312K(1536K), 0.0048282 secs] 1595K->853K(60928K) Heap after GC invocations=9:heap def new generation total 1536K, used 312K [0xf2c00000, 0xf2e00000, 0xf2e00000) eden space 1024K, 0% used [0xf2c00000, 0xf2c00000, 0xf2d00000) from space 512K, 61% used [0xf2d80000, 0xf2dce240, 0xf2e00000) to space 512K, 0% used [0xf2d00000, 0xf2d00000, 0xf2d80000) concurrent mark-sweep generation total 59392K, used 540K [0xf2e00000, 0xf6800000, 0xf6800000) concurrent-mark-sweep perm gen total 4096K, used 1158K [0xf6800000, 0xf6c00000, 0xfa800000) }, 0.0063803 secs] 25 JA-SIG 2004

Data Calculated GC sequential overhead (Directly related to application throughput) GC concurrent overhead Average size of objects Active data duration (long and short term objects) Actual throughput Application efficiency Speedup (Amdahl s law) % CPU utilization Memory Leak detection 26 JA-SIG 2004

General Recommendations based on the model (1) General JVM Tuning and Sizing methodology Size of old generation = Call rate * active call duration * long lived data/call Size of young generation = Call rate * expected periodicity of GC * short lived data/call for desired pause and frequency Reduce GC pauses Reduce GC sequential overhead 27 JA-SIG 2004

General Recommendations Based On The Model (2) Size the young and old generation heaps to handle a given load Detect memory leaks Choice of collector Choice of the different JVM options and switches 28 JA-SIG 2004

Empirical Modeling Rank the Application runs based on data analyzed from the verbosegc logs Choose the optimum JVM environment based on criteria: Heap sizes No. of Processors GC sequential overhead GC concurrent overhead, etc. Application efficiency 29 JA-SIG 2004

Theoretical Projections For Tuning Based On The Model 30 JA-SIG 2004 What-if scenarios could be tried How GC behavior changes with change in Application and JVM parameters What-if input parameters include: Size of young generation Size of old generation Request rate/load Garbage/request No. of processors

Theoretical Projections For Tuning Projection output shows : what could be the GC pause (latency) GC frequency GC sequential load (bandwidth) % CPU utilization, Speedup Application efficiency Allocation rate, Promotion rate Size and duration of Short lived data Size and duration of Long lived data 31 JA-SIG 2004

GC Portal 32 JA-SIG 2004

GC Portal Enables as a service, Application Modeling and Performance Tuning from GC perspective. Implemented in J2EE Allows developers to submit log files, and analyze application behavior Portal can be used to performance tune, and size application to run optimally under lean, peak, and burst conditions 33 JA-SIG 2004

SnapShot from the GC Portal 34 JA-SIG 2004

GC Portal Plots and displays graphically GC behavior over time. Parameters include: GC pauses (Max. and Average) GC frequency GC sequential load GC concurrent load Garbage Allocation rate Garbage Promotion rate 35 JA-SIG 2004

36 JA-SIG 2004 Snapshot from the GC portal Graphical Engine

GC Portal Provides General Recommendations Projections for sizing and tuning via "what-if" scenarios Empirical modeling 37 JA-SIG 2004

Snapshot from the GC portal What-if scenarios 38 JA-SIG 2004

GC Portal GC portal can be downloaded and installed http://java.sun.com/developer/technicalarticles/pro gramming/gcportal/index.html It can also be accessed on the internet http://sdc.sun.com/gcportal/ 39 JA-SIG 2004

GC General Tuning Tips 40 JA-SIG 2004

Reducing Collection Times Use -Xconcgc for low pause applications Use -XX:+AggressiveHeap for throughput applications Use -XX:+PrintCommandLine to see AggressiveOptions, and use this to tune further Size Permanent Generation Reduce pooled objects Using NIO Avoid System.gc() and distributed RMI GC Use -XX:+DisableExplicitGC Making immutables, mutables String -> String Buffer for String manipulation, and maybe storage Avoiding old generation undersized heaps Reduces collection time, but leads to lot of other problems like 41 JA-SIG 2004 fragmentation, triggers Full GC

Reducing Frequency Of GC Frequency of a collection is dependent on Size of young and old generations Incoming load Object life time Increase young generation to decrease frequency of collection but this will increase pause Choose a size where pause is tolerable Increase in load will fill up the heap faster so increases collection frequency Increase heap to reduce frequency Increase in lifetime of objects increases frequency as live objects take space Keep live objects to the needed minimum 42 JA-SIG 2004

Sizing The Heap Heap size influences the following GC frequency and collection times Number of short and long term objects Fragmentation and locality problems Undersized heap with concurrent collector leads to Full GCs with increase in load Fragmentation problems Oversized heap leads to increased collection times locality problems (smear problem) Use ISM and variable page sizes to reduce smear problem Size heap to handle peak and burst loads 43 JA-SIG 2004

Improving Execution Efficiency GC Portal computes execution efficiency Efficiency calculated using Amdahl's law Translates to CPU utilization Higher this value the better Increase efficiency by reducing serial parts Reducing GC pause & frequency Reducing long term objects and increasing short term objects Creating only needed objects like using NIO, mutables Avoiding Full GC, For e.g. RMI DGC, undersized heaps Choosing optimum heap size to reduce smear effect 44 JA-SIG 2004

Other Ways To Improve Performance On Solaris Using the Solaris RT (real-time) scheduling class Using the alternate thread library (/usr/lib/lwp) - default thread library on Solaris 9 Using hires_tick to change clock resolution Using processor sets Binding process to a CPU Turning off interrupts Modifying the dispatch table Use large page sizes Use multi-threaded malloc library 45 JA-SIG 2004

Automatic Tuning In J2SE 1.5 46 JA-SIG 2004

Ergonomics What is ergonomics? Why do it? When is it used? What does it do? How does it work? 47 JA-SIG 2004

What Is Ergonomics? JVM automatically selects Compiler Garbage collector Heap size User specifies behavior GC dynamically does tuning AKA GC ergonomics 48 JA-SIG 2004

Why Do Ergonomics? Better Performance Hand tuned performance is good Ease of Use Hand tuning is hard Better Resource Usage Use what you need 49 JA-SIG 2004

When Is Ergonomics Used? Server class machines 2 CPUs, 2 Gbytes Exceptions Microsoft Windows ia32 50 JA-SIG 2004

What Does Ergonomics Do? Server compiler Parallel GC collector Maximum heap Smaller of ¼ physical memory 1 Gbyte Initial heap Smaller of 1/64 physical memory 51 JA-SIG 2004 1 Gbyte

What is GC Ergonomics? 52 JA-SIG 2004 User specifies Maximum pause time goal Throughput goal Assumes minimum footprint goal GC tunes Young generation size Old generation size Survivor space sizes Tenuring threshold

Why Do GC Ergonomics? Common complaints Pauses are too long GC is too frequent Solution Hand tune the GC 53 JA-SIG 2004

What Does GC Ergonomics Do? 54 JA-SIG 2004 Goals, not guarantees User specified behavior Maximum pause time goal Reduce size of generation Throughput goal Increase size of generations Minimum footprint Reduce size of generations Again, goals, not guarantees

Throughput Example Old Generation Size 180000 170000 160000 150000 140000 130000 120000 110000 100000 90000 80000 70000 60000 50000 40000 30000 20000 Throughput Only 0 250 500 750 1000 1250 1500 1750 Time (sec) 55 JA-SIG 2004

Throughput Example Throughput Only Major Pause (ms) 1700 1600 1500 1400 1300 1200 1100 1000 900 800 700 600 500 400 300 0 250 500 750 1000 1250 1500 1750 Time (sec) 56 JA-SIG 2004

Throughput Example 65 60 55 Throughput Only Major GC cost (%) 50 45 40 35 30 25 20 15 10 5 0 0 250 500 750 1000 1250 1500 1750 Time (sec) 57 JA-SIG 2004

Pause Example 1300 Pause Goal - 1250ms 1200 1100 Major Pause (ms) 1000 900 800 700 600 500 400 300 200 0 250 500 750 1000 1250 1500 1750 58 JA-SIG 2004 Time (s)

Ergonomics Usage Use -XX:+UseParallelGC with the 59 JA-SIG 2004 below options Throughput Goal -XX:GCTimeRatio=nnn The ratio of GC time to application time 1 / (1 + nnn) where nnn is a value to obtain the percentage GC time vs application time. E.g. Nnn = 19, GC time 5% of application time Pause Time Goal -XX:MaxGCPauseMillis=nnn An hint to the JVM to keep the pauses below this value

Ergonomics Strategy Use throughput strategy, and set desired throughput Change maximum heap size if throughput cannot be achieved If throughput goal is achieved, set pause time goal, if pauses are high 60 JA-SIG 2004

JVM Monitoring & Management in J2SE 1.5 61 JA-SIG 2004

Java Monitoring and Management API Provides a way to manage and monitor a JVM Information about loaded classes and threads Memory usage Garbage collection statistics Low memory detection & thresholds Provides monitoring utilities jconsole jstat 62 JA-SIG 2004

Java Monitoring and Management API Provides MBeans GarbageCollectorMXBean MemoryManagerMXBean MemoryMXBean MemoryPoolMXBean Other MBeans MBeans can be accessed through jconsole jconsole jvmpid 63 JA-SIG 2004

jconsole - GarbageCollection 64 JA-SIG 2004

jconsole - Memory Usage 65 JA-SIG 2004

jstat An utility to obtain JVM statistics 66 JA-SIG 2004 dynamically Compiler statistics Class loader statistics GC statistics GC statistics include cause of GC generation information capacity utilization

jstat Usage jstat -gc jvmid 67 JA-SIG 2004 Provides statistics on the behavior of the garbage collected heap jstat -gcutil jvmid Provides a concise summary of garbage collection statistics. jstat -gcutil 21891 S0 S1 E O P YGC YGCT FGC FGCT GCT 12.44 0.00 27.20 9.49 96.70 78 0.176 5 0.495 0.672 12.44 0.00 62.16 9.49 96.70 78 0.176 5 0.495 0.672 12.44 0.00 83.97 9.49 96.70 78 0.176 5 0.495 0.672 0.00 7.74 0.00 9.51 96.70 79 0.177 5 0.495 0.673

Summary Introduced low pause and throughput collectors Performance problems seen with garbage collection Improving performance using manual and automatic tuning Introduction to the new monitoring & management API 68 JA-SIG 2004

Resources http://java.sun.com/docs/hotspot/index.html http://java.sun.com/docs/hotspot/gc1.4.2/ http://developers.sun.com/techtopics/mobility/midp/articles/garbagecollection2/ http://http://java.sun.com/developer/technicalarticles/programming/turbo/ http://java.sun.com/docs/hotspot/vmoptions.html http://sdc.sun.com/gcportal/ http://java.sun.com/developer/technicalarticles/programming/gcportal/index.html Contact: Nagendra.Nagarajayya@Sun.Com gc-portal-team@sun.com 69 JA-SIG 2004

Java Performance Tuning From A Garbage Collection Perspective Nagendra Nagarajayya nagendra.nagarajayya@sun.com