A Comparison of Online and Dynamic Impact Analysis Algorithms Ben Breech Mike Tegtmeyer Lori Pollock University of Delaware.

Slides:



Advertisements
Similar presentations
Garbage collection David Walker CS 320. Where are we? Last time: A survey of common garbage collection techniques –Manual memory management –Reference.
Advertisements

HARDWARE SOFTWARE PARTITIONING AND CO-DESIGN PRINCIPLES MADHUMITA RAMESH BABU SUDHI PROCH 1/37.
1 Line Distillation: Increasing Cache Capacity by Filtering Unused Words in Cache Lines Moinuddin K. Qureshi M. Aater Suleman Yale N. Patt HPCA 2007.
Object-oriented Software Change Dynamic Impact Analysis Lulu Huang and Yeong-Tae Song Dept. of Computer and Information Sciences Towson University Towson,
INTROPERF: TRANSPARENT CONTEXT- SENSITIVE MULTI-LAYER PERFORMANCE INFERENCE USING SYSTEM STACK TRACES Chung Hwan Kim*, Junghwan Rhee, Hui Zhang, Nipun.
A Regression Test Selection Technique for Aspect- Oriented Programs Guoqing Xu The Ohio State University
Effectively Prioritizing Tests in Development Environment
1 Cost Effective Dynamic Program Slicing Xiangyu Zhang Rajiv Gupta The University of Arizona.
CS590F Software Reliability What is a slice? S: …. = f (v)  Slice of v at S is the set of statements involved in computing v’s value at S. [Mark Weiser,
1 S. Tallam, R. Gupta, and X. Zhang PACT 2005 Extended Whole Program Paths Sriraman Tallam Rajiv Gupta Xiangyu Zhang University of Arizona.
Instant Profiling: Instrumentation Sampling for Profiling Datacenter Applications Hyoun Kyu Cho 1, Tipp Moseley 2, Richard Hank 2, Derek Bruening 2, Scott.
1 Integrating Influence Mechanisms into Impact Analysis for Increased Precision Ben Breech Lori Pollock Mike Tegtmeyer University of Delaware Army Research.
Hiperspace Lab University of Delaware Antony, Sara, Mike, Ben, Dave, Sreedevi, Emily, and Lori.
RUGRAT: Runtime Test Case Generation using Dynamic Compilers Ben Breech NASA Goddard Space Flight Center Lori Pollock John Cavazos University of Delaware.
Design of a Framework for Testing Security Mechanisms for Program-Based Attacks Ben “Security” Breech and Lori Pollock University of Delaware.
The Ant and The Grasshopper Fast and Accurate Pointer Analysis for Millions of Lines of Code Ben Hardekopf and Calvin Lin PLDI 2007 (Best Paper & Best.
Eliminating Stack Overflow by Abstract Interpretation John Regehr Alastair Reid Kirk Webb University of Utah.
Packet-Switched vs. Time-Multiplexed FPGA Overlay Networks Kapre et. al RC Reading Group – 3/29/2006 Presenter: Ilya Tabakh.
Fast Effective Dynamic Compilation Joel Auslander, Mathai Philipose, Craig Chambers, etc. PLDI’96 Department of Computer Science and Engineering Univ.
Garbage collection David Walker CS 320. Where are we? Last time: A survey of common garbage collection techniques –Manual memory management –Reference.
1 PATH: Page Access Tracking Hardware to Improve Memory Management Reza Azimi, Livio Soares, Michael Stumm, Tom Walsh, and Angela Demke Brown University.
Validating High-Level Synthesis Sudipta Kundu, Sorin Lerner, Rajesh Gupta Department of Computer Science and Engineering, University of California, San.
Overview C programming Environment C Global Variables C Local Variables Memory Map for a C Function C Activation Records Example Compilation.
Michael Ernst, page 1 Improving Test Suites via Operational Abstraction Michael Ernst MIT Lab for Computer Science Joint.
Improving Network Applications Security: a New Heuristic to Generate Stress Testing Data Presented by Conrad Pack Del Grosso et al.
Automated Diagnosis of Software Configuration Errors
Qin Zhao (MIT) Derek Bruening (VMware) Saman Amarasinghe (MIT) Umbra: Efficient and Scalable Memory Shadowing CGO 2010, Toronto, Canada April 26, 2010.
Linear Scan Register Allocation POLETTO ET AL. PRESENTED BY MUHAMMAD HUZAIFA (MOST) SLIDES BORROWED FROM CHRISTOPHER TUTTLE 1.
Impact Analysis of Database Schema Changes Andy Maule, Wolfgang Emmerich and David S. Rosenblum London Software Systems Dept. of Computer Science, University.
Vulnerability-Specific Execution Filtering (VSEF) for Exploit Prevention on Commodity Software Authors: James Newsome, James Newsome, David Brumley, David.
Multi-core Programming Thread Profiler. 2 Tuning Threaded Code: Intel® Thread Profiler for Explicit Threads Topics Look at Intel® Thread Profiler features.
1 A Static Analysis Approach for Automatically Generating Test Cases for Web Applications Presented by: Beverly Leung Fahim Rahman.
A Framework for Elastic Execution of Existing MPI Programs Aarthi Raveendran Tekin Bicer Gagan Agrawal 1.
CCGrid 2014 Improving I/O Throughput of Scientific Applications using Transparent Parallel Compression Tekin Bicer, Jian Yin and Gagan Agrawal Ohio State.
CMCD: Count Matrix based Code Clone Detection Yang Yuan and Yao Guo Key Laboratory of High-Confidence Software Technologies (Ministry of Education) Peking.
Thread-Level Speculation Karan Singh CS
Which Configuration Option Should I Change? Sai Zhang, Michael D. Ernst University of Washington Presented by: Kıvanç Muşlu.
Johnson Space Center SAS05_CodeSurfer_Infusion_JSC_Markovich S&MA Directorate Can CodeSurfer Increase Code Inspection Efficiency? A Research Infusion Project.
Cache-Conscious Structure Definition By Trishul M. Chilimbi, Bob Davidson, and James R. Larus Presented by Shelley Chen March 10, 2003.
SEMINAR WEI GUO. Software Visualization in the Large.
Mark Marron 1, Deepak Kapur 2, Manuel Hermenegildo 1 1 Imdea-Software (Spain) 2 University of New Mexico 1.
CCGrid 2014 Improving I/O Throughput of Scientific Applications using Transparent Parallel Compression Tekin Bicer, Jian Yin and Gagan Agrawal Ohio State.
Advanced Computer Architecture Lab University of Michigan Compiler Controlled Value Prediction with Branch Predictor Based Confidence Eric Larson Compiler.
Chapter 11: Dynamic Analysis Omar Meqdadi SE 3860 Lecture 11 Department of Computer Science and Software Engineering University of Wisconsin-Platteville.
Software Engineering Laboratory, Department of Computer Science, Graduate School of Information Science and Technology, Osaka University IWPSE 2003 Program.
Highly Scalable Distributed Dataflow Analysis Joseph L. Greathouse Advanced Computer Architecture Laboratory University of Michigan Chelsea LeBlancTodd.
Software Engineering Research Group, Graduate School of Engineering Science, Osaka University A Slicing Method for Object-Oriented Programs Using Lightweight.
Whole Program Paths James R. Larus. Outline 1. Find acyclic path fragments 2. Convert into whole-program path 3. Determine hot subpaths.
Pointer Analysis Survey. Rupesh Nasre. Aug 24, 2007.
File Systems cs550 Operating Systems David Monismith.
Using Dynamic Compilers for Software Testing Ben Breech Lori Pollock John Cavazos.
Software Engineering Department Graph-Less Dynamic Dependence-Based Dynamic Slicing Algorithms Árpád Beszédes, Tamás Gergely and Tibor Gyimóthy University.
Static Identification of Delinquent Loads V.M. Panait A. Sasturkar W.-F. Fong.
1PLDI 2000 Off-line Variable Substitution for Scaling Points-to Analysis Atanas (Nasko) Rountev PROLANGS Group Rutgers University Satish Chandra Bell Labs.
CS223: Software Engineering Lecture 21: Unit Testing Metric.
Enabling Control over Adaptive Program Transformation for Dynamically Evolving Mobile Software Validation Mike Jochen, Anteneh Anteneh, Lori Pollock University.
Tuning Threaded Code with Intel® Parallel Amplifier.
Qin Zhao1, Joon Edward Sim2, WengFai Wong1,2 1SingaporeMIT Alliance 2Department of Computer Science National University of Singapore
Embedded Real-Time Systems
Processes and threads.
Cash Me Presented By Group 8 Kartik Patel, Aaron Zhong, Wen-Kai Chen,
Static Slicing Static slice is the set of statements that COULD influence the value of a variable for ANY input. Construct static dependence graph Control.
Cork: Dynamic Memory Leak Detection with Garbage Collection
Program Slicing Baishakhi Ray University of Virginia
SUDS: An Infrastructure for Creating Bug Detection Tools
Ann Gordon-Ross and Frank Vahid*
Alan Kuhnle*, Victoria G. Crawford, and My T. Thai
Resource Allocation for Distributed Streaming Applications
Lecture 4: Instruction Set Design/Pipelining
Dynamic Binary Translators and Instrumenters
Presentation transcript:

A Comparison of Online and Dynamic Impact Analysis Algorithms Ben Breech Mike Tegtmeyer Lori Pollock University of Delaware

Impact Analysis If I change function C, what other functions could be affected (impacted)? Results useful for regression testing and maintenance A main B C D E GH F

Our Contributions New online impact analysis algorithm Experimentally compare two dynamic and two online algorithms Space Time Scalability Effectiveness

Static Impact Analysis Perform analysis on source code Call graph traversals Slicing Obtain conservative results + Accounts for all possible inputs and behaviors - Can give very large impact sets Source Code Static Analyzer Impacts

Dynamic Impact Analysis -Not conservative -- results depend on input +Give impacts related to program use Algorithms: CoverageImpact (Orso et al. FSE 03) PathImpact (Law & Rothermel, ICSE 03) Execute Instrumented Program Instrument Program Post Exec Analysis Dynamic Data Impacts Input

Dynamic: CoverageImpact Calculate Function coverage by executing program Static forward slice from changed function Intersection gives impacts A main B C D E GH F A C D F E Slice functions: {Main, A, B, C, D, E, F} Function Coverage: {Main, A, C, D, E, F, G} Find Impact of E: (Orso et al. FSE 03)

Dynamic: PathImpact Calculate function execution trace Compress using SEQUITUR ( can be done at execution ) Traverse compressed trace to find impacts Once called, function impacts all future functions Returns cause impacts A main B C D E GH F Trace: Main G r A C F C r r D r E r D r r r x main A C D E Find Impact of E: ( Law & Rothermel, ICSE 03)

Our Approach: Online Impact Analysis Dynamic Compiler Executing Program Impact Analysis Impacts Input Use dynamic compiler to perform impact analysis as program runs ( Breech et al., ICSM 2004 )

Dynamic Compilers Allows for … modifying program instructions during execution analysis during execution Executable code DynamoRIO Analysis and/or Optimization (user module) Instruction Execution Program Results (Bruening et al., CGO 2003)

Online: Optimistic Optimistic  impacts propagate only along call paths Impacts of f are functions on call stack at the same time as f + May be useful for programs with infrequent global variable use + Calculates all impacts during one execution - May miss some impacts ( Breech et al., ICSM 2004 ) A main B C D E GH F Trace: Main G r A C F C r r D r E r D r r r x (not actually stored, only for demonstration) Find Impact of E: main A CE Call stack:main GACFDEC

Online: PathImpact_AllIn1 Same heuristics as PathImpact Execution impacts all future functions Returns cause impacts Calculates all impacts during one execution Uses matrix of bits to keep track of impacts A main B C D E GH F Trace: Main G r A C F C r r D r E r D r r r x (not actually stored, only for demonstration) Find Impact of E: main A C D E

Experimental Study Gain insight into tradeoffs of each alg Used several small to medium sized applications from SPEC + ESA space 1, ,000 LOC ,015 functions Research Questions How do the algs scale in time + space? How do resulting impact sets compare? Is it useful to apply dynamic compilers?

Experimental Setup: CoverageImpact DynamoRIO P Module to Compute coverage Function Coverage CodeSurfer ( ICFG Post Execution Analyzer (Approx slicing with reachability) Impacts

Experimental Setup: PathImpact P Instrument using SUIF P’ Call Trace SEQUITUR Post Execution Analyzer Impacts execute

Experimental Setup: Optimistic P DynamoRIO Module for Optimistic Impacts

Experimental Setup: PathImpact_AllIn1 Created 2 versions to examine usefulness of using dynamic compilers P’ Execute + Pipe Trace Analyze During Exec. Impacts P DynamoRIO Module for PathImpact_AllIn1 P Instrument using SUIF

Results: Timing CoverageImpact Least run time overhead (~ 3 minutes max) Fast post execution analysis (~ few minutes) PathImpact Very high overhead (> 2 hours, in some cases) Optimistic Medium overhead (usually ~ minutes) > 2 hours for heavily recursive program PathImpact_AllIn1 Version implemented with dynamic compiler Low to medium overhead (15 minutes max) Ran successfully on all programs Overhead of pipe version too high in some cases

Results: Space CoverageImpact ICFG took ~100K to ~8 MB PathImpact Uncompressed trace ~2KB to > 15GB Compressed trace ~400B to 1.2MB Could not be completed for all traces Optimistic, PathImpact_AllIn1 Negligible storage required

Results: Impact Sets Examined 008.espresso results Largest app that all algs ran (186 exec funcs) PathImpact and PathImpact_AllIn1 gave same results CoverageImpact reported ~30 more functions per impact set than PathImpact for 172 funcs CoverageImpact reported smaller sets for 10 functions -- one function called through function pointer Optimistic reported much smaller sets (but may miss impacts)

Qualitative Summary Coverage Impact Path Impact OptimisticPI_AllIn1 Infrastructure Instr. code ICFG Instr. code Compress Dyn. Comp Static Analysis ICFG slicing (none) Analysis Timelowhighmed to highmed Spatial Overhead low to med low (if compress) low

Summary Presented new online impact analysis algorithm (PathImpact_AllIn1) Experimentally compared online against dynamic algs PathImpact_Allin1 Scaled better than PathImpact Gave better impact sets than CoverageImpact Optimistic Scaled well (not as good as PathImpact_Allin1) Gave different impact sets (may be useful in OOP)

Future Work Improve precision of online impact analysis Other uses of dynamic compilers for software engineering