CORK: DYNAMIC MEMORY LEAK DETECTION FOR GARBAGE- COLLECTED LANGUAGES A TRADEOFF BETWEEN EFFICIENCY AND ACCURATE, USEFUL RESULTS.

Slides:



Advertisements
Similar presentations
Borland Optimizeit™ Profiler for the Microsoft .NET Framework
Advertisements

Department of Computer Sciences Dynamic Shape Analysis via Degree Metrics Maria Jump & Kathryn S. McKinley Department of Computer Sciences The University.
TPTP 4.4 New Java Profiler (JVMTI) Test and Performance Tools Platform (TPTP) Heap Analysis Enhancements for TPTP 4.4 Asaf Yaffe Software and Solutions.
Uncovering Performance Problems in Java Applications with Reference Propagation Profiling PRESTO: Program Analyses and Software Tools Research Group, Ohio.
Runtime Techniques for Efficient and Reliable Program Execution Harry Xu CS 295 Winter 2012.
Automatic Memory Management Noam Rinetzky Schreiber 123A /seminar/seminar1415a.html.
Lecture 10: Heap Management CS 540 GMU Spring 2009.
Garbage Collection What is garbage and how can we deal with it?
Michael Bond Kathryn McKinley The University of Texas at Austin Presented by Na Meng Most of the slides are from Mike’s original talk. Many thanks go to.
CSC 213 – Large Scale Programming. Today’s Goals  Consider what new does & how Java works  What are traditional means of managing memory?  Why did.
Basic Memory Management 1. Readings r Silbershatz et al: chapters
JProbe. 1. JProbe Use JProbe Profile –identify method and line level performance bottlenecks Use JProbe Memory Debugger –investigating memory leaks and.
PRESTO: Program Analyses and Software Tools Research Group, Ohio State University Precise Memory Leak Detection for Java Software Using Container Profiling.
Department of Computer Sciences Cork: Dynamic Memory Leak Detection with Garbage Collection Maria Jump Kathryn S. McKinley
Guoquing Xu, Atanas Rountev Ohio State University Oct 9 th, 2008 Presented by Eun Jung Park.
Hastings Purify: Fast Detection of Memory Leaks and Access Errors.
LOW-OVERHEAD MEMORY LEAK DETECTION USING ADAPTIVE STATISTICAL PROFILING WHAT’S THE PROBLEM? CONTRIBUTIONS EVALUATION WEAKNESS AND FUTURE WORKS.
Heap Growth Detection in C++ GrowthTracker 1. Heap Growth Detection in C++ Motivation Scalable City needs to run continuously –Many months without intervention/access.
NUMA Tuning for Java Server Applications Mustafa M. Tikir.
CPSC 388 – Compiler Design and Construction
Chapter 8 Runtime Support. How program structures are implemented in a computer memory? The evolution of programming language design has led to the creation.
Capriccio: Scalable Threads for Internet Services ( by Behren, Condit, Zhou, Necula, Brewer ) Presented by Alex Sherman and Sarita Bafna.
Finding Low-Utility Data Structures Guoqing Xu 1, Nick Mitchell 2, Matthew Arnold 2, Atanas Rountev 1, Edith Schonberg 2, Gary Sevitsky 2 1 Ohio State.
Yuanyuan ZhouUIUC-CS Architectural Support for Software Bug Detection Yuanyuan (YY) Zhou and Josep Torrellas University of Illinois at Urbana-Champaign.
Run-Time Storage Organization
LeakChaser: Helping Programmers Narrow Down Causes of Memory Leaks Guoqing Xu, Michael D. Bond, Feng Qin, Atanas Rountev Ohio State University.
1 An Efficient On-the-Fly Cycle Collection Harel Paz, Erez Petrank - Technion, Israel David F. Bacon, V. T. Rajan - IBM T.J. Watson Research Center Elliot.
1 Predictors of customer perceived software quality Paul Luo Li (ISRI – CMU) Audris Mockus (Avaya Research) Ping Zhang (Avaya Research)
Bell: Bit-Encoding Online Memory Leak Detection Michael D. Bond Kathryn S. McKinley University of Texas at Austin.
Garbage Collection and High-Level Languages Programming Languages Fall 2003.
Object-oriented design CS 345 September 20,2002. Unavoidable Complexity Many software systems are very complex: –Many developers –Ongoing lifespan –Large.
Precise Memory Leak Detection for Java Software Using Container Profiling Guoqing Xu, Atanas Rountev Program analysis and software tools group Ohio State.
The College of William and Mary 1 Influence of Program Inputs on the Selection of Garbage Collectors Feng Mao, Eddy Zheng Zhang and Xipeng Shen.
Tolerating Memory Leaks Michael D. Bond Kathryn S. McKinley.
Michael Bond Kathryn McKinley The University of Texas at Austin.
EE4E. C++ Programming Lecture 1 From C to C++. Contents Introduction Introduction Variables Variables Pointers and references Pointers and references.
15-740/ Oct. 17, 2012 Stefan Muller.  Problem: Software is buggy!  More specific problem: Want to make sure software doesn’t have bad property.
Introduction to Java August 14, 2008 Mrs. C. Furman.
Programming Lifecycle
P ath & E dge P rofiling Michael Bond, UT Austin Kathryn McKinley, UT Austin Continuous Presented by: Yingyi Bu.
1 Fast and Efficient Partial Code Reordering Xianglong Huang (UT Austin, Adverplex) Stephen M. Blackburn (Intel) David Grove (IBM) Kathryn McKinley (UT.
Conrad Benham Java Opcode and Runtime Data Analysis By: Conrad Benham Supervisor: Professor Arthur Sale.
Dynamic Object Sampling for Pretenuring Maria Jump Department of Computer Sciences The University of Texas at Austin Stephen M. Blackburn.
Copyright (c) 2004 Borys Bradel Myths and Realities: The Performance Impact of Garbage Collection Paper: Stephen M. Blackburn, Perry Cheng, and Kathryn.
Chameleon Automatic Selection of Collections Ohad Shacham Martin VechevEran Yahav Tel Aviv University IBM T.J. Watson Research Center Presented by: Yingyi.
1 Dynamic Memory Allocation –The need –malloc/free –Memory Leaks –Dangling Pointers and Garbage Collection Today’s Material.
Trading Functionality for Power within Applications Melanie Kambadur and Martha A. Kim {melanie | Columbia University, New York,
Debugging and Profiling With some help from Software Carpentry resources.
Precomputation- based Prefetching By James Schatz and Bashar Gharaibeh.
CS 343 presentation Concrete Type Inference Department of Computer Science Stanford University.
Multithreading The objectives of this chapter are: To understand the purpose of multithreading To describe Java's multithreading mechanism.
Software Engineering Prof. Dr. Bertrand Meyer March 2007 – June 2007 Chair of Software Engineering Lecture #20: Profiling NetBeans Profiler 6.0.
GC Assertions: Using the Garbage Collector To Check Heap Properties Samuel Z. Guyer Tufts University Edward Aftandilian Tufts University.
1 University of Maryland Using Information About Cache Evictions to Measure the Interactions of Application Data Structures Bryan R. Buck Jeffrey K. Hollingsworth.
Memory in Computer Yung-Hsiang Lu Purdue University 1.
Dynamic Bug Detection & Tolerance Kathryn S McKinley The University of Texas at Austin.
Optimistic Hybrid Analysis
Garbage Collection What is garbage and how can we deal with it?
Cork: Dynamic Memory Leak Detection with Garbage Collection
Seminar in automatic tools for analyzing programs with dynamic memory
Zhenbo XU, Jian ZHANG, Zhongxing XU
Concepts of programming languages
Lazy Diagnosis of In-Production Concurrency Bugs
Indranil Roy High Performance Computing (HPC) group
Multithreaded Programming
Dongyun Jin, Patrick Meredith, Dennis Griffith, Grigore Rosu
Introduction to Data Structure
Oukseh Lee, Hongseok Yang, and Kwangkeun Yi {cookcu; hyang;
Presentation transcript:

CORK: DYNAMIC MEMORY LEAK DETECTION FOR GARBAGE- COLLECTED LANGUAGES A TRADEOFF BETWEEN EFFICIENCY AND ACCURATE, USEFUL RESULTS

INTRODUCTION The authors: Maria Jump and Kathryn S. McKinley Cork: help programmers find and fix memory leaks by identifying data structures that grow during execution of a program Novel and efficient: Yes Portable: Yes. It can be used with polymorphic languages like Java or C#; it can be used with any garbage collection routines ( reachability vs. liveness ) Scalable: Yes, tested with large and small programs Accurate and useful: Maybe

IN THE FOLLOWING What’s the problem? Memory Leak The problem with previous work on memory leaks Contributions and Weaknesses Is Cork novel, efficient? Challenges Is Cork accurate and useful? Future Work

THE PROBLEM Memory Leak Identify the leak and then find out what is referring to the objects

PREVIOUS WORK Heap Differencing Degrade performance Memory Overhead Low-level details Separate Processor

CONTRIBUTIONS AND WEAKNESSES “We improve on the efficiency of these techniques. However, they differentiate in use objects from those not in use, adding additional information to their reports.” Cork is portable, scalable, and efficient. The tradeoff is accuracy. A tool for cursory examination

CORK IS NOVEL, EFFICIENT Previous works looked for objects not in use, Jump had the idea to track type growth

CANDIDATE LEAKS

CHALLENGES Volume Jitters, Ratio Ranking: Growing types are not necessarily memory leaks Multiple data structures contributing to type nodes Slice: the type to look at and the dynamic data structure containing them Inter-procedural: considers the calling structures Context-insensitive: a unified solution

ACCURATE AND USEFUL? Memory Leak: identify leak and find/fix the code creating leak “Cork is accurate: it identifies systematic heap growth with no false positives in 4 of 15 benchmarks we tested.” SPECjbb2000 and Eclipse: Ratio Ranking and Slicing

FUTURE WORK Rayside 2007 Object Ownership Profiling: Report a hierarchy of allocated objects along with size, staleness, and interactions; Slows the program down by a few orders of magnitude and doubles the memory required to run the program – Match tool to the problem Xu 2008 Precise Memory Leak Detection: track memory consumption AND “staleness” (time since last retrieval) 88.5% run-time overhead; Cork only adds 2.3% to execution time and uses less than 1% of the heap

FUTURE WORK CONT’D Bond and McKinley 2009 Leak Pruning: Piggybacks on the garbage collector) and identifies staleness and data structure usage. Adds 3 to 5% to execution time. Predict which objects are stale/dead when the program is about to run out of memory; that is, it is inactive until about to run out of memory. “Liveness is much harder to determine and is in general undecidable.” I think will talk about this in the next paper(s); but I have something on it if we want to talk about it now. Mitchel 2007 Yeti: a tool used at IBM to summarize memory usage, identify and fix problems. Yeti runs as a web service; users submit standard heap snapshots (i.e. do not require auto garbage collection routines) and receive reports

REFERENCES Xu, G. and Rountev, A., Precise Memory Leak Detection for Java Software Using Container Profiling, 2008 Rayside, D. and Mendel, L., Object Ownership Profiling: A Technique for Finding and Fixing Memory Leaks, 2007 Mitchell, N., et al, Making Sense of Large Heaps, 2007 Bond, M. D. and McKinley, K. S., Leak Pruning, 2009