Runtime Techniques for Efficient and Reliable Program Execution Harry Xu CS 295 Winter 2012.

Slides:



Advertisements
Similar presentations
Dataflow Analysis for Datarace-Free Programs (ESOP 11) Arnab De Joint work with Deepak DSouza and Rupesh Nasre Indian Institute of Science, Bangalore.
Advertisements

Program Verification using Probabilistic Techniques Sumit Gulwani Microsoft Research Invited Talk: VSTTE Workshop August 2006 Joint work with George Necula.
Program Analysis using Random Interpretation Sumit Gulwani UC-Berkeley March 2005.
Case Studies M.Sc. in Applied Statistics Dr. Órlaith Burke Michaelmas Term 2012.
Time management time
Uncovering Performance Problems in Java Applications with Reference Propagation Profiling PRESTO: Program Analyses and Software Tools Research Group, Ohio.
An Abstract Interpretation Framework for Refactoring P. Cousot, NYU, ENS, CNRS, INRIA R. Cousot, ENS, CNRS, INRIA F. Logozzo, M. Barnett, Microsoft Research.
Research skills. OUTLINE Mission and Vision What is Research? Ten Steps for Good Research Resources of Research Types of research Skills (Top_5 Skills)
Executional Architecture
Kai H. Chang COMP 6710 Course NotesSlide ES- 1 Auburn University Computer Science and Software Engineering Course Notes : Examining the Specification Computer.
A Survey of Runtime Verification Jonathan Amir 2004.
Addressing the Trust Asymmetry Problem In Grid Computing with Encrypted Computation Peter A. Dinda Prescience Lab Department of Computer Science Northwestern.
HARDWARE SOFTWARE PARTITIONING AND CO-DESIGN PRINCIPLES MADHUMITA RAMESH BABU SUDHI PROCH 1/37.
Automatic Memory Management Noam Rinetzky Schreiber 123A /seminar/seminar1415a.html.
Standards Alignment A study of alignment between state standards and the ACM K-12 Curriculum.
Compilation 2011 Static Analysis Johnni Winther Michael I. Schwartzbach Aarhus University.
When Role Models Have Flaws: Static Validation of Enterprise Security Policies Marco Pistoia IBM T. J. Watson Research Center Hawthorne, New York
Pointer Analysis – Part I Mayur Naik Intel Research, Berkeley CS294 Lecture March 17, 2009.
Finding bugs: Analysis Techniques & Tools Comparison of Program Analysis Techniques CS161 Computer Security Cho, Chia Yuan.
Counting the bits Analysis of Algorithms Will it run on a larger problem? When will it fail?
Background for “KISS: Keep It Simple and Sequential” cs264 Ras Bodik spring 2005.
CSE , Autumn 2011 Michael Bond.  Name  Program & year  Where are you coming from?  Research interests  Or what’s something you find interesting?
CORK: DYNAMIC MEMORY LEAK DETECTION FOR GARBAGE- COLLECTED LANGUAGES A TRADEOFF BETWEEN EFFICIENCY AND ACCURATE, USEFUL RESULTS.
Program analysis Mooly Sagiv html://
Program analysis Mooly Sagiv html://
Previous finals up on the web page use them as practice problems look at them early.
Pointer and Shape Analysis Seminar Mooly Sagiv Schriber 317 Office Hours Thursday
Overview of program analysis Mooly Sagiv html://
Detecting Inefficiently-Used Containers to Avoid Bloat Guoqing Xu and Atanas Rountev Department of Computer Science and Engineering Ohio State University.
Overview of program analysis Mooly Sagiv html://
Software Verification and Validation (V&V) By Roger U. Fujii Presented by Donovan Faustino.
CS527: (Advanced) Topics in Software Engineering Overview of Software Quality Assurance Tao Xie ©D. Marinov, T. Xie.
Computational Thinking The VT Community web site:
University of Palestine software engineering department Testing of Software Systems Fundamentals of testing instructor: Tasneem Darwish.
Control Flow Resolution in Dynamic Language Author: Štěpán Šindelář Supervisor: Filip Zavoral, Ph.D.
Introduction Algorithms and Conventions The design and analysis of algorithms is the core subject matter of Computer Science. Given a problem, we want.
Programming Models & Runtime Systems Breakout Report MICS PI Meeting, June 27, 2002.
Guiding Principles. Goals First we must agree on the goals. Several (non-exclusive) choices – Want every CS major to be educated in performance including.
Type Systems CS Definitions Program analysis Discovering facts about programs. Dynamic analysis Program analysis by using program executions.
DEBUGGING. BUG A software bug is an error, flaw, failure, or fault in a computer program or system that causes it to produce an incorrect or unexpected.
Major objective of this course is: Design and analysis of modern algorithms Different variants Accuracy Efficiency Comparing efficiencies Motivation thinking.
C++ Programming Language Lecture 2 Problem Analysis and Solution Representation By Ghada Al-Mashaqbeh The Hashemite University Computer Engineering Department.
CS527 Topics in Software Engineering (Software Testing and Analysis) Darko Marinov September 9, 2010.
Object-Oriented Analysis and Design Fall 2009.
1 Optimizing compiler tools and building blocks project Alexander Drozdov, PhD Sergey Novikov, PhD.
An Undergraduate Course on Software Bug Detection Tools and Techniques Eric Larson Seattle University March 3, 2006.
CS 127 Introduction to Computer Science. What is a computer?  “A machine that stores and manipulates information under the control of a changeable program”
CS527 Topics in Software Engineering (Software Testing and Analysis) Darko Marinov August 30, 2011.
Detecting Inefficiently-Used Containers to Avoid Bloat Guoqing Xu and Atanas Rountev Department of Computer Science and Engineering Ohio State University.
Random Interpretation Sumit Gulwani UC-Berkeley. 1 Program Analysis Applications in all aspects of software development, e.g. Program correctness Compiler.
The Hashemite University Computer Engineering Department
Introduction CSE 1310 – Introduction to Computers and Programming Vassilis Athitsos University of Texas at Arlington 1.
Grigore Rosu Founder, President and CEO Professor of Computer Science, University of Illinois
Introduction to Software Analysis CS Why Take This Course? Learn methods to improve software quality – reliability, security, performance, etc.
Analysis of Algorithms: Math Review Richard Kelley, Lecture 2.
Welcome! Simone Campanoni
CS 5150 Software Engineering Lecture 21 Reliability 2.
The PLA Model: On the Combination of Product-Line Analyses 강태준.
Types for Programs and Proofs
CSC 591/791 Reliable Software Systems
Seminar in automatic tools for analyzing programs with dynamic memory
Harry Xu University of California, Irvine & Microsoft Research
Zhenbo XU, Jian ZHANG, Zhongxing XU
runtime verification Brief Overview Grigore Rosu
State your reasons or how to keep proofs while optimizing code
Foundations of Computer Science
Objective of This Course
String Analysis for JavaScript Programs Using JSAI
Ras Bodik WF 11-12:30 slides adapted from Mooly Sagiv
CS 239 – Big Data Systems Fall 2018
Presentation transcript:

Runtime Techniques for Efficient and Reliable Program Execution Harry Xu CS 295 Winter 2012

Who Am I Recently got my Ph.D. (in 08/11) Interested in (static and dynamic) program analysis – Theoretical foundations (mathematical models) – Applications (e.g., compiler, performance tuning, verification, security, distributed computing, etc.) Most recent interest--- software bloat analysis

Who Are You Your name Advisor Research interests What do you expect from the class

Program Analysis Dynamic analysis v.s. static analysis Static analysisDynamic analysis Analyze static codeAnalyze running program Find problems in any executionFind problems in some real execution Sound: no false negatives*Unsound: false negatives Imprecise: false positivesPrecise: often no false positives Doesnt slow running programSlows executing program

Analysis Dimensions Analysis scope – Intraprocedural– focusing on each individual function – Interprocedural– considering calling structures Context sensitivity – Context-sensitive– distinguishing different callers when analyzing each function – Context-insensitive– get a unified solution

Concerns Precision – Requires higher context-sensitivity, finer-grained abstractions, etc. Scalability – The opposite Find the right balance Combine static and dynamic analyses

Application Domains Static analysis – Static compiler (e.g., type system and optimizations) – Verification tools – prove a program is bug-free Dynamic analysis – (Dynamic) optimizing compiler (e.g., providing feedback) – Testing – find bugs in specific program runs – Performance tuning

This Class Focus on dynamic analysis Foundations – Various profiling techniques – Dynamic slicing – Calling context encoding Applications – Memory leak detection – Software bloat detection – Finding bugs – Providing feedback in a dynamic compiler

This Class A research seminar Emphasize both – Fundamental technology (i.e., science) – Practical problems (i.e., engineering) CS Research – Solving engineering problems with scientific solutions

Foundations I – Profiling A run-time technique that gathers execution information – E.g., total # objects created during the execution How--- via program instrumentation void main(String[] s){ A a = new A(…); for(…){ B b = new B(…); } long totalObjs = 0; totalObjs ++; print(totalObjs);

Foundations I – Profiling Kinds – Path profiling (Week 1) – Calling context profiling (Week 4) – Dependence profiling (Week 5)

Foundations II – Dynamic Slicing Record all memory accesses and their dependence relationships Applications – Automated debugging – Performance analysis void main(String[] s){ a.f = …; … c = b.f; } 0x

Foundations III – Context Profiling Record calling contexts for method invocations void m(…){ bar(new A()); //call 1 } void n(…){ bar (new B()); //call 2 } void bar(A a){ a.f = …; } mn bar call 1 call 2

Foundations III – Context Profiling Record calling contexts for method invocations Applications – Context-sensitive dynamic analysis – Interprocedural compiler optimization void m(…){ bar(new A()); //call 1 } void n(…){ bar (new B()); //call 2 } void bar(A a){ a.f = …; } mn bar call 1call 2

Application I – Memory Leak Detection C/C++ memory leaks – a = malloc (…), but no free(a) – Can be detected by both static and dynamic analyses Memory leaks in managed programs (week 3 and 7) – Caused by unnecessary references – It is undecidable to determine object liveness – Use dynamic analysis with various heuristics

Application II – Software Bloat Analysis Inefficient run-time work and resource usage to achieve simple tasks Surprisingly common – Supporting thousands of users (millions are expected) Consequences for scalability, power usage, and performance Week 3 and 8

Application III – Bug Detection Use dynamic analysis to find functional bugs (Week 7 and 8) We are not going to cover – Concurrency bug detection – Systematic testing One security paper (DieHarder)

Application IV – Optimizing Compiler Use dynamic analysis to provide feedback to direct optimizations (Week 10) Dynamic analyses exist in almost all modern dynamic compilers

Grading Policy I Paper critiques (15%) – Problem definition – Key insights/contributions – Weakness/flaws – Opportunities for future work – Your problems in understanding the paper Due 6pm the day before the class Presenters are exempt from writing critiques for papers they are presenting

Grading Policy II Paper presentations (30%) – Two presentations on similar topics in one class – 30 mins for each Important presentation skills – Focus on high-level ideas – Illustrate basic ideas using concrete examples and pictures – Do not copy algorithms/formulae/complex examples from the paper – Include interesting/non-trivial questions you want discuss in the class Register for papers before Friday Jan 13

Grading Policy III In-class discussion (15%) – Assume your audience has read the paper – Try to say non-obvious, interesting things – Depth is more important than breadth

Grading Policy IV Projects (30%) – Either by yourself or with another student – Try to work on an ambitious project that may not work eventually, rather than a simple project that is guaranteed to work – It is a good idea to make it your own research project, rather than think of it as something to fulfill the class requirement – Lets publish them!!!

Important Notice Paper critiques for the first two papers are due 6pm Tuesday (1/10) Paper selection due on Friday (1/13) Any problem with the current class schedule?