SlideShare a Scribd company logo
1 of 79
Download to read offline
Identifying Hotspots in the
PostgreSQL Build Processes

Shane
McIntosh

Bram
Adams

Meiyappan
Nagappan

Ahmed E.
Hassan

@shane_mcintosh
shanemcintosh@acm.org
What is a build system?
Source
code

!2
What is a build system?
Source
code

Deliverable

!2
Build systems describe how sources are
translated into deliverables
.c

.o

.cc

.o

.exe

.tex

.dvi

.pdf

.a
.deb

!3
All builds are equal…
(1)
Think

(2)
Edit
The
developer’s
work cycle

(4)
Test

(3)
Build
!4
…But some builds are more
equal than others

“

http://xkcd.com/303/

Why is the gtk build so abysmally slow?
This hinders our ability to run gtk bots
and keep the gtk build green. :(

”

!5
Refactoring can improve
build performance
deliverable1
del1.o
del1.c

deliverable2
library.a

util1.o

util2.o

util1.c

del2.o
del2.c

util2.c

!6
Refactoring can improve
build performance
deliverable1
del1.o
del1.c

deliverable2
library.a

util1.o

util2.o

util1.c

del2.o
del2.c

util2.c

!6
Refactoring can improve
build performance
deliverable1
del1.o
del1.c

deliverable2
library.a

util1.o

util2.o

util1.c

del2.o
del2.c

util2.c

!6
Refactoring can improve
build performance
deliverable1
del1.o
del1.c

deliverable2
library.a

util1.o

util2.o

util1.c

del2.o
del2.c

util2.c

!6
Refactoring can improve
build performance
deliverable1
del1.o
del1.c

deliverable2
library.a

util1.o

util2.o

util1.c

del2.o
del2.c

util2.c

!6
Refactoring can improve
build performance
deliverable1
deliverable2
Before refactoring:!
4 commands! del2.o
del1.o
library.a
triggered
del1.c
del2.c
util1.o
util2.o
util1.c

util2.c

!6
Refactoring can improve
build performance
deliverable1
del1.o
del1.c

deliverable2
library.a

util1.o

util2.o

util1.c

del2.o
del2.c

util2.c

!6
Refactoring can improve
build performance
deliverable1

deliverable2

del1.o

util1.o

util2.o

del2.o

del1.c

util1.c

util2.c

del2.c

!7
Refactoring can improve
build performance
deliverable1

deliverable2

del1.o

util1.o

util2.o

del2.o

del1.c

util1.c

util2.c

del2.c

!7
Refactoring can improve
build performance
deliverable1

deliverable2

del1.o

util1.o

util2.o

del2.o

del1.c

util1.c

util2.c

del2.c

!7
Refactoring can improve
build performance
deliverable1

deliverable2

del1.o

util1.o

util2.o

del2.o

del1.c

util1.c

util2.c

del2.c

!7
Refactoring can improve
build performance
deliverable1
deliverable2
After refactoring:!
2 commands! del2.o
del1.o
util1.o
util2.o
triggered
del1.c
del2.c
util1.c
util2.c

!7
…But where should we focus
refactoring effort?
Files that rebuild
the slowest?

!8
(1)
Dependency
Graph
Construction

Dep. Graph

(2)
Dependency
Graph
Analysis

Graph
analysis
results

Version
Control
System

(3)
Build
Hotspot
Detection

File Churn

An approach to detect slowly
rebuilding files

B

Qua

!9
MAKAO tool extracts build
dependency graphs
(1)
Dependency
Graph
Construction
(2)
Dependency
Graph
Analysis

Design recovery and maintenance of build systems
B. Adams, Herman Tromp, Kris De Schutter, Wolfgang De Meuter	

[ICSM 2007]
!10
The cost of traversing an edge is
derived by timing its build command
(1)
Dependency
Graph
Construction
(2)
Dependency
Graph
Analysis

Median of 10
repetitions
!11
Open source case studies!
!
!
!

!12
Build dependency graph
properties
# Nodes
# Edges

38,102

2,752,225

0

750,000

1,500,000

2,250,000

3,000,000

3,375
121,710

5,131
60,170

0

35,000

70,000

105,000

140,000

!13
100
50

Build Time (s)

8
6
4

0

2
0

Build Time (s)

10

12

150

Incremental build
performance

0

100

200

300

400

500

600

0

File ID

100

200
File ID

.c files

.h files
!14

300

400
150
50

100

Build Time (s)

1.5
1.0
0.5

0

0.0

Build Time (s)

2.0

Incremental build
performance

0

200

400

600

800

1000

File ID

0

100

200

300
File ID

.c files

.h files
!15

400

500

600
6000
0

2000

4000

Build Time (s)

100
50
0

Build Time (s)

150

8000

Incremental build
performance

0

2000

4000

6000

8000 10000

0

File ID

2000

4000

6000
File ID

.c files

.h files
!16

8000

10000
100
50
0

Build Time (s)

150

So, refactoring
should target the slow files!

0

100

200

300
File ID

!17

400

500

600
100
50
0

Build Time (s)

150

So, refactoring
should target the slow files!

0

100

200

300
File ID

!17

400

500

600
100
50
0

Build Time (s)

150

So, refactoring
should target the slow files!

0

100

200

300
File ID

!17

400

500

600
100
50
0

Build Time (s)

150

So, refactoring
should target the slow files!

0

100

200

300
File ID

!17

400

500

600
Let’s see what
developers think!
> Please answer the following questions for each
source file listed above:!
> (1) Is this source code file a performance
bottleneck? Y/N!
!

For all of them no...

!18
Let’s see what
developers think!
> Please answer the following questions for each
source file listed above:!
> (1) Is this source code file a performance
bottleneck? Y/N!
!

For all of them no...!
!

> (2) Why do you believe this file is or is not a
performance bottleneck?!
!

...because none of these headers change often.
!19
…But where should we focus
refactoring effort?
Files that rebuild
the slowest?

!20
…But where should we focus
refactoring effort?
Files that rebuild
the slowest?

…but they may
only rarely change!
!20
…But where should we focus
refactoring effort?
Files that rebuild
the slowest?

Files that change
the most often?

…but they may
only rarely change!
!20
Mining frequently changing files
from version control
Terminal

$ git clone …
…
$ git checkout <some_tag>
…
$ git log --oneline <some_file>

!21
Mining frequently changing files
from version control

But many of these files
$ git clone …
…
already build quickly!
Terminal

$ git checkout <some_tag>
…
$ git log --oneline <some_file>

!21
…But where should we focus
refactoring effort?
Files that rebuild
the slowest?

Files that change
the most often?

…but they may
only rarely change!
!22
…But where should we focus
refactoring effort?
Files that rebuild
the slowest?

Files that change
the most often?

…but they may
only rarely change!

…but they may
already be optimal!
!22
…But where should we focus
refactoring effort?
Files that rebuild
the slowest?

Files that change
the most:often?
ots

…but they may
only rarely change!

…but they may
already be optimal!

otsp
h
ft e n
uild
ge o
on b
han
cus
nd c
Fo
ly a
slow
build
at re
es th
il

F

!22
(1)
Dependency
Graph
Construction

Dep. Graph

(2)
Dependency
Graph
Analysis

Graph
analysis
results

Version
Control
System

(3)
Build
Hotspot
Detection

File Churn

An approach to detect slowly
rebuilding files

B

Qua

!23
(1)
Dependency
Graph
Construction

Dep. Graph

(2)
Dependency
Graph
Analysis

Graph
analysis
results

Version
Control
System

(3)
Build
Hotspot
Detection

File Churn

Hotspot detection approach

Build Activity

Quadrant Plot

!24
Quadrant plots highlight build
hotspots
Number of changes

(1)
Dependency
Graph
Construction
(2)
Dependency
Graph
Analysis

(3)
Build
Hotspot
Detection

Rebuild cost
!25
Quadrant plots highlight build
hotspots
Number of changes

(1)
Dependency
Graph
Construction
(2)
Dependency
Graph
Analysis

(3)
Build
Hotspot
Detection

Rebuild cost
!25
Quadrant plots highlight build
hotspots
Number of changes

(1)
Dependency
Graph
Construction
(2)
Dependency
Graph
Analysis

(3)
Build
Hotspot
Detection

Rebuild cost
!25
Number of changes

Quadrant plots highlight build
hotspots
factor
Re
e first!
thes

(1)
Dependency
Graph
Construction
(2)
Dependency
Graph
Analysis

(3)
Build
Hotspot
Detection

Rebuild cost
!25
Open source case studies!
Thresholds
!

Rebuild cost
90 seconds

Number of changes
!
Median
!

!26
1.00

●
●
●

●
● ●
●
●

Number of changes
(Normalized)
Normalized File Churn

●
●

●

●
●

0.25

●
●
●
●
●
●
●
●

●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●

●●
●
●
●
●
●
●
●
●
●
●●
●
●
●
●
●
●

●

●
●
●
●
●
●
●

●

●

●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
● ● ●
●
●
●
●
●
●●
●
●
●
●
● ●
●
●
●
●● ● ●
●
●
●
●
●● ● ●
●
●
●
●
●
● ●
●
●● ●
● ●
●
●
●
●
●
● ●● ●
● ●
●
●● ●

●
●

●

●
●

●

●
●
●

●

●

●
●
●
●
●
●
●

●
●

●

●

●

●
●
●
●
●
●
●
●
●

●
●

65 hotspots!
(7% of
source files)
●

●

●
●

0.75

0.50

●
●
●
●
●
●●
●
●
●
●

●

●

●

●

●

●
●
●
●

●
●
●

●

●
●
●
●
●●
●
●
● ●
●
●
●
●

●

●
●●
●
●
●●● ●
●
●
●●
●

●
●●

●●
●
●
●

● ● ●
●●

●

● ●● ●
●

●

●

●

●

●
●
●

●
●
●

●

●

●●
●
●

● ●●
●
●

●
●
●

● ●●
●

●
●
●

●
●

●
●

●● ●
●
● ●
●

●●
●
●

●●
●

●
●
●

●● ● ● ●
●● ●
●
●

●
●

●●
●●
●
●

●
●
●
●

●● ● ●
●● ●
●
●

●
●
●

● ●● ●
●
● ● ●
●

●●
●
●
●

●●●●●
●● ●
●
●
●

●
●

●
●
●
●

●● ● ●
●● ●
●
●
●

●

0

●●
●●
●

●

glib/glib.h
glib/glib-object.h

●
●

●

●●
●●
●
●

●

●
●

●
●
●

●
●

●

●

Main culprits

●

●●
●●

●
●

●
●

●

●●

●

●

●

●

● ●
●

●●
●
●
●

●●
● ●

●

● ●●
● ●
●
●

●

●●●
●●
●
●
●

●

●
●
●
●

50

●

● ●●

●

Build Time

●

●
●

● ●

100

150

Rebuild cost
(seconds)
!27
1.00

●

●

●

●
●
●
●

Number of changes
(Normalized)
Normalized File Churn

●

0.75

0.50

0.25

●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●● ●
●
●
●
●
●
●
●
●
●
● ● ●●
●
●
●● ●
●●
●
●
●
●
●● ● ●
● ●
●● ●
●
●
●
●
●●
●●
●● ●
●●
●
●
●
●
●●
●
●
●
●
●
●
●●
●
●
●
●● ●
●
● ● ● ● ● ●● ●
● ●●●
●
●
●● ● ●● ● ●
●● ● ●
● ●
●
●●●● ●● ●
●●●●
●●
●●
●●
● ●
●●● ●●● ●
●●● ●
●●
●
●
●
●●●● ●● ● ●
●●●● ●
●● ●
●● ●
●●
●

●
●

●●●●●●●● ●
●●● ●●●●
●●● ● ●
● ●● ●
●●
●●

●

732 hotspots!
(8% of source files)

●

●

●

●

●

●
●

●

●

●

●

●

●

●

●

●
●

●

●

●

●

●

●
●

●

●●
●
●
●●
● ●
●
●●
●
●●
●●
●
●● ●

● ●
●

●

●
●

●

●●

● ●

● ●●
● ●
●

●
●
●

● ●
● ●
●
●

●
●

●
●
●

●●

●● ●
●●
●

●

●

●

●
●●
●

●

●
●

●

●
● ●

●

●

●

●

●

●●
● ●
●

●

●

●

●

● ●

● ●●
●

●● ● ●●● ● ●
●● ●● ● ●
●● ●●
●●
●●
●

● ●

●

●
●

●
●

●

●

●

●

●●
●
●

●● ● ●● ●
●● ● ●
●● ●
●● ●
●

●
●

●
●
●
●
●
● ●●
●
●
●

●
●
●

●●●●●● ● ● ● ●
●● ● ●● ●
●
●
● ●●
●

●

●
●

●
●
●

Main culprits
tmtm

●
●
●
●

●

● ●

●● ●
●

●
●

●
●

●
●

●

●
●

●

●
●
●

●

●

●

●●
●

●

●

●

●

●●
●
●●
● ●
●
● ●
●
● ●●
●
● ● ● ●
● ●
● ●● ●
● ●
●
●
●
●● ● ●
●
●● ● ●
●
●●
●
●●● ● ●
●●
●●
●●
●
● ●● ●
●
●
●●● ● ● ●
●● ● ●
●● ●
●
●

●
●
●

●
●

●

●
●

● ● ●

●●● ● ●● ● ●
●● ● ● ●
●●
●●
●
●
●

●
●
●

●

●
●

●

●

●

●
●
●

●

●

●

●

●

●

● ●●
●

●
●

●

●

●

●●

●●●● ●● ● ●
●●
●●
●●
●
●
●

●
●
●
●

●

● ●●
●

●
●

●

●

●●●●
●●
● ●
●

●●●●●●●●●● ● ●
●●● ● ●●●● ● ●
● ●●● ●●●●
● ●● ● ●
●●
●
●●● ● ● ●●
●●● ● ● ●
●●● ●
●●●
●
●

●
●

● ●●
● ●
●
●
●
●

●●●●●●●● ● ● ●
●●●●●● ●● ●
●●● ●● ●●
●●●● ● ●
●●● ●
●●

●●● ●●●
● ●● ● ●●
● ●●
●●
● ●
●

●

●

●

●

High hotspot!
concentration
qtbase/…/corelib
qtxmlpatterns

●●●●●● ● ●
●●●● ●
●●●●
● ●●●
●●●
●

0

2000

4000

Build Time (s)

6000

8000

Rebuild cost
(seconds)
!28
1.00

●

●

●
●
●
●●

●

●
●

Number of changes
(Normalized)
Normalized File Churn

●
●
●
●
●
●

0.75

0.50

0.25

●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●● ● ●
●
●
●
● ●●
●
●
●
●
●
●
●
●
●
●
● ●
●
●
●
●
●●
●
●
●
●
●
●
●
●
●
● ●
●
●
●
●
●
●
●
●
● ●
●
●
●
●
●
●
●
●
●
●●
●
●
●●●
●
●●
●●
●
●
●
●
●
●
●
●
● ●● ●
●
●
● ● ●
●
●
●
●
●
●
●
●●
●
●
●
●
●●
●
●
●
●●
●
●
●
●
●
●●
●
●●
●
●
● ●
● ● ●● ●
●
●
●
●
●
●
●
●
●
● ●● ● ●
●
●
●
●
● ●
●
●
●
●
●
●
● ● ●
●
● ●
●
●
●
● ● ●
●
●
●
● ●●● ●
●●
●
●●●●
●
●
●
●
●
●
●
●
●●●
●
●
●●
●
●● ●●● ● ●
●
●
● ● ●
●
● ●
●
● ●●
●
● ●● ●●
●
● ●●
●
● ●●
●●
●
●
●
●
●
●●● ●● ●
●
●
●
●● ●
●
●
●
●● ● ●●● ●
●
●
●
●
●
●● ●
●●
●
●
●● ● ●
●●
●
●
●● ● ●
●
●
●●
●● ● ●
●●
●
●
●● ● ●
●●
●
●● ●
● ●●
●
●
●
●
●
●● ● ● ●● ● ●●
●● ● ● ● ●
●●
●
●
●
●
●
●●
●
●
●
●
●
●
● ●● ●●
●●
●
●● ●
● ●
●
●
● ●
●●●
●● ●
●
●
●●
●●
●
● ●
●●
● ● ●
●
●
●
●
●
●
●
●
●●
●●
●
●
●
●
●
●
●
●
●
●
● ●●
●
●
●
●
●
● ●
● ●
●
●
● ● ●●
●
● ●
●
●
●
●
●
●
●●● ●
●● ●
●
●
●●
●● ● ●
●●
●
●● ●
●●
●●
●● ● ●
●
●
● ●
●
●●
●●
●●
●
●
●● ●
●●
●
●
●
●● ● ● ●
●● ●
● ●●
●●
●●● ●●
● ●●●
●●
● ●
●
●
●●
●●
●●
●
●
● ●● ●
●●
●●
●
●

27 hotspots!
(2% of source
files)

●

●

●
●

●

●
●

●

●

●

●

●

●

●●

●

●

Main culprits

●
●

●

●

●

●

●
●

●
●

●

●

●

●

● ●
●
●

●

●

●

postgres.h
access/htup.h
access/genam.h
access/xact.h
utils/builtins.h

●

●
●

●

● ●
●

●
●
●
●

●

● ●
●

●

●

●
●

●
●
●

●
●

●

●
●

●

●●● ●
●●
●
●
●●● ●
●●●
● ●
●

●

●● ●
● ●
●
●

●

●●
●●
●
●
●●
●●
●●
●
●

●
●

●
●

●

●●

●
●

0

●

50

100

Build Time (s)

150

200

Rebuild cost
(seconds)
!29
General trends
Transitive property of build hotspots
1

2

...

n-1

n

hot.o

hot.c

!30
General trends
Transitive property of build hotspots
1

2

...

n-1

n

hot.o

hot.c

!30
General trends
Transitive property of build hotspots
1

2

...

n-1

n

hot.o

hot.c

x.h
!30
General trends
Transitive property of build hotspots
1

2

...

n-1

n

hot.o

hot.c

x.h
!30
1

2

...

n-1

n

General trends
hot.o

Transitive property of build hotspots
hot.c

x.h

!31
1

2

...

n-1

n

General trends
hot.o

Transitive property of build hotspots
hot.c

x.h

!31
1

2

...

n-1

n

General trends
hot.o

Transitive property of build hotspots
hot.c

x.h

hub.h

!31
1

2

...

n-1

n

General trends
hot.o

Transitive property of build hotspots
hot.c

a.h

b.h

x.h

y.h

z.h

hub.h

!31
1

2

...

n-1

n

General trends
hot.o

Transitive property of build hotspots
hot.c

a.h

b.h

x.h

y.h

z.h

hub.h

!31
1

2

...

n-1

n

General trends
hot.o

Transitive property of build hotspots
hot.c

a.h

b.h

x.h

y.h

z.h

hub.h

!31
1

2

...

n-1

n

General trends
hot.o

Transitive property of build hotspots
hot.c

a.h

b.h

x.h

y.h

z.h

hub.h

Limit internal use of “header file hubs”
as much as possible!
!31
2nd International Workshop on Release Engineering
RELENG 2014

?
?
http://releng.polymtl.ca
2nd International Workshop on Release Engineering
RELENG 2014

keynotes

?
?
http://releng.polymtl.ca

talks on
research
and
practice

poster
session
and panel

Deadline: February 28, 2014	

Event: April 11, 2014
2nd International Workshop on Release Engineering
RELENG 2014

keynotes

http://releng.polymtl.ca

?
?

hosted in	

Mountainview (CA, US)
by

talks on
research
and
practice

poster
session
and panel

Deadline: February 28, 2014	

Event: April 11, 2014
2nd International Workshop on Release Engineering
RELENG 2014

keynotes
McNutt
Dinah le)
(Goog

hosted in	

Mountainview (CA, US)
by

?
http://releng.polymtl.ca

talks on
research
and
practice

poster
session
and panel

Deadline: February 28, 2014	

Event: April 11, 2014
@shane_mcintosh
shanemcintosh@acm.org
Bonus!

!34
postgres.h
src/include/c.h
src/include/port.h
src/include/utils/elog.h
src/include/utils/palloc.h
src/include/pg_config_manual.h

!35
htup_details.h
src/include/access/htup.h
src/include/storage/itemptr.h
src/include/storage/itemid.h
src/include/storage/bufpage.h
src/include/access/tupdesc.h
src/include/catalog/pg_attribute.h
src/include/access/tupmacs.h

!36
genam.h
src/include/access/skey.h
src/include/storage/lock.h
src/include/storage/shmem.h
src/include/utils/hsearch.h
src/include/storage/lwlock.h
src/include/utils/relcache.h

!37
xact.h
src/include/access/xlog.h
src/include/access/xlogdefs.h
src/include/nodes/pg_list.h
src/include/lib/stringinfo.h

!38
builtins.h
src/include/fmgr.h
src/include/nodes/parsenodes.h
src/include/nodes/primnodes.h
src/include/nodes/pg_list.h
src/include/nodes/nodes.h

!39

More Related Content

What's hot

Collecting and Leveraging a Benchmark of Build System Clones to Aid in Qualit...
Collecting and Leveraging a Benchmark of Build System Clones to Aid in Qualit...Collecting and Leveraging a Benchmark of Build System Clones to Aid in Qualit...
Collecting and Leveraging a Benchmark of Build System Clones to Aid in Qualit...Shane McIntosh
 
The Bash Dashboard (Or: How to Use Bash for Data Analysis)
The Bash Dashboard (Or: How to Use Bash for Data Analysis)The Bash Dashboard (Or: How to Use Bash for Data Analysis)
The Bash Dashboard (Or: How to Use Bash for Data Analysis)Bram Adams
 
Modern Release Engineering in a Nutshell - Why Researchers should Care!
Modern Release Engineering in a Nutshell - Why Researchers should Care!Modern Release Engineering in a Nutshell - Why Researchers should Care!
Modern Release Engineering in a Nutshell - Why Researchers should Care!Bram Adams
 
Becoming A Plumber: Building Deployment Pipelines - LISA17
Becoming A Plumber: Building Deployment Pipelines - LISA17Becoming A Plumber: Building Deployment Pipelines - LISA17
Becoming A Plumber: Building Deployment Pipelines - LISA17Daniel Barker
 
.Net Hijacking to Defend PowerShell BSidesSF2017
.Net Hijacking to Defend PowerShell BSidesSF2017 .Net Hijacking to Defend PowerShell BSidesSF2017
.Net Hijacking to Defend PowerShell BSidesSF2017 Amanda Rousseau
 
Becoming a Plumber: Building Deployment Pipelines - All Day DevOps
Becoming a Plumber: Building Deployment Pipelines - All Day DevOpsBecoming a Plumber: Building Deployment Pipelines - All Day DevOps
Becoming a Plumber: Building Deployment Pipelines - All Day DevOpsDaniel Barker
 
What Can Reverse Engineering Do For You?
What Can Reverse Engineering Do For You?What Can Reverse Engineering Do For You?
What Can Reverse Engineering Do For You?Amanda Rousseau
 
Intro to git (UT biocomputing 2015)
Intro to git (UT biocomputing 2015)Intro to git (UT biocomputing 2015)
Intro to git (UT biocomputing 2015)chenghlee
 
An Empirical Study of Unspecified Dependencies in Make-Based Build Systems
An Empirical Study of Unspecified Dependencies in Make-Based Build SystemsAn Empirical Study of Unspecified Dependencies in Make-Based Build Systems
An Empirical Study of Unspecified Dependencies in Make-Based Build Systemscorpaulbezemer
 
CI/CD on Android project via Jenkins Pipeline
CI/CD on Android project via Jenkins PipelineCI/CD on Android project via Jenkins Pipeline
CI/CD on Android project via Jenkins PipelineVeaceslav Gaidarji
 
DO YOU WANT TO USE A VCS
DO YOU WANT TO USE A VCSDO YOU WANT TO USE A VCS
DO YOU WANT TO USE A VCSSeongJae Park
 
CI from scratch with Jenkins (EN)
CI from scratch with Jenkins (EN)CI from scratch with Jenkins (EN)
CI from scratch with Jenkins (EN)Borislav Traykov
 
Git inter-snapshot public
Git  inter-snapshot publicGit  inter-snapshot public
Git inter-snapshot publicSeongJae Park
 
Semi-Automatic Code Cleanup with Clang-Tidy
Semi-Automatic Code Cleanup with Clang-TidySemi-Automatic Code Cleanup with Clang-Tidy
Semi-Automatic Code Cleanup with Clang-TidyMarkus Werle
 
Test Driven Development
Test Driven DevelopmentTest Driven Development
Test Driven DevelopmentPapp Laszlo
 
Automate Your Automation | DrupalCon Vienna
Automate Your Automation | DrupalCon ViennaAutomate Your Automation | DrupalCon Vienna
Automate Your Automation | DrupalCon ViennaPantheon
 
Improving code quality with continuous integration (PHPBenelux Conference 2011)
Improving code quality with continuous integration (PHPBenelux Conference 2011)Improving code quality with continuous integration (PHPBenelux Conference 2011)
Improving code quality with continuous integration (PHPBenelux Conference 2011)Martin de Keijzer
 

What's hot (20)

Collecting and Leveraging a Benchmark of Build System Clones to Aid in Qualit...
Collecting and Leveraging a Benchmark of Build System Clones to Aid in Qualit...Collecting and Leveraging a Benchmark of Build System Clones to Aid in Qualit...
Collecting and Leveraging a Benchmark of Build System Clones to Aid in Qualit...
 
The Bash Dashboard (Or: How to Use Bash for Data Analysis)
The Bash Dashboard (Or: How to Use Bash for Data Analysis)The Bash Dashboard (Or: How to Use Bash for Data Analysis)
The Bash Dashboard (Or: How to Use Bash for Data Analysis)
 
Modern Release Engineering in a Nutshell - Why Researchers should Care!
Modern Release Engineering in a Nutshell - Why Researchers should Care!Modern Release Engineering in a Nutshell - Why Researchers should Care!
Modern Release Engineering in a Nutshell - Why Researchers should Care!
 
Becoming A Plumber: Building Deployment Pipelines - LISA17
Becoming A Plumber: Building Deployment Pipelines - LISA17Becoming A Plumber: Building Deployment Pipelines - LISA17
Becoming A Plumber: Building Deployment Pipelines - LISA17
 
Git and git hub
Git and git hubGit and git hub
Git and git hub
 
.Net Hijacking to Defend PowerShell BSidesSF2017
.Net Hijacking to Defend PowerShell BSidesSF2017 .Net Hijacking to Defend PowerShell BSidesSF2017
.Net Hijacking to Defend PowerShell BSidesSF2017
 
Becoming a Plumber: Building Deployment Pipelines - All Day DevOps
Becoming a Plumber: Building Deployment Pipelines - All Day DevOpsBecoming a Plumber: Building Deployment Pipelines - All Day DevOps
Becoming a Plumber: Building Deployment Pipelines - All Day DevOps
 
What Can Reverse Engineering Do For You?
What Can Reverse Engineering Do For You?What Can Reverse Engineering Do For You?
What Can Reverse Engineering Do For You?
 
Intro to git (UT biocomputing 2015)
Intro to git (UT biocomputing 2015)Intro to git (UT biocomputing 2015)
Intro to git (UT biocomputing 2015)
 
An Empirical Study of Unspecified Dependencies in Make-Based Build Systems
An Empirical Study of Unspecified Dependencies in Make-Based Build SystemsAn Empirical Study of Unspecified Dependencies in Make-Based Build Systems
An Empirical Study of Unspecified Dependencies in Make-Based Build Systems
 
Git basics for beginners
Git basics for beginnersGit basics for beginners
Git basics for beginners
 
CI/CD on Android project via Jenkins Pipeline
CI/CD on Android project via Jenkins PipelineCI/CD on Android project via Jenkins Pipeline
CI/CD on Android project via Jenkins Pipeline
 
DO YOU WANT TO USE A VCS
DO YOU WANT TO USE A VCSDO YOU WANT TO USE A VCS
DO YOU WANT TO USE A VCS
 
groovy & grails - lecture 10
groovy & grails - lecture 10groovy & grails - lecture 10
groovy & grails - lecture 10
 
CI from scratch with Jenkins (EN)
CI from scratch with Jenkins (EN)CI from scratch with Jenkins (EN)
CI from scratch with Jenkins (EN)
 
Git inter-snapshot public
Git  inter-snapshot publicGit  inter-snapshot public
Git inter-snapshot public
 
Semi-Automatic Code Cleanup with Clang-Tidy
Semi-Automatic Code Cleanup with Clang-TidySemi-Automatic Code Cleanup with Clang-Tidy
Semi-Automatic Code Cleanup with Clang-Tidy
 
Test Driven Development
Test Driven DevelopmentTest Driven Development
Test Driven Development
 
Automate Your Automation | DrupalCon Vienna
Automate Your Automation | DrupalCon ViennaAutomate Your Automation | DrupalCon Vienna
Automate Your Automation | DrupalCon Vienna
 
Improving code quality with continuous integration (PHPBenelux Conference 2011)
Improving code quality with continuous integration (PHPBenelux Conference 2011)Improving code quality with continuous integration (PHPBenelux Conference 2011)
Improving code quality with continuous integration (PHPBenelux Conference 2011)
 

Viewers also liked

Unicode - What you need to know
Unicode - What you need to knowUnicode - What you need to know
Unicode - What you need to knowKeheliya Gallaba
 
Orchestrating Change: An Artistic Representation of Software Evolution
Orchestrating Change: An Artistic Representation of Software EvolutionOrchestrating Change: An Artistic Representation of Software Evolution
Orchestrating Change: An Artistic Representation of Software EvolutionShane McIntosh
 
UM ESTUDO EMPÍRICO DO USO DA COMUNICAÇÃO PARA CARACTERIZAR A OCORRÊNCIA DE DE...
UM ESTUDO EMPÍRICO DO USO DA COMUNICAÇÃO PARA CARACTERIZAR A OCORRÊNCIA DE DE...UM ESTUDO EMPÍRICO DO USO DA COMUNICAÇÃO PARA CARACTERIZAR A OCORRÊNCIA DE DE...
UM ESTUDO EMPÍRICO DO USO DA COMUNICAÇÃO PARA CARACTERIZAR A OCORRÊNCIA DE DE...Igor Wiese
 
Module System in Standard ML
Module System in Standard MLModule System in Standard ML
Module System in Standard MLKeheliya Gallaba
 
SOCIAL METRICS INCLUDED IN PREDICTION MODELS ON SOFTWARE ENGINEERING: A MAPPI...
SOCIAL METRICS INCLUDED IN PREDICTION MODELS ON SOFTWARE ENGINEERING: A MAPPI...SOCIAL METRICS INCLUDED IN PREDICTION MODELS ON SOFTWARE ENGINEERING: A MAPPI...
SOCIAL METRICS INCLUDED IN PREDICTION MODELS ON SOFTWARE ENGINEERING: A MAPPI...Igor Wiese
 
Icse2011 build maintenance
Icse2011 build maintenanceIcse2011 build maintenance
Icse2011 build maintenanceShane McIntosh
 
USING STRUCTURAL HOLES METRICS FROM COMMUNICATION NETWORKS TO PREDICT CHANGE ...
USING STRUCTURAL HOLES METRICS FROM COMMUNICATION NETWORKS TO PREDICT CHANGE ...USING STRUCTURAL HOLES METRICS FROM COMMUNICATION NETWORKS TO PREDICT CHANGE ...
USING STRUCTURAL HOLES METRICS FROM COMMUNICATION NETWORKS TO PREDICT CHANGE ...Igor Wiese
 
O que é BIG DATA e como pode influenciar nossas vidas
O que é BIG DATA e como pode influenciar nossas vidasO que é BIG DATA e como pode influenciar nossas vidas
O que é BIG DATA e como pode influenciar nossas vidasElaine Naomi
 

Viewers also liked (10)

Unicode - What you need to know
Unicode - What you need to knowUnicode - What you need to know
Unicode - What you need to know
 
Orchestrating Change: An Artistic Representation of Software Evolution
Orchestrating Change: An Artistic Representation of Software EvolutionOrchestrating Change: An Artistic Representation of Software Evolution
Orchestrating Change: An Artistic Representation of Software Evolution
 
UM ESTUDO EMPÍRICO DO USO DA COMUNICAÇÃO PARA CARACTERIZAR A OCORRÊNCIA DE DE...
UM ESTUDO EMPÍRICO DO USO DA COMUNICAÇÃO PARA CARACTERIZAR A OCORRÊNCIA DE DE...UM ESTUDO EMPÍRICO DO USO DA COMUNICAÇÃO PARA CARACTERIZAR A OCORRÊNCIA DE DE...
UM ESTUDO EMPÍRICO DO USO DA COMUNICAÇÃO PARA CARACTERIZAR A OCORRÊNCIA DE DE...
 
Module System in Standard ML
Module System in Standard MLModule System in Standard ML
Module System in Standard ML
 
SOCIAL METRICS INCLUDED IN PREDICTION MODELS ON SOFTWARE ENGINEERING: A MAPPI...
SOCIAL METRICS INCLUDED IN PREDICTION MODELS ON SOFTWARE ENGINEERING: A MAPPI...SOCIAL METRICS INCLUDED IN PREDICTION MODELS ON SOFTWARE ENGINEERING: A MAPPI...
SOCIAL METRICS INCLUDED IN PREDICTION MODELS ON SOFTWARE ENGINEERING: A MAPPI...
 
Icse2011 build maintenance
Icse2011 build maintenanceIcse2011 build maintenance
Icse2011 build maintenance
 
USING STRUCTURAL HOLES METRICS FROM COMMUNICATION NETWORKS TO PREDICT CHANGE ...
USING STRUCTURAL HOLES METRICS FROM COMMUNICATION NETWORKS TO PREDICT CHANGE ...USING STRUCTURAL HOLES METRICS FROM COMMUNICATION NETWORKS TO PREDICT CHANGE ...
USING STRUCTURAL HOLES METRICS FROM COMMUNICATION NETWORKS TO PREDICT CHANGE ...
 
Qt Apresentação
Qt ApresentaçãoQt Apresentação
Qt Apresentação
 
Sonar Metrics
Sonar MetricsSonar Metrics
Sonar Metrics
 
O que é BIG DATA e como pode influenciar nossas vidas
O que é BIG DATA e como pode influenciar nossas vidasO que é BIG DATA e como pode influenciar nossas vidas
O que é BIG DATA e como pode influenciar nossas vidas
 

Similar to Identifying Build Hotspots in PostgreSQL Using Dependency Graphs and File Churn

Golang Performance : microbenchmarks, profilers, and a war story
Golang Performance : microbenchmarks, profilers, and a war storyGolang Performance : microbenchmarks, profilers, and a war story
Golang Performance : microbenchmarks, profilers, and a war storyAerospike
 
SFBigAnalytics_20190724: Monitor kafka like a Pro
SFBigAnalytics_20190724: Monitor kafka like a ProSFBigAnalytics_20190724: Monitor kafka like a Pro
SFBigAnalytics_20190724: Monitor kafka like a ProChester Chen
 
Icse2011 src
Icse2011 srcIcse2011 src
Icse2011 srcSAIL_QU
 
Studying the Evolution of Build Systems
Studying the Evolution of Build SystemsStudying the Evolution of Build Systems
Studying the Evolution of Build SystemsSAIL_QU
 
OnAndroidConf 2013: Accelerating the Android Platform Build
OnAndroidConf 2013: Accelerating the Android Platform BuildOnAndroidConf 2013: Accelerating the Android Platform Build
OnAndroidConf 2013: Accelerating the Android Platform BuildDavid Rosen
 
COMMitMDE'18: Eclipse Hawk: model repository querying as a service
COMMitMDE'18: Eclipse Hawk: model repository querying as a serviceCOMMitMDE'18: Eclipse Hawk: model repository querying as a service
COMMitMDE'18: Eclipse Hawk: model repository querying as a serviceAntonio García-Domínguez
 
DESIGN West 2013 Presentation: Accelerating Android Development and Delivery
DESIGN West 2013 Presentation: Accelerating Android Development and DeliveryDESIGN West 2013 Presentation: Accelerating Android Development and Delivery
DESIGN West 2013 Presentation: Accelerating Android Development and DeliveryDavid Rosen
 
Anton Moldovan "Building an efficient replication system for thousands of ter...
Anton Moldovan "Building an efficient replication system for thousands of ter...Anton Moldovan "Building an efficient replication system for thousands of ter...
Anton Moldovan "Building an efficient replication system for thousands of ter...Fwdays
 
Top Java Performance Problems and Metrics To Check in Your Pipeline
Top Java Performance Problems and Metrics To Check in Your PipelineTop Java Performance Problems and Metrics To Check in Your Pipeline
Top Java Performance Problems and Metrics To Check in Your PipelineAndreas Grabner
 
Continuous Integration on Steroids
Continuous Integration on SteroidsContinuous Integration on Steroids
Continuous Integration on SteroidsAlexander Akbashev
 
Continuous Integration на стероидах / Александр Акбашев (HERE)
Continuous Integration на стероидах / Александр Акбашев (HERE)Continuous Integration на стероидах / Александр Акбашев (HERE)
Continuous Integration на стероидах / Александр Акбашев (HERE)Ontico
 
IMCSummit 2015 - Day 2 IT Business Track - 4 Myths about In-Memory Databases ...
IMCSummit 2015 - Day 2 IT Business Track - 4 Myths about In-Memory Databases ...IMCSummit 2015 - Day 2 IT Business Track - 4 Myths about In-Memory Databases ...
IMCSummit 2015 - Day 2 IT Business Track - 4 Myths about In-Memory Databases ...In-Memory Computing Summit
 
TestUpload
TestUploadTestUpload
TestUploadZarksaDS
 
[db tech showcase Tokyo 2017] A11: SQLite - The most used yet least appreciat...
[db tech showcase Tokyo 2017] A11: SQLite - The most used yet least appreciat...[db tech showcase Tokyo 2017] A11: SQLite - The most used yet least appreciat...
[db tech showcase Tokyo 2017] A11: SQLite - The most used yet least appreciat...Insight Technology, Inc.
 
Illogical engineers
Illogical engineersIllogical engineers
Illogical engineersPawel Szulc
 
Illogical engineers
Illogical engineersIllogical engineers
Illogical engineersPawel Szulc
 
Compiler Construction | Lecture 1 | What is a compiler?
Compiler Construction | Lecture 1 | What is a compiler?Compiler Construction | Lecture 1 | What is a compiler?
Compiler Construction | Lecture 1 | What is a compiler?Eelco Visser
 
The Hitchhiker's Guide to Faster Builds. Viktor Kirilov. CoreHard Spring 2019
The Hitchhiker's Guide to Faster Builds. Viktor Kirilov. CoreHard Spring 2019The Hitchhiker's Guide to Faster Builds. Viktor Kirilov. CoreHard Spring 2019
The Hitchhiker's Guide to Faster Builds. Viktor Kirilov. CoreHard Spring 2019corehard_by
 
Relational Database CI/CD
Relational Database CI/CDRelational Database CI/CD
Relational Database CI/CDJasmin Fluri
 
Knowledge Sharing Session on JavaScript Source Maps & Angular Compilation
Knowledge Sharing Session on JavaScript Source Maps & Angular CompilationKnowledge Sharing Session on JavaScript Source Maps & Angular Compilation
Knowledge Sharing Session on JavaScript Source Maps & Angular CompilationMd.Zahidur Rahman
 

Similar to Identifying Build Hotspots in PostgreSQL Using Dependency Graphs and File Churn (20)

Golang Performance : microbenchmarks, profilers, and a war story
Golang Performance : microbenchmarks, profilers, and a war storyGolang Performance : microbenchmarks, profilers, and a war story
Golang Performance : microbenchmarks, profilers, and a war story
 
SFBigAnalytics_20190724: Monitor kafka like a Pro
SFBigAnalytics_20190724: Monitor kafka like a ProSFBigAnalytics_20190724: Monitor kafka like a Pro
SFBigAnalytics_20190724: Monitor kafka like a Pro
 
Icse2011 src
Icse2011 srcIcse2011 src
Icse2011 src
 
Studying the Evolution of Build Systems
Studying the Evolution of Build SystemsStudying the Evolution of Build Systems
Studying the Evolution of Build Systems
 
OnAndroidConf 2013: Accelerating the Android Platform Build
OnAndroidConf 2013: Accelerating the Android Platform BuildOnAndroidConf 2013: Accelerating the Android Platform Build
OnAndroidConf 2013: Accelerating the Android Platform Build
 
COMMitMDE'18: Eclipse Hawk: model repository querying as a service
COMMitMDE'18: Eclipse Hawk: model repository querying as a serviceCOMMitMDE'18: Eclipse Hawk: model repository querying as a service
COMMitMDE'18: Eclipse Hawk: model repository querying as a service
 
DESIGN West 2013 Presentation: Accelerating Android Development and Delivery
DESIGN West 2013 Presentation: Accelerating Android Development and DeliveryDESIGN West 2013 Presentation: Accelerating Android Development and Delivery
DESIGN West 2013 Presentation: Accelerating Android Development and Delivery
 
Anton Moldovan "Building an efficient replication system for thousands of ter...
Anton Moldovan "Building an efficient replication system for thousands of ter...Anton Moldovan "Building an efficient replication system for thousands of ter...
Anton Moldovan "Building an efficient replication system for thousands of ter...
 
Top Java Performance Problems and Metrics To Check in Your Pipeline
Top Java Performance Problems and Metrics To Check in Your PipelineTop Java Performance Problems and Metrics To Check in Your Pipeline
Top Java Performance Problems and Metrics To Check in Your Pipeline
 
Continuous Integration on Steroids
Continuous Integration on SteroidsContinuous Integration on Steroids
Continuous Integration on Steroids
 
Continuous Integration на стероидах / Александр Акбашев (HERE)
Continuous Integration на стероидах / Александр Акбашев (HERE)Continuous Integration на стероидах / Александр Акбашев (HERE)
Continuous Integration на стероидах / Александр Акбашев (HERE)
 
IMCSummit 2015 - Day 2 IT Business Track - 4 Myths about In-Memory Databases ...
IMCSummit 2015 - Day 2 IT Business Track - 4 Myths about In-Memory Databases ...IMCSummit 2015 - Day 2 IT Business Track - 4 Myths about In-Memory Databases ...
IMCSummit 2015 - Day 2 IT Business Track - 4 Myths about In-Memory Databases ...
 
TestUpload
TestUploadTestUpload
TestUpload
 
[db tech showcase Tokyo 2017] A11: SQLite - The most used yet least appreciat...
[db tech showcase Tokyo 2017] A11: SQLite - The most used yet least appreciat...[db tech showcase Tokyo 2017] A11: SQLite - The most used yet least appreciat...
[db tech showcase Tokyo 2017] A11: SQLite - The most used yet least appreciat...
 
Illogical engineers
Illogical engineersIllogical engineers
Illogical engineers
 
Illogical engineers
Illogical engineersIllogical engineers
Illogical engineers
 
Compiler Construction | Lecture 1 | What is a compiler?
Compiler Construction | Lecture 1 | What is a compiler?Compiler Construction | Lecture 1 | What is a compiler?
Compiler Construction | Lecture 1 | What is a compiler?
 
The Hitchhiker's Guide to Faster Builds. Viktor Kirilov. CoreHard Spring 2019
The Hitchhiker's Guide to Faster Builds. Viktor Kirilov. CoreHard Spring 2019The Hitchhiker's Guide to Faster Builds. Viktor Kirilov. CoreHard Spring 2019
The Hitchhiker's Guide to Faster Builds. Viktor Kirilov. CoreHard Spring 2019
 
Relational Database CI/CD
Relational Database CI/CDRelational Database CI/CD
Relational Database CI/CD
 
Knowledge Sharing Session on JavaScript Source Maps & Angular Compilation
Knowledge Sharing Session on JavaScript Source Maps & Angular CompilationKnowledge Sharing Session on JavaScript Source Maps & Angular Compilation
Knowledge Sharing Session on JavaScript Source Maps & Angular Compilation
 

Recently uploaded

New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024
New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024
New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024BookNet Canada
 
From Family Reminiscence to Scholarly Archive .
From Family Reminiscence to Scholarly Archive .From Family Reminiscence to Scholarly Archive .
From Family Reminiscence to Scholarly Archive .Alan Dix
 
Unraveling Multimodality with Large Language Models.pdf
Unraveling Multimodality with Large Language Models.pdfUnraveling Multimodality with Large Language Models.pdf
Unraveling Multimodality with Large Language Models.pdfAlex Barbosa Coqueiro
 
"Subclassing and Composition – A Pythonic Tour of Trade-Offs", Hynek Schlawack
"Subclassing and Composition – A Pythonic Tour of Trade-Offs", Hynek Schlawack"Subclassing and Composition – A Pythonic Tour of Trade-Offs", Hynek Schlawack
"Subclassing and Composition – A Pythonic Tour of Trade-Offs", Hynek SchlawackFwdays
 
Anypoint Exchange: It’s Not Just a Repo!
Anypoint Exchange: It’s Not Just a Repo!Anypoint Exchange: It’s Not Just a Repo!
Anypoint Exchange: It’s Not Just a Repo!Manik S Magar
 
"Debugging python applications inside k8s environment", Andrii Soldatenko
"Debugging python applications inside k8s environment", Andrii Soldatenko"Debugging python applications inside k8s environment", Andrii Soldatenko
"Debugging python applications inside k8s environment", Andrii SoldatenkoFwdays
 
"LLMs for Python Engineers: Advanced Data Analysis and Semantic Kernel",Oleks...
"LLMs for Python Engineers: Advanced Data Analysis and Semantic Kernel",Oleks..."LLMs for Python Engineers: Advanced Data Analysis and Semantic Kernel",Oleks...
"LLMs for Python Engineers: Advanced Data Analysis and Semantic Kernel",Oleks...Fwdays
 
Ensuring Technical Readiness For Copilot in Microsoft 365
Ensuring Technical Readiness For Copilot in Microsoft 365Ensuring Technical Readiness For Copilot in Microsoft 365
Ensuring Technical Readiness For Copilot in Microsoft 3652toLead Limited
 
Designing IA for AI - Information Architecture Conference 2024
Designing IA for AI - Information Architecture Conference 2024Designing IA for AI - Information Architecture Conference 2024
Designing IA for AI - Information Architecture Conference 2024Enterprise Knowledge
 
Commit 2024 - Secret Management made easy
Commit 2024 - Secret Management made easyCommit 2024 - Secret Management made easy
Commit 2024 - Secret Management made easyAlfredo García Lavilla
 
Leverage Zilliz Serverless - Up to 50X Saving for Your Vector Storage Cost
Leverage Zilliz Serverless - Up to 50X Saving for Your Vector Storage CostLeverage Zilliz Serverless - Up to 50X Saving for Your Vector Storage Cost
Leverage Zilliz Serverless - Up to 50X Saving for Your Vector Storage CostZilliz
 
Tampa BSides - Chef's Tour of Microsoft Security Adoption Framework (SAF)
Tampa BSides - Chef's Tour of Microsoft Security Adoption Framework (SAF)Tampa BSides - Chef's Tour of Microsoft Security Adoption Framework (SAF)
Tampa BSides - Chef's Tour of Microsoft Security Adoption Framework (SAF)Mark Simos
 
Take control of your SAP testing with UiPath Test Suite
Take control of your SAP testing with UiPath Test SuiteTake control of your SAP testing with UiPath Test Suite
Take control of your SAP testing with UiPath Test SuiteDianaGray10
 
SAP Build Work Zone - Overview L2-L3.pptx
SAP Build Work Zone - Overview L2-L3.pptxSAP Build Work Zone - Overview L2-L3.pptx
SAP Build Work Zone - Overview L2-L3.pptxNavinnSomaal
 
Hyperautomation and AI/ML: A Strategy for Digital Transformation Success.pdf
Hyperautomation and AI/ML: A Strategy for Digital Transformation Success.pdfHyperautomation and AI/ML: A Strategy for Digital Transformation Success.pdf
Hyperautomation and AI/ML: A Strategy for Digital Transformation Success.pdfPrecisely
 
"ML in Production",Oleksandr Bagan
"ML in Production",Oleksandr Bagan"ML in Production",Oleksandr Bagan
"ML in Production",Oleksandr BaganFwdays
 
Transcript: New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024
Transcript: New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024Transcript: New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024
Transcript: New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024BookNet Canada
 
The Ultimate Guide to Choosing WordPress Pros and Cons
The Ultimate Guide to Choosing WordPress Pros and ConsThe Ultimate Guide to Choosing WordPress Pros and Cons
The Ultimate Guide to Choosing WordPress Pros and ConsPixlogix Infotech
 
Dev Dives: Streamline document processing with UiPath Studio Web
Dev Dives: Streamline document processing with UiPath Studio WebDev Dives: Streamline document processing with UiPath Studio Web
Dev Dives: Streamline document processing with UiPath Studio WebUiPathCommunity
 

Recently uploaded (20)

New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024
New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024
New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024
 
From Family Reminiscence to Scholarly Archive .
From Family Reminiscence to Scholarly Archive .From Family Reminiscence to Scholarly Archive .
From Family Reminiscence to Scholarly Archive .
 
Unraveling Multimodality with Large Language Models.pdf
Unraveling Multimodality with Large Language Models.pdfUnraveling Multimodality with Large Language Models.pdf
Unraveling Multimodality with Large Language Models.pdf
 
"Subclassing and Composition – A Pythonic Tour of Trade-Offs", Hynek Schlawack
"Subclassing and Composition – A Pythonic Tour of Trade-Offs", Hynek Schlawack"Subclassing and Composition – A Pythonic Tour of Trade-Offs", Hynek Schlawack
"Subclassing and Composition – A Pythonic Tour of Trade-Offs", Hynek Schlawack
 
Anypoint Exchange: It’s Not Just a Repo!
Anypoint Exchange: It’s Not Just a Repo!Anypoint Exchange: It’s Not Just a Repo!
Anypoint Exchange: It’s Not Just a Repo!
 
"Debugging python applications inside k8s environment", Andrii Soldatenko
"Debugging python applications inside k8s environment", Andrii Soldatenko"Debugging python applications inside k8s environment", Andrii Soldatenko
"Debugging python applications inside k8s environment", Andrii Soldatenko
 
"LLMs for Python Engineers: Advanced Data Analysis and Semantic Kernel",Oleks...
"LLMs for Python Engineers: Advanced Data Analysis and Semantic Kernel",Oleks..."LLMs for Python Engineers: Advanced Data Analysis and Semantic Kernel",Oleks...
"LLMs for Python Engineers: Advanced Data Analysis and Semantic Kernel",Oleks...
 
Ensuring Technical Readiness For Copilot in Microsoft 365
Ensuring Technical Readiness For Copilot in Microsoft 365Ensuring Technical Readiness For Copilot in Microsoft 365
Ensuring Technical Readiness For Copilot in Microsoft 365
 
Designing IA for AI - Information Architecture Conference 2024
Designing IA for AI - Information Architecture Conference 2024Designing IA for AI - Information Architecture Conference 2024
Designing IA for AI - Information Architecture Conference 2024
 
Commit 2024 - Secret Management made easy
Commit 2024 - Secret Management made easyCommit 2024 - Secret Management made easy
Commit 2024 - Secret Management made easy
 
Leverage Zilliz Serverless - Up to 50X Saving for Your Vector Storage Cost
Leverage Zilliz Serverless - Up to 50X Saving for Your Vector Storage CostLeverage Zilliz Serverless - Up to 50X Saving for Your Vector Storage Cost
Leverage Zilliz Serverless - Up to 50X Saving for Your Vector Storage Cost
 
Tampa BSides - Chef's Tour of Microsoft Security Adoption Framework (SAF)
Tampa BSides - Chef's Tour of Microsoft Security Adoption Framework (SAF)Tampa BSides - Chef's Tour of Microsoft Security Adoption Framework (SAF)
Tampa BSides - Chef's Tour of Microsoft Security Adoption Framework (SAF)
 
Take control of your SAP testing with UiPath Test Suite
Take control of your SAP testing with UiPath Test SuiteTake control of your SAP testing with UiPath Test Suite
Take control of your SAP testing with UiPath Test Suite
 
SAP Build Work Zone - Overview L2-L3.pptx
SAP Build Work Zone - Overview L2-L3.pptxSAP Build Work Zone - Overview L2-L3.pptx
SAP Build Work Zone - Overview L2-L3.pptx
 
Hyperautomation and AI/ML: A Strategy for Digital Transformation Success.pdf
Hyperautomation and AI/ML: A Strategy for Digital Transformation Success.pdfHyperautomation and AI/ML: A Strategy for Digital Transformation Success.pdf
Hyperautomation and AI/ML: A Strategy for Digital Transformation Success.pdf
 
"ML in Production",Oleksandr Bagan
"ML in Production",Oleksandr Bagan"ML in Production",Oleksandr Bagan
"ML in Production",Oleksandr Bagan
 
DMCC Future of Trade Web3 - Special Edition
DMCC Future of Trade Web3 - Special EditionDMCC Future of Trade Web3 - Special Edition
DMCC Future of Trade Web3 - Special Edition
 
Transcript: New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024
Transcript: New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024Transcript: New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024
Transcript: New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024
 
The Ultimate Guide to Choosing WordPress Pros and Cons
The Ultimate Guide to Choosing WordPress Pros and ConsThe Ultimate Guide to Choosing WordPress Pros and Cons
The Ultimate Guide to Choosing WordPress Pros and Cons
 
Dev Dives: Streamline document processing with UiPath Studio Web
Dev Dives: Streamline document processing with UiPath Studio WebDev Dives: Streamline document processing with UiPath Studio Web
Dev Dives: Streamline document processing with UiPath Studio Web
 

Identifying Build Hotspots in PostgreSQL Using Dependency Graphs and File Churn

  • 1. Identifying Hotspots in the PostgreSQL Build Processes Shane McIntosh Bram Adams Meiyappan Nagappan Ahmed E. Hassan @shane_mcintosh shanemcintosh@acm.org
  • 2. What is a build system? Source code !2
  • 3. What is a build system? Source code Deliverable !2
  • 4. Build systems describe how sources are translated into deliverables .c .o .cc .o .exe .tex .dvi .pdf .a .deb !3
  • 5. All builds are equal… (1) Think (2) Edit The developer’s work cycle (4) Test (3) Build !4
  • 6. …But some builds are more equal than others “ http://xkcd.com/303/ Why is the gtk build so abysmally slow? This hinders our ability to run gtk bots and keep the gtk build green. :( ” !5
  • 7. Refactoring can improve build performance deliverable1 del1.o del1.c deliverable2 library.a util1.o util2.o util1.c del2.o del2.c util2.c !6
  • 8. Refactoring can improve build performance deliverable1 del1.o del1.c deliverable2 library.a util1.o util2.o util1.c del2.o del2.c util2.c !6
  • 9. Refactoring can improve build performance deliverable1 del1.o del1.c deliverable2 library.a util1.o util2.o util1.c del2.o del2.c util2.c !6
  • 10. Refactoring can improve build performance deliverable1 del1.o del1.c deliverable2 library.a util1.o util2.o util1.c del2.o del2.c util2.c !6
  • 11. Refactoring can improve build performance deliverable1 del1.o del1.c deliverable2 library.a util1.o util2.o util1.c del2.o del2.c util2.c !6
  • 12. Refactoring can improve build performance deliverable1 deliverable2 Before refactoring:! 4 commands! del2.o del1.o library.a triggered del1.c del2.c util1.o util2.o util1.c util2.c !6
  • 13. Refactoring can improve build performance deliverable1 del1.o del1.c deliverable2 library.a util1.o util2.o util1.c del2.o del2.c util2.c !6
  • 14. Refactoring can improve build performance deliverable1 deliverable2 del1.o util1.o util2.o del2.o del1.c util1.c util2.c del2.c !7
  • 15. Refactoring can improve build performance deliverable1 deliverable2 del1.o util1.o util2.o del2.o del1.c util1.c util2.c del2.c !7
  • 16. Refactoring can improve build performance deliverable1 deliverable2 del1.o util1.o util2.o del2.o del1.c util1.c util2.c del2.c !7
  • 17. Refactoring can improve build performance deliverable1 deliverable2 del1.o util1.o util2.o del2.o del1.c util1.c util2.c del2.c !7
  • 18. Refactoring can improve build performance deliverable1 deliverable2 After refactoring:! 2 commands! del2.o del1.o util1.o util2.o triggered del1.c del2.c util1.c util2.c !7
  • 19. …But where should we focus refactoring effort? Files that rebuild the slowest? !8
  • 21. MAKAO tool extracts build dependency graphs (1) Dependency Graph Construction (2) Dependency Graph Analysis Design recovery and maintenance of build systems B. Adams, Herman Tromp, Kris De Schutter, Wolfgang De Meuter [ICSM 2007] !10
  • 22. The cost of traversing an edge is derived by timing its build command (1) Dependency Graph Construction (2) Dependency Graph Analysis Median of 10 repetitions !11
  • 23. Open source case studies! ! ! ! !12
  • 24. Build dependency graph properties # Nodes # Edges 38,102 2,752,225 0 750,000 1,500,000 2,250,000 3,000,000 3,375 121,710 5,131 60,170 0 35,000 70,000 105,000 140,000 !13
  • 25. 100 50 Build Time (s) 8 6 4 0 2 0 Build Time (s) 10 12 150 Incremental build performance 0 100 200 300 400 500 600 0 File ID 100 200 File ID .c files .h files !14 300 400
  • 26. 150 50 100 Build Time (s) 1.5 1.0 0.5 0 0.0 Build Time (s) 2.0 Incremental build performance 0 200 400 600 800 1000 File ID 0 100 200 300 File ID .c files .h files !15 400 500 600
  • 27. 6000 0 2000 4000 Build Time (s) 100 50 0 Build Time (s) 150 8000 Incremental build performance 0 2000 4000 6000 8000 10000 0 File ID 2000 4000 6000 File ID .c files .h files !16 8000 10000
  • 28. 100 50 0 Build Time (s) 150 So, refactoring should target the slow files! 0 100 200 300 File ID !17 400 500 600
  • 29. 100 50 0 Build Time (s) 150 So, refactoring should target the slow files! 0 100 200 300 File ID !17 400 500 600
  • 30. 100 50 0 Build Time (s) 150 So, refactoring should target the slow files! 0 100 200 300 File ID !17 400 500 600
  • 31. 100 50 0 Build Time (s) 150 So, refactoring should target the slow files! 0 100 200 300 File ID !17 400 500 600
  • 32. Let’s see what developers think! > Please answer the following questions for each source file listed above:! > (1) Is this source code file a performance bottleneck? Y/N! ! For all of them no... !18
  • 33. Let’s see what developers think! > Please answer the following questions for each source file listed above:! > (1) Is this source code file a performance bottleneck? Y/N! ! For all of them no...! ! > (2) Why do you believe this file is or is not a performance bottleneck?! ! ...because none of these headers change often. !19
  • 34. …But where should we focus refactoring effort? Files that rebuild the slowest? !20
  • 35. …But where should we focus refactoring effort? Files that rebuild the slowest? …but they may only rarely change! !20
  • 36. …But where should we focus refactoring effort? Files that rebuild the slowest? Files that change the most often? …but they may only rarely change! !20
  • 37. Mining frequently changing files from version control Terminal $ git clone … … $ git checkout <some_tag> … $ git log --oneline <some_file> !21
  • 38. Mining frequently changing files from version control But many of these files $ git clone … … already build quickly! Terminal $ git checkout <some_tag> … $ git log --oneline <some_file> !21
  • 39. …But where should we focus refactoring effort? Files that rebuild the slowest? Files that change the most often? …but they may only rarely change! !22
  • 40. …But where should we focus refactoring effort? Files that rebuild the slowest? Files that change the most often? …but they may only rarely change! …but they may already be optimal! !22
  • 41. …But where should we focus refactoring effort? Files that rebuild the slowest? Files that change the most:often? ots …but they may only rarely change! …but they may already be optimal! otsp h ft e n uild ge o on b han cus nd c Fo ly a slow build at re es th il F !22
  • 44. Quadrant plots highlight build hotspots Number of changes (1) Dependency Graph Construction (2) Dependency Graph Analysis (3) Build Hotspot Detection Rebuild cost !25
  • 45. Quadrant plots highlight build hotspots Number of changes (1) Dependency Graph Construction (2) Dependency Graph Analysis (3) Build Hotspot Detection Rebuild cost !25
  • 46. Quadrant plots highlight build hotspots Number of changes (1) Dependency Graph Construction (2) Dependency Graph Analysis (3) Build Hotspot Detection Rebuild cost !25
  • 47. Number of changes Quadrant plots highlight build hotspots factor Re e first! thes (1) Dependency Graph Construction (2) Dependency Graph Analysis (3) Build Hotspot Detection Rebuild cost !25
  • 48. Open source case studies! Thresholds ! Rebuild cost 90 seconds Number of changes ! Median ! !26
  • 49. 1.00 ● ● ● ● ● ● ● ● Number of changes (Normalized) Normalized File Churn ● ● ● ● ● 0.25 ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ●● ● ● ● ● ● ● ● ● ● ●● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ●● ● ● ● ● ● ● ● ● ● ●● ● ● ● ● ● ● ●● ● ● ● ● ● ● ● ● ● ● ●● ● ● ● ● ● ● ● ● ● ●● ● ● ● ● ●● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● 65 hotspots! (7% of source files) ● ● ● ● 0.75 0.50 ● ● ● ● ● ●● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ●● ● ● ● ● ● ● ● ● ● ● ●● ● ● ●●● ● ● ● ●● ● ● ●● ●● ● ● ● ● ● ● ●● ● ● ●● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ●● ● ● ● ●● ● ● ● ● ● ● ●● ● ● ● ● ● ● ● ● ●● ● ● ● ● ● ●● ● ● ●● ● ● ● ● ●● ● ● ● ●● ● ● ● ● ● ●● ●● ● ● ● ● ● ● ●● ● ● ●● ● ● ● ● ● ● ● ●● ● ● ● ● ● ● ●● ● ● ● ●●●●● ●● ● ● ● ● ● ● ● ● ● ● ●● ● ● ●● ● ● ● ● ● 0 ●● ●● ● ● glib/glib.h glib/glib-object.h ● ● ● ●● ●● ● ● ● ● ● ● ● ● ● ● ● ● Main culprits ● ●● ●● ● ● ● ● ● ●● ● ● ● ● ● ● ● ●● ● ● ● ●● ● ● ● ● ●● ● ● ● ● ● ●●● ●● ● ● ● ● ● ● ● ● 50 ● ● ●● ● Build Time ● ● ● ● ● 100 150 Rebuild cost (seconds) !27
  • 50. 1.00 ● ● ● ● ● ● ● Number of changes (Normalized) Normalized File Churn ● 0.75 0.50 0.25 ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ●● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ●● ● ● ● ● ● ● ● ● ● ● ● ● ●● ● ● ●● ● ●● ● ● ● ● ●● ● ● ● ● ●● ● ● ● ● ● ●● ●● ●● ● ●● ● ● ● ● ●● ● ● ● ● ● ● ●● ● ● ● ●● ● ● ● ● ● ● ● ●● ● ● ●●● ● ● ●● ● ●● ● ● ●● ● ● ● ● ● ●●●● ●● ● ●●●● ●● ●● ●● ● ● ●●● ●●● ● ●●● ● ●● ● ● ● ●●●● ●● ● ● ●●●● ● ●● ● ●● ● ●● ● ● ● ●●●●●●●● ● ●●● ●●●● ●●● ● ● ● ●● ● ●● ●● ● 732 hotspots! (8% of source files) ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ●● ● ● ●● ● ● ● ●● ● ●● ●● ● ●● ● ● ● ● ● ● ● ● ●● ● ● ● ●● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ●● ●● ● ●● ● ● ● ● ● ●● ● ● ● ● ● ● ● ● ● ● ● ● ● ●● ● ● ● ● ● ● ● ● ● ● ●● ● ●● ● ●●● ● ● ●● ●● ● ● ●● ●● ●● ●● ● ● ● ● ● ● ● ● ● ● ● ● ●● ● ● ●● ● ●● ● ●● ● ● ●● ● ●● ● ● ● ● ● ● ● ● ● ● ●● ● ● ● ● ● ● ●●●●●● ● ● ● ● ●● ● ●● ● ● ● ● ●● ● ● ● ● ● ● ● Main culprits tmtm ● ● ● ● ● ● ● ●● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ●● ● ● ● ● ● ●● ● ●● ● ● ● ● ● ● ● ●● ● ● ● ● ● ● ● ● ●● ● ● ● ● ● ● ●● ● ● ● ●● ● ● ● ●● ● ●●● ● ● ●● ●● ●● ● ● ●● ● ● ● ●●● ● ● ● ●● ● ● ●● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ●●● ● ●● ● ● ●● ● ● ● ●● ●● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ●● ● ● ● ● ● ● ●● ●●●● ●● ● ● ●● ●● ●● ● ● ● ● ● ● ● ● ● ●● ● ● ● ● ● ●●●● ●● ● ● ● ●●●●●●●●●● ● ● ●●● ● ●●●● ● ● ● ●●● ●●●● ● ●● ● ● ●● ● ●●● ● ● ●● ●●● ● ● ● ●●● ● ●●● ● ● ● ● ● ●● ● ● ● ● ● ● ●●●●●●●● ● ● ● ●●●●●● ●● ● ●●● ●● ●● ●●●● ● ● ●●● ● ●● ●●● ●●● ● ●● ● ●● ● ●● ●● ● ● ● ● ● ● ● High hotspot! concentration qtbase/…/corelib qtxmlpatterns ●●●●●● ● ● ●●●● ● ●●●● ● ●●● ●●● ● 0 2000 4000 Build Time (s) 6000 8000 Rebuild cost (seconds) !28
  • 51. 1.00 ● ● ● ● ● ●● ● ● ● Number of changes (Normalized) Normalized File Churn ● ● ● ● ● ● 0.75 0.50 0.25 ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ●● ● ● ● ● ● ● ●● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ●● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ●● ● ● ●●● ● ●● ●● ● ● ● ● ● ● ● ● ● ●● ● ● ● ● ● ● ● ● ● ● ● ● ● ●● ● ● ● ● ●● ● ● ● ●● ● ● ● ● ● ●● ● ●● ● ● ● ● ● ● ●● ● ● ● ● ● ● ● ● ● ● ● ●● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ●●● ● ●● ● ●●●● ● ● ● ● ● ● ● ● ●●● ● ● ●● ● ●● ●●● ● ● ● ● ● ● ● ● ● ● ● ● ●● ● ● ●● ●● ● ● ●● ● ● ●● ●● ● ● ● ● ● ●●● ●● ● ● ● ● ●● ● ● ● ● ●● ● ●●● ● ● ● ● ● ● ●● ● ●● ● ● ●● ● ● ●● ● ● ●● ● ● ● ● ●● ●● ● ● ●● ● ● ●● ● ● ●● ● ●● ● ● ●● ● ● ● ● ● ●● ● ● ●● ● ●● ●● ● ● ● ● ●● ● ● ● ● ● ●● ● ● ● ● ● ● ● ●● ●● ●● ● ●● ● ● ● ● ● ● ● ●●● ●● ● ● ● ●● ●● ● ● ● ●● ● ● ● ● ● ● ● ● ● ● ● ●● ●● ● ● ● ● ● ● ● ● ● ● ● ●● ● ● ● ● ● ● ● ● ● ● ● ● ● ●● ● ● ● ● ● ● ● ● ● ●●● ● ●● ● ● ● ●● ●● ● ● ●● ● ●● ● ●● ●● ●● ● ● ● ● ● ● ● ●● ●● ●● ● ● ●● ● ●● ● ● ● ●● ● ● ● ●● ● ● ●● ●● ●●● ●● ● ●●● ●● ● ● ● ● ●● ●● ●● ● ● ● ●● ● ●● ●● ● ● 27 hotspots! (2% of source files) ● ● ● ● ● ● ● ● ● ● ● ● ● ●● ● ● Main culprits ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● postgres.h access/htup.h access/genam.h access/xact.h utils/builtins.h ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ●●● ● ●● ● ● ●●● ● ●●● ● ● ● ● ●● ● ● ● ● ● ● ●● ●● ● ● ●● ●● ●● ● ● ● ● ● ● ● ●● ● ● 0 ● 50 100 Build Time (s) 150 200 Rebuild cost (seconds) !29
  • 52. General trends Transitive property of build hotspots 1 2 ... n-1 n hot.o hot.c !30
  • 53. General trends Transitive property of build hotspots 1 2 ... n-1 n hot.o hot.c !30
  • 54. General trends Transitive property of build hotspots 1 2 ... n-1 n hot.o hot.c x.h !30
  • 55. General trends Transitive property of build hotspots 1 2 ... n-1 n hot.o hot.c x.h !30
  • 58. 1 2 ... n-1 n General trends hot.o Transitive property of build hotspots hot.c x.h hub.h !31
  • 59. 1 2 ... n-1 n General trends hot.o Transitive property of build hotspots hot.c a.h b.h x.h y.h z.h hub.h !31
  • 60. 1 2 ... n-1 n General trends hot.o Transitive property of build hotspots hot.c a.h b.h x.h y.h z.h hub.h !31
  • 61. 1 2 ... n-1 n General trends hot.o Transitive property of build hotspots hot.c a.h b.h x.h y.h z.h hub.h !31
  • 62. 1 2 ... n-1 n General trends hot.o Transitive property of build hotspots hot.c a.h b.h x.h y.h z.h hub.h Limit internal use of “header file hubs” as much as possible! !31
  • 63. 2nd International Workshop on Release Engineering RELENG 2014 ? ? http://releng.polymtl.ca
  • 64. 2nd International Workshop on Release Engineering RELENG 2014 keynotes ? ? http://releng.polymtl.ca talks on research and practice poster session and panel Deadline: February 28, 2014 Event: April 11, 2014
  • 65. 2nd International Workshop on Release Engineering RELENG 2014 keynotes http://releng.polymtl.ca ? ? hosted in Mountainview (CA, US) by talks on research and practice poster session and panel Deadline: February 28, 2014 Event: April 11, 2014
  • 66. 2nd International Workshop on Release Engineering RELENG 2014 keynotes McNutt Dinah le) (Goog hosted in Mountainview (CA, US) by ? http://releng.polymtl.ca talks on research and practice poster session and panel Deadline: February 28, 2014 Event: April 11, 2014
  • 67.
  • 68.
  • 69.
  • 70.
  • 71.
  • 72.