Continuous integration and Minimization of dependencies. Tijs van der Storm



Similar documents
Removing False Code Dependencies to Speedup Software Build Processes

Continuous Integration (CI)

Backtracking Incremental Continuous Integration

Software Construction

Configuration Management. Xin Feng

RTI Monitoring Library Getting Started Guide

How To Write Portable Programs In C

How To Port A Program To Dynamic C (C) (C-Based) (Program) (For A Non Portable Program) (Un Portable) (Permanent) (Non Portable) C-Based (Programs) (Powerpoint)

Cloud Utilization for Online Price Intelligence

Software Configuration Management. Context. Learning Objectives

SIGMOD RWE Review Towards Proximity Pattern Mining in Large Graphs

C++FA 5.1 PRACTICE MID-TERM EXAM

How to Add a New System Call for Minix 3

Getting Started with WebSphere Application Server v8.5 Version to Version Migrations

Steady as She Goes. How the VIVO developers work to deliver a stable platform

Continuous Integration: Improving Software Quality and Reducing Risk. Preetam Palwe Aftek Limited

Continuous Integration and Automatic Testing for the FLUKA release using Jenkins (and Docker)

Continuous Release and Upgrade of Component-Based Software

Software Configuration Management Best Practices for Continuous Integration

Tool Support for Inspecting the Code Quality of HPC Applications

Using Different Partition Views to Split Up A Large Group Of System

GEDAE TM - A Graphical Programming and Autocode Generation Tool for Signal Processor Applications

Coverity Services. World-class professional services, technical support and training from the Coverity development testing experts

Chapter 7. Using Hadoop Cluster and MapReduce

Using Clang to Visualize Large Codebases. Nathan Hawes and Ben Barham Oracle Labs Australia October 2014

Software Metrics in Static Program Analysis

This presentation provides an overview of the architecture of the IBM Workload Deployer product.

The Nix Build Farm: A Declarative Approach to Continuous Integration

Atomate Development Process. Quick Guide

CS 241 Data Organization Coding Standards

The Benefits of Utilizing a Repository Manager

Contents. Introduction... 1

Non-Stop for Apache HBase: Active-active region server clusters TECHNICAL BRIEF

JavaFX Session Agenda

Continuous Integration. CSC 440: Software Engineering Slide #1

SiRiUS: Securing Remote Untrusted Storage

Embedded Systems. Review of ANSI C Topics. A Review of ANSI C and Considerations for Embedded C Programming. Basic features of C

Part I. OpenCIT Server

Software Engineering

Flexible Engineering Process Automation Process: Continuous Integration & Test

Recent Advances in Periscope for Performance Analysis and Tuning

Bootstrapping Software Distributions

Virtually Secure. a journey from analysis to remote root 0day on an industry leading SSL-VPN appliance

Continuous Integration

The Real Challenges of Configuration Management

Software configuration management

Building and Using a Cross Development Tool Chain

On-Demand Supercomputing Multiplies the Possibilities

Retour d expérience : portage d une application haute-performance vers un langage de haut niveau

Solving the Software Quality Challenges of Agile Development

Designing and Implementing Scalable Applications with Memcached and MySQL

Configuring Firewalls An XML-based Approach to Modelling and Implementing Firewall Configurations

COMPUTER ORGANIZATION ARCHITECTURES FOR EMBEDDED COMPUTING

SPAMMING BOTNETS: SIGNATURES AND CHARACTERISTICS

Distributed Network Management Using SNMP, Java, WWW and CORBA

Oracle Enterprise Manager

How To Run Paragon Boot Camp Backup On A Mac Computer (Windows) On A Pc Or Mac (Windows 2) On An Ntos 2 (Windows 3) On Your Computer Or Ipad (Windows 1) On Pc Or Ipa

Minix Mini Unix (Minix) basically, a UNIX - compatible operating system. Minix is small in size, with microkernel-based design. Minix has been kept

Continuous Integration/Testing and why you should assume every change breaks your code

Application Release Automation (ARA) Vs. Continuous Delivery

Why continuous delivery needs devops, and why devops needs infrastructure-as-code. Sriram 25-Oct-2012

The Value of Adopting Agile & CI for OBIEE

Managed File Transfer

Software Continuous Integration & Delivery

An Overview of Java. overview-1

Analysis Programming

Viewing and Troubleshooting Perfmon Logs

Solution Guide Parallels Virtualization for Linux

The Clean programming language. Group 25, Jingui Li, Daren Tuzi

ResPAK Internet Module

Fast and Easy Delivery of Data Mining Insights to Reporting Systems

Delivery. Continuous. Jez Humble and David Farley. AAddison-Wesley. Upper Saddle River, NJ Boston Indianapolis San Francisco

Embedded Operating Systems in a Point of Sale Environment. White Paper

Automate Your BI Administration to Save Millions with Command Manager and System Manager

v4: How to create a BartPE Rescue CD for Macrium Reflect

A Sumo Logic White Paper. Harnessing Continuous Intelligence to Enable the Modern DevOps Team

Security for Changing Software and Systems

How To Do Continuous Integration

Checking IE Settings, and Basic System Requirements for QuestionPoint

Code Change Impact Analysis for Testing Configurable Software Systems. Mithun Acharya ABB Corporate Research Raleigh NC USA

Appendix A Core Concepts in SQL Server High Availability and Replication

BACKING UP A DATABASE

1735 East Bayshore Road, Suite 6B, Redwood City, CA

Applications to Computational Financial and GPU Computing. May 16th. Dr. Daniel Egloff

Implementing Continuous Integration Testing Prepared by:

Jonathan Worthington Scarborough Linux User Group

Statel Robot Service Help Eurostat

Web Mining Patterns Discovery and Analysis Using Custom-Built Apriori Algorithm

Visualizing a Neo4j Graph Database with KeyLines

Red Hat Network Satellite Management and automation of your Red Hat Enterprise Linux environment

Red Hat Satellite Management and automation of your Red Hat Enterprise Linux environment

Setting up PostgreSQL

How to Ingest Data into Google BigQuery using Talend for Big Data. A Technical Solution Paper from Saama Technologies, Inc.

FAWN - a Fast Array of Wimpy Nodes

Continuous Integration Using Cruise Control

A Novel Cloud Based Elastic Framework for Big Data Preprocessing

EQUIPMENT OVERVIEW... 4 SETTING UP CALL MANAGER...5

Problems and Measures Regarding Waste 1 Management and 3R Era of public health improvement Situation subsequent to the Meiji Restoration

Transcription:

Continuous integration and Minimization of dependencies Tijs van der Storm

Overview Continuous integration Background The Sisyphus system Benefits Minimizing compilation dependencies Build architecture of C programs Automatic dependency reduction Qualitative evaluation

Continuous integration

A Deliver Icon

Updating component based systems Example: ASF+SDF Meta Environment Have to maintain knowledge which versions of components work together which versions of components the user has Lowest level of it works : it builds Continuous integration continuous release

Continuous Integration (CI) Extreme version of daily builds Frequent checkins Frequent builds Testing (unit, integration, acceptance,...) Key features Unified build script for automation Centralized source location (version control)

Sisyphus Component based CI Language & platform agnostic High configurability Accurate version tracking Update generation Work in progress

Sisyphus architecture Sun Builder changes Sisyphus Server results Knowledge Base notify Builder... Builder Linux Windows?

Selective recompilation Iteration n Iteration n+1 Iteration n+2 toolbus i toolbus i+1 toolbus i+1 toolbuslib toolbuslib aterm j aterm j+1

Flexible updates Iteration n Iteration n+1 Iteration n+2 toolbus i toolbus i+1 toolbus i+1 toolbuslib toolbuslib aterm j aterm j+1

Benefits of continuous integration Integration bugs detected early the effort of integration is exponentially proportional to the amount of time between integrations [Fowler] Frequent releases always a working executable available The more often the better Fast builds are a good thing

Minimizing dependencies

Architecture influences build process Currently: dependencies between packages components are built from scratch Possible: dependencies between files dictates single language, e.g., C Optimization opportunities Reduce number of files read from disk Increase incrementality

Some facts... Some facts about a large industrial C program: 80 to 90% of unused but included program units on average, each file includes 60% of headers multiple times average size program file: 37Kb average size preprocessed image: 1.96 Mb Courtesy of Yu et. al.

Not my work: Precompilation Removing false code dependencies to speedup software build processes [Yu et. al. CASCON03] Build optimization in three steps: extract fine grained dependency graph remove unused program entities from it generate restructured headers Is just in time and lazy

Program unit dependency graph typedef int NUMBER; struct node; typedef struct node { float value; struct node* next; list } *list; struct A { union { NUMBER value; node } u; }; extern int printf(char *format,...); enum { Satisfied, Denied }; int main(void) { list l, n; for (n = l; n; n = n->next) printf( %f, n->value); return (int)satisfied; } main printf Satisfied A NUMBER

Relational formalization Program units Unit = Decl Def RequirementsOf Unit Decl (= PUDG) UsersOf = RequirementsOf 1 Files File = Hfile Cfile UnitsOf File Unit FilesOf = UnitsOf 1

Reorganizing includes (example) 1.c 2.c foo, bar bar 1.c 2.c bar.h foo bar bar foo.h bar.h foo.h

Reorganizing includes Determine the definitions of a C file c Cfile U = UnitsOf[c] Determine the required declarations R = RequirementsOf + [U] Determine the header files that contain them I = FilesOf[R] Let c include I

Restructuring headers (example) 1.c 2.c 3.c 1.c 2.c 3.c bar foo, bar foo bar bar foo foo foo_bar.h bar.h foo.h

Restructuring headers Start with an initial partitioning: put each declaration in its own header H = { {d} d Decl } Do a fixpoint computation over H: if any A, B in H with UsersOf + [A] = UsersOf + [B] merge declarations: H = H {A B} \ {A, B} Determine file dependencies as before

Evaluation Reported performance improvements: build size fresh build time incremental build time Nice features: independent of compiler orthogonal w.r.t. make j, distcc, ccache Useful technique to scale continuous integration

Summary Continuous integration system Sisyphus distributed architecture selective recompilation Dependency minimization build optimization header restructuring

Questions?

References Yu et. al., Reducing build time through precompilations for evolving large software, Tech. rep. CSRG 504, Univ. of Toronto, 2005. Yu et. al., Removing false code dependencies to speedup software build processes, CASCON, 2003. Dayani Fard et. al., Improving the build architecture of legacy C/C++ software systems, submitted to FASE, 2005.