Efficient Instrumentation for Object Flow Profiling

Profiling techniques to detect performance bugs in applications are usually customized to detect a specific bug pattern and involve significant engineering effort. In spite of this effort, many techniques either suffer from high runtime overheads or are imprecise. This necessitates the design of a c...

Full description

Bibliographic Details
Main Author: Mudduluru, Rashmi
Other Authors: Ramanathan, Murali Krishna
Language:en_US
Published: 2018
Subjects:
Online Access:http://etd.iisc.ernet.in/2005/3874
http://etd.iisc.ernet.in/abstracts/4746/G27275-Abs.pdf
id ndltd-IISc-oai-etd.iisc.ernet.in-2005-3874
record_format oai_dc
spelling ndltd-IISc-oai-etd.iisc.ernet.in-2005-38742018-07-21T03:44:53ZEfficient Instrumentation for Object Flow ProfilingMudduluru, RashmiFlow Profiles for Java ProgramsHybrid Flow GraphObject Flow ProfilingHybrid Flow Graph (HFG)Program AnalysisObject-oriented ProgrammingMemory ManagementComputer ScienceProfiling techniques to detect performance bugs in applications are usually customized to detect a specific bug pattern and involve significant engineering effort. In spite of this effort, many techniques either suffer from high runtime overheads or are imprecise. This necessitates the design of a common and efficient instrumentation substrate that profiles the flow of objects during an execution. Designing such a substrate which enables profile generation precisely with low overhead is non-trivial due to the number of objects created, accessed and paths traversed by them in an execution. In this thesis, we design and implement an efficient instrumentation substrate that efficiently generates object flow profiles for Java programs, without requiring any modifications to the underlying virtual machine. We achieve this by applying Ball-Larus numbering on a specialized hy-brid ow graph (hfg). The hfg path profiles that are collected during runtime are post-processed o ine to derive the object flow profiles. We extend the design to handle inter-procedural objec flows by constructing flow summaries for each method and incorporating them appropriately. We have implemented the substrate and validated its efficacy by applying it on programs from popular benchmark suites including dacapo and java-grande. The results demonstrate the scalability of our approach, which handles 0.2M to 0.55B object accesses with an average runtime overhead of 8x. We also demonstrate the effectiveness of the generated profiles by implementing three client analyses that consume the profiles to detect performance bugs. The analyses are able to detect 38 performance bugs which when refactored result in signi cant performance gains (up to 30%) in running times.Ramanathan, Murali Krishna2018-07-20T16:49:00Z2018-07-20T16:49:00Z2018-07-202015Thesishttp://etd.iisc.ernet.in/2005/3874http://etd.iisc.ernet.in/abstracts/4746/G27275-Abs.pdfen_USG27275
collection NDLTD
language en_US
sources NDLTD
topic Flow Profiles for Java Programs
Hybrid Flow Graph
Object Flow Profiling
Hybrid Flow Graph (HFG)
Program Analysis
Object-oriented Programming
Memory Management
Computer Science
spellingShingle Flow Profiles for Java Programs
Hybrid Flow Graph
Object Flow Profiling
Hybrid Flow Graph (HFG)
Program Analysis
Object-oriented Programming
Memory Management
Computer Science
Mudduluru, Rashmi
Efficient Instrumentation for Object Flow Profiling
description Profiling techniques to detect performance bugs in applications are usually customized to detect a specific bug pattern and involve significant engineering effort. In spite of this effort, many techniques either suffer from high runtime overheads or are imprecise. This necessitates the design of a common and efficient instrumentation substrate that profiles the flow of objects during an execution. Designing such a substrate which enables profile generation precisely with low overhead is non-trivial due to the number of objects created, accessed and paths traversed by them in an execution. In this thesis, we design and implement an efficient instrumentation substrate that efficiently generates object flow profiles for Java programs, without requiring any modifications to the underlying virtual machine. We achieve this by applying Ball-Larus numbering on a specialized hy-brid ow graph (hfg). The hfg path profiles that are collected during runtime are post-processed o ine to derive the object flow profiles. We extend the design to handle inter-procedural objec flows by constructing flow summaries for each method and incorporating them appropriately. We have implemented the substrate and validated its efficacy by applying it on programs from popular benchmark suites including dacapo and java-grande. The results demonstrate the scalability of our approach, which handles 0.2M to 0.55B object accesses with an average runtime overhead of 8x. We also demonstrate the effectiveness of the generated profiles by implementing three client analyses that consume the profiles to detect performance bugs. The analyses are able to detect 38 performance bugs which when refactored result in signi cant performance gains (up to 30%) in running times.
author2 Ramanathan, Murali Krishna
author_facet Ramanathan, Murali Krishna
Mudduluru, Rashmi
author Mudduluru, Rashmi
author_sort Mudduluru, Rashmi
title Efficient Instrumentation for Object Flow Profiling
title_short Efficient Instrumentation for Object Flow Profiling
title_full Efficient Instrumentation for Object Flow Profiling
title_fullStr Efficient Instrumentation for Object Flow Profiling
title_full_unstemmed Efficient Instrumentation for Object Flow Profiling
title_sort efficient instrumentation for object flow profiling
publishDate 2018
url http://etd.iisc.ernet.in/2005/3874
http://etd.iisc.ernet.in/abstracts/4746/G27275-Abs.pdf
work_keys_str_mv AT muddulururashmi efficientinstrumentationforobjectflowprofiling
_version_ 1718713206970515456