Pick Diamonds from Garbage

Slides:



Advertisements
Similar presentations
An Implementation of Mostly- Copying GC on Ruby VM Tomoharu Ugawa The University of Electro-Communications, Japan.
Advertisements

… an introduction Peter Varsanyi Garbage collector Confidential.
Locality-Conscious Lock-Free Linked Lists Anastasia Braginsky & Erez Petrank 1.
Silberschatz, Galvin and Gagne ©2009 Operating System Concepts – 8 th Edition Chapter 5: CPU Scheduling.
Memory Leak WEBLOGIC SERVER.  Overview of Java Heap  What is a Memory Leak  Symptoms of Memory Leaks  How to troubleshoot  Tools  Best Practices.
C O N F I D E N T I A L 17-May-15 1 Java Memory Management Overview Justin Chen Mar 16 rd, 2009.
Chapter 5 CPU Scheduling. CPU Scheduling Topics: Basic Concepts Scheduling Criteria Scheduling Algorithms Multiple-Processor Scheduling Real-Time Scheduling.
Log-Structured Memory for DRAM-Based Storage Stephen Rumble, Ankita Kejriwal, and John Ousterhout Stanford University.
NUMA Tuning for Java Server Applications Mustafa M. Tikir.
This presentation: Sasha GoldshteinCTO, Sela Group Garbage Collection Performance Tips.
Task-aware Garbage Collection in a Multi-Tasking Virtual Machine Sunil Soman Laurent Daynès Chandra Krintz RACE Lab, UC Santa Barbara Sun Microsystems.
Disk Access Model. Using Secondary Storage Effectively In most studies of algorithms, one assumes the “RAM model”: –Data is in main memory, –Access to.
UPortal Performance Optimization Faizan Ahmed Architect and Engineering Group Enterprise Systems & Services RUTGERS
Memory Management CSCI 3753 Operating Systems Spring 2005 Prof. Rick Han.
1 Thursday, June 15, 2006 Confucius says: He who play in root, eventually kill tree.
G1 TUNING Shubham Modi( ) Ujjwal Kumar Singh(10772) Vaibhav(10780)
1 Garbage Collection Danny Angus. Introduction Student loans, amongst other things, run B2B applications implementing government policy in the UK. We.
Page 1 © 2001 Hewlett-Packard Company Tools for Measuring System and Application Performance Introduction GlancePlus Introduction Glance Motif Glance Character.
Basics of Operating Systems March 4, 2001 Adapted from Operating Systems Lecture Notes, Copyright 1997 Martin C. Rinard.
Memory Leak Overview and Tools. AGENDA  Overview of Java Heap  What is a Memory Leak  Symptoms of Memory Leaks  How to troubleshoot  Tools  Best.
File System. NET+OS 6 File System Architecture Design Goals File System Layer Design Storage Services Layer Design RAM Services Layer Design Flash Services.
The Java Virtual Machine Mike Brunt.  What is the JVM?  Main JVM Suppliers  ColdFusion and the JVM  Java J2EE – Java EE Servlet Containers  Where.
Power your JVM with Effective Garbage Collection Tuning SiliconIndia Java Conference 29 th October, 2010 Vivekanand Jha.
CPSC 404, Laks V.S. Lakshmanan1 External Sorting Chapter 13: Ramakrishnan & Gherke and Chapter 2.3: Garcia-Molina et al.
Click to add text © 2012 IBM Corporation Design Manager Server Instrumentation Instrumentation Data Documentation Gary Johnston, Performance Focal Point,
Chapter 4 CPU Scheduling. 2 Basic Concepts Scheduling Criteria Scheduling Algorithms Multiple-Processor Scheduling Real-Time Scheduling Algorithm Evaluation.
Java Performance Analysis 301 Peter Johnson CMG 2006, December 7, Session 534, Paper 6033.
Log-Structured Memory for DRAM-Based Storage Stephen Rumble and John Ousterhout Stanford University.
Getting the Most out of Scientific Computing Resources
Garbage Collection What is garbage and how can we deal with it?
Getting the Most out of Scientific Computing Resources
Memory Management.
Chapter 6: CPU Scheduling
Segmentation COMP 755.
Dan C. Marinescu Office: HEC 439 B. Office hours: M, Wd 3 – 4:30 PM.
Process Management Process Concept Why only the global variables?
J. Xu et al, FAST ‘16 Presenter: Rohit Sarathy April 18, 2017
Java 9: The Quest for Very Large Heaps
Lecture 16: Data Storage Wednesday, November 6, 2006.
Chapter 5a: CPU Scheduling
Runtime Analysis of Hotspot Java Virtual Machine
Operating Systems Processes Scheduling.
Operating Systems ECE344 Lecture 11: SSD Ding Yuan
Lecture 11: DMBS Internals
Chapter 6: CPU Scheduling
Chapter 6: CPU Scheduling
Flight Recorder in OpenJDK
Process management Information maintained by OS for process management
David F. Bacon, Perry Cheng, and V.T. Rajan
CPU Scheduling G.Anuradha
Module 5: CPU Scheduling
COT 4600 Operating Systems Spring 2011
PerfView Measure and Improve Your App’s Performance for Free
Operating System Concepts
Am I Reading GC Logs Correctly?
Strategies for automatic memory management
3: CPU Scheduling Basic Concepts Scheduling Criteria
Chapter5: CPU Scheduling
Chapter 5: CPU Scheduling
Chapter 6: CPU Scheduling
Chapter 5: CPU Scheduling
Lecture 2 Part 3 CPU Scheduling
CENG 351 Data Management and File Structures
Chapter 6: CPU Scheduling
Module 5: CPU Scheduling
Chapter 6: CPU Scheduling
New GC collectors in Java 11
Module 5: CPU Scheduling
CSC Multiprocessor Programming, Spring, 2011
Garbage Collection What is garbage and how can we deal with it?
Presentation transcript:

Pick Diamonds from Garbage Ram Lakshmanan Founder – GCEasy.io & FastThread.io

Agenda KPI Anatomy of GC Log Tools Analyze real world GC Logs

Lets go to vacation  F-16 Falcon Hawaii 2,392 miles Boeing

KPI Time to transport 1 passenger 108 mins 251 mins Enemy attacking Leisure/Business KPI 1320 mph 570 mph Time to transport 1 passenger 108 mins (i.e. 2392 / 1320) 251 mins (i.e. 2392/570) Latency GC Pause time # of passengers transported in 24 hrs 13 No. of trips in 24 hrs: 13 No. of passengers/trip: 1 3300 No. of trips: in 24 hrs: 5 No. of Passengers/trip: 660 2.3x 220x # of passengers transported in 24 hrs (fueling, wind, breaks….) 12 No. of trips in 24 hr: 12 No. of passengers/trip: 1 2640 No. of trips in 24 hrs: 4 No. of Passengers/trip: 660 Throughput Useful Work Cost ?? Should be expensive 600$/passengers Footprint CPU, Memory

Example Requirements Latency: No API call can run beyond 500 ms. Search pages response time should be under 1 second Throughput: Application should be able to process 1000 API calls/second Batch process should complete with in 6 hours. (Every night 6:00pm - 12:00pm) Foot print: Application must run on JVMs with less than 2 GB of memory AWS bill shouldn't exceed 20,000$

Agenda KPI Anatomy of GC Log Tools Analyze real world GC Logs

GC Log 1 2 3 4 2016-03-21T13:46:58.371+0000: 500.203: [Full GC [PSYoungGen: 1047584K->0K(1048064K)] [ParOldGen: 2097151K->865378K(2097152K)] 3144735K->865378K(3145216K) [PSPermGen: 29674K->29634K(262144K)], 1.8485590 secs] [Times: user=3.17 sys=0.21, real=1.84 secs] 5 7 6 8 1 2016-03-21T13:46:58.371 – Timestamp at which GC event ran 2 500.203 – Number of seconds since application started Full GC – Type of GC 3 PSYoungGen: 1047584K->0K(1048064K) – Young Gen size dropped from 1047584K (i.e.1gb) to 0k. Total allocated Young Gen size is 1048064K 4 ParOldGen: 2097151K->865378K(2097152K) – Old Gen size dropped from 2097151K (i.e.1.99gb) to 865378K(i.e.845mb). Total allocated Old Gen size is 2097152k (i.e.2gb) 5 6 3144735K->865378K(3145216K) – overall heap size dropped from 3144735K (i.e.2.99gb) to 865378K (i.e.845mb) 7 PSPermGen: 29674K->29634K(262144K) – Perm Gen Size dropped from 29674K to 29634K. Overall Perm Gen Size is 262144K (i.e.256mb) 8 [Times: user=3.17 sys=0.21, real=1.84 secs]

Unix command – “time”

GC Time Real is wall clock time – time from start to finish of the call. This is all elapsed time including time slices used by other processes and time the process spends blocked (for example if it is waiting for I/O to complete). Sys is the amount of CPU time spent in the kernel within the process. This means executing CPU time spent in system calls within the kernel, as opposed to library code, which is still running in user-space. Like ‘user’, this is only CPU time used by the process. User is the amount of CPU time spent in user-mode code (outside the kernel) within the process. This is only actual CPU time used in executing the process. Other processes and time the process spends blocked do not count towards this figure. User+Sys will tell you how much actual CPU time your process used. Note that this is across all CPUs, so if the process has multiple threads it could potentially exceed the wall clock time reported by Real. [Times: user=3.09 sys=0.00, real=3.10 secs] Typical for Serial GC [Times: user=11.53 sys=1.38, real=1.03 secs]

G1 GC Log Format 1 2 3 2015-09-14T12:32:24.398-0700: 0.356: [GC pause (G1 Evacuation Pause) (young), 0.0215287 secs] [Parallel Time: 20.0 ms, GC Workers: 8] [GC Worker Start (ms): Min: 355.9, Avg: 356.3, Max: 358.4, Diff: 2.4] [Processed Buffers: Min: 0, Avg: 1.1, Max: 5, Diff: 5, Sum: 9] : [Free CSet: 0.0 ms] [Eden: 12.0M(12.0M)->0.0B(14.0M) Survivors: 0.0B->2048.0K Heap: 12.6M(252.0M)->7848.3K(252.0M)] [Times: user=0.08 sys=0.00, real=0.02 secs] 4 5 6 1 2015-09-14T12:32:24.398-0700: 0.356 –  indicates the time at which this GC event fired. Here 0.356 indicates that 356 milliseconds after the Java process was started this GC event was fired. GC pause (G1 Evacuation Pause) — Evacuation Pause is a phase where live objects are copied from one region (young or young + old) to another region. 2 3 (young) – indicates that this is a Young GC event. Doubtful on #3. 4 GC Workers: 8 – indicates the number of GC worker threads. 5 [Eden: 12.0M(12.0M)->0.0B(14.0M) Survivors: 0.0B->2048.0K Heap: 12.6M(252.0M)->7848.3K(252.0M)] – This line indicates the heap size changes: Eden: 12.0M(12.0M)->0.0B(14.0M) - indicates that Eden generation’s capacity was 12mb and all of the 12mb was occupied. After this GC event, young generation occupied size came down to 0. Target Capacity of Eden generation has been increased to 14mb, but not yet committed.  Additional regions are added to Eden generation, as demands are made. Survivors: 0.0B->2048.0K - indicates that Survivor space was 0 bytes before this GC event. But after the event Survivor size increased to 2048kb. It indicates that objects are promoted from Young Generation to Survivor space. Heap: 12.6M(252.0M)->7848.3K(252.0M) – indicates that capacity of heap size was 252mb, in that 12.6mb was utilized. After this GC event, heap utilization dropped to 7848.3kb (i.e. 5mb (i.e. 12.6mb – 7848.3kb) of objects has been garbage collected in this event). And heap capacity remained at 252mb. 6 Times: user=0.08, sys=0.00, real=0.02 secs 

G1 GC Log - another format 53957.956: [GC pause (G1 Evacuation Pause) (young) 104M->49M(118M), 0.0020080 secs]

CMS Log format Before GC: Statistics for BinaryTreeDictionary: ------------------------------------ Total Free Space: 2524251 Max Chunk Size: 2519552 Number of Blocks: 13 Av. Block Size: 194173 Tree Height: 8 2016-05-03T04:27:37.503+0000: 30282.678: [ParNew Desired survivor size 214728704 bytes, new threshold 1 (max 1) - age 1: 85782640 bytes, 85782640 total : 3510063K->100856K(3774912K), 0.0516290 secs] 9371816K->6022161K(14260672K)After GC: Total Free Space: 530579346 Max Chunk Size: 332576815 Number of Blocks: 7178 Av. Block Size: 73917 Tree Height: 44 After GC: , 0.0552970 secs] [Times: user=0.67 sys=0.00, real=0.06 secs] Heap after GC invocations=5898 (full 77): par new generation total 3774912K, used 100856K [0x000000047ae00000, 0x000000057ae00000, 0x000000057ae00000) eden space 3355520K, 0% used [0x000000047ae00000, 0x000000047ae00000, 0x0000000547ae0000) from space 419392K, 24% used [0x0000000547ae0000, 0x000000054dd5e328, 0x0000000561470000) to space 419392K, 0% used [0x0000000561470000, 0x0000000561470000, 0x000000057ae00000) concurrent mark-sweep generation total 10485760K, used 5921305K [0x000000057ae00000, 0x00000007fae00000, 0x00000007fae00000) concurrent-mark-sweep perm gen total 49380K, used 29537K [0x00000007fae00000, 0x00000007fde39000, 0x0000000800000000) }

IBM GC Log format <af type="tenured" id="4" timestamp="Jun 16 11:28:22 2016" intervalms="5633.039"> <minimum requested_bytes="56" /> <time exclusiveaccessms="0.010" meanexclusiveaccessms="0.010" threads="0" lastthreadtid="0xF6B1C400" /> <refs soft="7232" weak="3502" phantom="9" dynamicSoftReferenceThreshold="30" maxSoftReferenceThreshold="32" /> <tenured freebytes="42949632" totalbytes="1073741824" percent="3" > <soa freebytes="0" totalbytes="1030792192" percent="0" /> <loa freebytes="42949632" totalbytes="42949632" percent="100" /> </tenured> <pending-finalizers finalizable="0" reference="0" classloader="0" /> <gc type="global" id="6" totalid="6" intervalms="3342.687"> <classunloading classloaders="0" classes="0" timevmquiescems="0.000" timetakenms="1.200" /> <finalization objectsqueued="75" /> <timesms mark="28.886" sweep="1.414" compact="0.000" total="31.571" /> <tenured freebytes="1014673616" totalbytes="1073741824" percent="94" > <soa freebytes="982461648" totalbytes="1041529856" percent="94" /> <loa freebytes="32211968" totalbytes="32211968" percent="100" /> </gc> <tenured freebytes="1014608080" totalbytes="1073741824" percent="94" > <soa freebytes="982396112" totalbytes="1041529856" percent="94" /> <refs soft="7020" weak="2886" phantom="9" dynamicSoftReferenceThreshold="30" maxSoftReferenceThreshold="32" /> <pending-finalizers finalizable="75" reference="15" classloader="0" /> <time totalms="33.852" /> </af>

IBM GC Log – another format <gc-op id="139" type="scavenge" timems="335.610" contextid="136" timestamp="2016-06-15T15:51:10.128"> <scavenger-info tenureage="4" tenuremask="7ff0" tiltratio="58" /> <memory-copied type="nursery" objects="11071048" bytes="448013400" bytesdiscarded="88016" /> <memory-copied type="tenure" objects="286673" bytes="9771936" bytesdiscarded="320608" /> <copy-failed type="nursery" objects="286673" bytes="9771936" /> <finalization candidates="112" enqueued="16" /> <ownableSynchronizers candidates="8111" cleared="11" /> <references type="soft" candidates="1256" cleared="0" enqueued="0" dynamicThreshold="32" maxThreshold="32" /> <references type="weak" candidates="2953" cleared="0" enqueued="0" /> <references type="phantom" candidates="142406" cleared="142335" enqueued="142335" /> </gc-op>

GC Log format varies Java Vendor JVM Version GC Algorithm Arguments

Reminds of… https://www.youtube.com/watch?v=QNJL6nfu__Q

Agenda KPI Anatomy of GC Log Tools Analyze real world GC Logs

gceasy.io Universal GC log analyzer – http://gceasy.io

gceasy.io – REST API https://blog.gceasy.io/2016/06/18/garbage-collection-log-analysis-api/

Agenda KPI Anatomy of GC Log Tools Analyze real world GC Logs

Diamond 1: Long GC Pause

Diamond 2: Poor Throughput

Diamond 3: Memory Leak

Diamond 4: Memory Leak 2

Diamond 5: Consecutive Full GCs

Diamond 6: G1 GC – advanced info

1. SPA (Scalability, Performance, Availability) Thank you!! Services Offered Consulting 1. SPA (Scalability, Performance, Availability) 2. Cloud On-site Training ram@tier1app.com https://www.linkedin.com/in/ramlakshman