Leveraging Existing Instrumentation to Automatically Infer - - PowerPoint PPT Presentation

leveraging existing instrumentation to automatically
SMART_READER_LITE
LIVE PREVIEW

Leveraging Existing Instrumentation to Automatically Infer - - PowerPoint PPT Presentation

Leveraging Existing Instrumentation to Automatically Infer Invariant-Constrained Models Ivan Beschastnikh Yuriy Brun Sigurd Schneider Michael Sloan University of Washington Saarland University Michael D. Ernst 1 Synoptic: * ... Mining


slide-1
SLIDE 1

Leveraging Existing Instrumentation to Automatically Infer Invariant-Constrained Models

Ivan Beschastnikh Yuriy Brun Sigurd Schneider Michael Sloan Michael D. Ernst

Saarland University University of Washington

1

slide-2
SLIDE 2

Mining from Synoptic:

...

1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1

Ivan Beschastnikh Yuriy Brun Sigurd Schneider Michael Sloan Michael D. Ernst

Saarland University University of Washington

* http://en.wikipedia.org/wiki/File:DFAexample.svg *

2

slide-3
SLIDE 3

I am a developer. Why does my system behave in a certain manner? Motivating question

3

slide-4
SLIDE 4 src : 2, dst : 0, timestamp : 16, type : prepare src : 2, dst : 1, timestamp : 17, type : prepare src : 0, dst : 2, timestamp : 18, type : commit src : 1, dst : 2, timestamp : 19, type : commit src : 2, dst : 0, timestamp : 20, type : tx_commit src : 2, dst : 1, timestamp : 21, type : tx_commit src : 0, dst : 2, timestamp : 22, type : ack src : 1, dst : 2, timestamp : 23, type : ack src : 2, dst : 0, timestamp : 0, type : prepare src : 2, dst : 1, timestamp : 1, type : prepare src : 0, dst : 2, timestamp : 2, type : commit src : 1, dst : 2, timestamp : 3, type : commit src : 2, dst : 0, timestamp : 4, type : tx_commit src : 2, dst : 1, timestamp : 5, type : tx_commit src : 0, dst : 2, timestamp : 6, type : ack src : 1, dst : 2, timestamp : 7, type : ack src : 2, dst : 0, timestamp : 8, type : prepare src : 2, dst : 1, timestamp : 9, type : prepare src : 0, dst : 2, timestamp : 10, type : commit src : 1, dst : 2, timestamp : 11, type : commit src : 2, dst : 0, timestamp : 12, type : tx_commit src : 2, dst : 1, timestamp : 13, type : tx_commit src : 0, dst : 2, timestamp : 14, type : ack src : 1, dst : 2, timestamp : 15, type : ack src : 2, dst : 0, timestamp : 16, type : prepare src : 2, dst : 1, timestamp : 17, type : prepare src : 0, dst : 2, timestamp : 18, type : commit src : 1, dst : 2, timestamp : 19, type : commit src : 2, dst : 0, timestamp : 20, type : tx_commit src : 2, dst : 1, timestamp : 21, type : tx_commit src : 0, dst : 2, timestamp : 22, type : ack src : 1, dst : 2, timestamp : 23, type : ack src : 2, dst : 0, timestamp : 0, type : prepare src : 2, dst : 1, timestamp : 1, type : prepare src : 0, dst : 2, timestamp : 2, type : commit src : 1, dst : 2, timestamp : 3, type : commit src : 2, dst : 0, timestamp : 4, type : tx_commit src : 2, dst : 1, timestamp : 5, type : tx_commit src : 0, dst : 2, timestamp : 6, type : ack src : 1, dst : 2, timestamp : 7, type : ack src : 2, dst : 0, timestamp : 8, type : prepare src : 2, dst : 1, timestamp : 9, type : prepare

(IN

Specification Code Log

src : 2, dst : 0, timestamp : 16, type : prepare src : 2, dst : 1, timestamp : 17, type : prepare src : 0, dst : 2, timestamp : 18, type : commit src : 1, dst : 2, timestamp : 19, type : commit src : 2, dst : 0, timestamp : 20, type : tx_commit src : 2, dst : 1, timestamp : 21, type : tx_commit src : 0, dst : 2, timestamp : 22, type : ack src : 1, dst : 2, timestamp : 23, type : ack src : 2, dst : 0, timestamp : 0, type : prepare src : 2, dst : 1, timestamp : 1, type : prepare src : 0, dst : 2, timestamp : 2, type : commit src : 1, dst : 2, timestamp : 3, type : commit src : 2, dst : 0, timestamp : 4, type : tx_commit src : 2, dst : 1, timestamp : 5, type : tx_commit src : 0, dst : 2, timestamp : 6, type : ack src : 1, dst : 2, timestamp : 7, type : ack src : 2, dst : 0, timestamp : 8, type : prepare src : 2, dst : 1, timestamp : 9, type : prepare src : 0, dst : 2, timestamp : 10, type : commit src : 1, dst : 2, timestamp : 11, type : commit src : 2, dst : 0, timestamp : 12, type : tx_commit src : 2, dst : 1, timestamp : 13, type : tx_commit src : 0, dst : 2, timestamp : 14, type : ack src : 1, dst : 2, timestamp : 15, type : ack src : 2, dst : 0, timestamp : 16, type : prepare src : 2, dst : 1, timestamp : 17, type : prepare src : 0, dst : 2, timestamp : 18, type : commit src : 1, dst : 2, timestamp : 19, type : commit src : 2, dst : 0, timestamp : 20, type : tx_commit src : 2, dst : 1, timestamp : 21, type : tx_commit src : 0, dst : 2, timestamp : 22, type : ack src : 1, dst : 2, timestamp : 23, type : ack src : 2, dst : 0, timestamp : 0, type : prepare src : 2, dst : 1, timestamp : 1, type : prepare src : 0, dst : 2, timestamp : 2, type : commit src : 1, dst : 2, timestamp : 3, type : commit src : 2, dst : 0, timestamp : 4, type : tx_commit src : 2, dst : 1, timestamp : 5, type : tx_commit

...

Study the relevant artifacts

One answer is to...

4

slide-5
SLIDE 5 src : 2, dst : 0, timestamp : 16, type : prepare src : 2, dst : 1, timestamp : 17, type : prepare src : 0, dst : 2, timestamp : 18, type : commit src : 1, dst : 2, timestamp : 19, type : commit src : 2, dst : 0, timestamp : 20, type : tx_commit src : 2, dst : 1, timestamp : 21, type : tx_commit src : 0, dst : 2, timestamp : 22, type : ack src : 1, dst : 2, timestamp : 23, type : ack src : 2, dst : 0, timestamp : 0, type : prepare src : 2, dst : 1, timestamp : 1, type : prepare src : 0, dst : 2, timestamp : 2, type : commit src : 1, dst : 2, timestamp : 3, type : commit src : 2, dst : 0, timestamp : 4, type : tx_commit src : 2, dst : 1, timestamp : 5, type : tx_commit src : 0, dst : 2, timestamp : 6, type : ack src : 1, dst : 2, timestamp : 7, type : ack src : 2, dst : 0, timestamp : 8, type : prepare src : 2, dst : 1, timestamp : 9, type : prepare src : 0, dst : 2, timestamp : 10, type : commit src : 1, dst : 2, timestamp : 11, type : commit src : 2, dst : 0, timestamp : 12, type : tx_commit src : 2, dst : 1, timestamp : 13, type : tx_commit src : 0, dst : 2, timestamp : 14, type : ack src : 1, dst : 2, timestamp : 15, type : ack src : 2, dst : 0, timestamp : 16, type : prepare src : 2, dst : 1, timestamp : 17, type : prepare src : 0, dst : 2, timestamp : 18, type : commit src : 1, dst : 2, timestamp : 19, type : commit src : 2, dst : 0, timestamp : 20, type : tx_commit src : 2, dst : 1, timestamp : 21, type : tx_commit src : 0, dst : 2, timestamp : 22, type : ack src : 1, dst : 2, timestamp : 23, type : ack src : 2, dst : 0, timestamp : 0, type : prepare src : 2, dst : 1, timestamp : 1, type : prepare src : 0, dst : 2, timestamp : 2, type : commit src : 1, dst : 2, timestamp : 3, type : commit src : 2, dst : 0, timestamp : 4, type : tx_commit src : 2, dst : 1, timestamp : 5, type : tx_commit src : 0, dst : 2, timestamp : 6, type : ack src : 1, dst : 2, timestamp : 7, type : ack src : 2, dst : 0, timestamp : 8, type : prepare src : 2, dst : 1, timestamp : 9, type : prepare src : 0, dst : 2, timestamp : 10, type : commit src : 1, dst : 2, timestamp : 11, type : commit src : 2, dst : 0, timestamp : 12, type : tx_commit s src : 2, dst : 0, timestamp : 16, type : prepare src : 2, dst : 1, timestamp : 17, type : prepare src : 0, dst : 2, timestamp : 18, type : commit src : 1, dst : 2, timestamp : 19, type : commit src : 2, dst : 0, timestamp : 20, type : tx_commit src : 2, dst : 1, timestamp : 21, type : tx_commit src : 0, dst : 2, timestamp : 22, type : ack src : 1, dst : 2, timestamp : 23, type : ack src : 2, dst : 0, timestamp : 0, type : prepare src : 2, dst : 1, timestamp : 1, type : prepare src : 0, dst : 2, timestamp : 2, type : commit src : 1, dst : 2, timestamp : 3, type : commit src : 2, dst : 0, timestamp : 4, type : tx_commit src : 2, dst : 1, timestamp : 5, type : tx_commit src : 0, dst : 2, timestamp : 6, type : ack src : 1, dst : 2, timestamp : 7, type : ack src : 2, dst : 0, timestamp : 8, type : prepare src : 2, dst : 1, timestamp : 9, type : prepare src : 0, dst : 2, timestamp : 10, type : commit src : 1, dst : 2, timestamp : 11, type : commit src : 2, dst : 0, timestamp : 12, type : tx_commit src : 2, dst : 1, timestamp : 13, type : tx_commit src : 0, dst : 2, timestamp : 14, type : ack src : 1, dst : 2, timestamp : 15, type : ack src : 2, dst : 0, timestamp : 16, type : prepare src : 2, dst : 1, timestamp : 17, type : prepare src : 0, dst : 2, timestamp : 18, type : commit src : 1, dst : 2, timestamp : 19, type : commit src : 2, dst : 0, timestamp : 20, type : tx_commit src : 2, dst : 1, timestamp : 21, type : tx_commit src : 0, dst : 2, timestamp : 22, type : ack src : 1, dst : 2, timestamp : 23, type : ack src : 2, dst : 0, timestamp : 0, type : prepare src : 2, dst : 1, timestamp : 1, type : prepare src : 0, dst : 2, timestamp : 2, type : commit src : 1, dst : 2, timestamp : 3, type : commit src : 2, dst : 0, timestamp : 4, type : tx_commit src : 2, dst : 1, timestamp : 5, type : tx_commit src : 0, dst : 2, timestamp : 6, type : ack src : 1, dst : 2, timestamp : 7, type : ack src : 2, dst : 0, timestamp : 8, type : prepare src : 2, dst : 1, timestamp : 9, type : prepare src : 0, dst : 2, timestamp : 10, type : commit src : 1, dst : 2, timestamp : 11, type : commit src : 2, dst : 0, timestamp : 12, type : tx_commit src : 2, dst : 1, timestamp : 13, type : tx_commit src : 0, dst : 2, timestamp : 14, type : ack src : 1, dst : 2, timestamp : 15, type : ack src : 2, dst : 0, timestamp : 16, type : prepare src : 2, dst : 1, timestamp : 17, type : prepare src : 0, dst : 2, timestamp : 18, type : commit src : 1, dst : 2, timestamp : 19, type : commit

7

Models Logs

Hard to Create

Manually defined

Easy to Use Easy to Create Hard to Use

src : 2, dst : 0, timestamp : 16, type : prepare src : 2, dst : 1, timestamp : 17, type : prepare src : 0, dst : 2, timestamp : 18, type : commit src : 1, dst : 2, timestamp : 19, type : commit src : 2, dst : 0, timestamp : 20, type : tx_commit src : 2, dst : 1, timestamp : 21, type : tx_commit src : 0, dst : 2, timestamp : 22, type : ack src : 1, dst : 2, timestamp : 23, type : ack src : 2, dst : 0, timestamp : 0, type : prepare src : 2, dst : 1, timestamp : 1, type : prepare src : 0, dst : 2, timestamp : 2, type : commit src : 1, dst : 2, timestamp : 3, type : commit src : 2, dst : 0, timestamp : 4, type : tx_commit src : 2, dst : 1, timestamp : 5, type : tx_commit src : 0, dst : 2, timestamp : 6, type : ack src : 1, dst : 2, timestamp : 7, type : ack src : 2, dst : 0, timestamp : 8, type : prepare src : 2, dst : 1, timestamp : 9, type : prepare src : 0, dst : 2, timestamp : 10, type : commit src : 1, dst : 2, timestamp : 11, type : commit src : 2, dst : 0, timestamp : 12, type : tx_commit src : 2, dst : 1, timestamp : 13, type : tx_commit src : 0, dst : 2, timestamp : 14, type : ack src : 1, dst : 2, timestamp : 15, type : ack src : 2, dst : 0, timestamp : 16, type : prepare src : 2, dst : 1, timestamp : 17, type : prepare src : 0, dst : 2, timestamp : 18, type : commit src : 1, dst : 2, timestamp : 19, type : commit src : 2, dst : 0, timestamp : 20, type : tx_commit src : 2, dst : 1, timestamp : 21, type : tx_commit src : 0, dst : 2, timestamp : 22, type : ack src : 1, dst : 2, timestamp : 23, type : ack src : 2, dst : 0, timestamp : 0, type : prepare src : 2, dst : 1, timestamp : 1, type : prepare src : 0, dst : 2, timestamp : 2, type : commit src : 1, dst : 2, timestamp : 3, type : commit src : 2, dst : 0, timestamp : 4, type : tx_commit src : 2, dst : 1, timestamp : 5, type : tx_commit src : 0, dst : 2, timestamp : 6, type : ack src : 1, dst : 2, timestamp : 7, type : ack src : 2, dst : 0, timestamp : 8, type : prepare src : 2, dst : 1, timestamp : 9, type : prepare src : 0, dst : 2, timestamp : 10, type : commit src : 1, dst : 2, timestamp : 11, type : commit src : 2, dst : 0, timestamp : 12, type : tx_commit src : 2, dst : 1, timestamp : 13, type : tx_commit src : 0, dst : 2, timestamp : 14, type : ack src : 1, dst : 2, timestamp : 15, type : ack src : 2, dst : 0, timestamp : 16, type : prepare src : 2, dst : 1, timestamp : 17, type : prepare src : 0, dst : 2, timestamp : 18, type : commit src : 1, dst : 2, timestamp : 19, type : commit

Concise and exact

...

Trivial instrumentation A low-level view

7

slide-6
SLIDE 6 src : 2, dst : 0, timestamp : 16, type : prepare src : 2, dst : 1, timestamp : 17, type : prepare src : 0, dst : 2, timestamp : 18, type : commit src : 1, dst : 2, timestamp : 19, type : commit src : 2, dst : 0, timestamp : 20, type : tx_commit src : 2, dst : 1, timestamp : 21, type : tx_commit src : 0, dst : 2, timestamp : 22, type : ack src : 1, dst : 2, timestamp : 23, type : ack src : 2, dst : 0, timestamp : 0, type : prepare src : 2, dst : 1, timestamp : 1, type : prepare src : 0, dst : 2, timestamp : 2, type : commit src : 1, dst : 2, timestamp : 3, type : commit src : 2, dst : 0, timestamp : 4, type : tx_commit src : 2, dst : 1, timestamp : 5, type : tx_commit src : 0, dst : 2, timestamp : 6, type : ack src : 1, dst : 2, timestamp : 7, type : ack src : 2, dst : 0, timestamp : 8, type : prepare src : 2, dst : 1, timestamp : 9, type : prepare src : 0, dst : 2, timestamp : 10, type : commit src : 1, dst : 2, timestamp : 11, type : commit src : 2, dst : 0, timestamp : 12, type : tx_commit src : 2, dst : 1, timestamp : 13, type : tx_commit src : 0, dst : 2, timestamp : 14, type : ack src : 1, dst : 2, timestamp : 15, type : ack src : 2, dst : 0, timestamp : 16, type : prepare src : 2, dst : 1, timestamp : 17, type : prepare src : 0, dst : 2, timestamp : 18, type : commit src : 1, dst : 2, timestamp : 19, type : commit src : 2, dst : 0, timestamp : 20, type : tx_commit src : 2, dst : 1, timestamp : 21, type : tx_commit src : 0, dst : 2, timestamp : 22, type : ack src : 1, dst : 2, timestamp : 23, type : ack src : 2, dst : 0, timestamp : 0, type : prepare src : 2, dst : 1, timestamp : 1, type : prepare src : 0, dst : 2, timestamp : 2, type : commit src : 1, dst : 2, timestamp : 3, type : commit src : 2, dst : 0, timestamp : 4, type : tx_commit src : 2, dst : 1, timestamp : 5, type : tx_commit src : 0, dst : 2, timestamp : 6, type : ack src : 1, dst : 2, timestamp : 7, type : ack src : 2, dst : 0, timestamp : 8, type : prepare src : 2, dst : 1, timestamp : 9, type : prepare src : 0, dst : 2, timestamp : 10, type : commit src : 1, dst : 2, timestamp : 11, type : commit src : 2, dst : 0, timestamp : 12, type : tx_commit s src : 2, dst : 0, timestamp : 16, type : prepare src : 2, dst : 1, timestamp : 17, type : prepare src : 0, dst : 2, timestamp : 18, type : commit src : 1, dst : 2, timestamp : 19, type : commit src : 2, dst : 0, timestamp : 20, type : tx_commit src : 2, dst : 1, timestamp : 21, type : tx_commit src : 0, dst : 2, timestamp : 22, type : ack src : 1, dst : 2, timestamp : 23, type : ack src : 2, dst : 0, timestamp : 0, type : prepare src : 2, dst : 1, timestamp : 1, type : prepare src : 0, dst : 2, timestamp : 2, type : commit src : 1, dst : 2, timestamp : 3, type : commit src : 2, dst : 0, timestamp : 4, type : tx_commit src : 2, dst : 1, timestamp : 5, type : tx_commit src : 0, dst : 2, timestamp : 6, type : ack src : 1, dst : 2, timestamp : 7, type : ack src : 2, dst : 0, timestamp : 8, type : prepare src : 2, dst : 1, timestamp : 9, type : prepare src : 0, dst : 2, timestamp : 10, type : commit src : 1, dst : 2, timestamp : 11, type : commit src : 2, dst : 0, timestamp : 12, type : tx_commit src : 2, dst : 1, timestamp : 13, type : tx_commit src : 0, dst : 2, timestamp : 14, type : ack src : 1, dst : 2, timestamp : 15, type : ack src : 2, dst : 0, timestamp : 16, type : prepare src : 2, dst : 1, timestamp : 17, type : prepare src : 0, dst : 2, timestamp : 18, type : commit src : 1, dst : 2, timestamp : 19, type : commit src : 2, dst : 0, timestamp : 20, type : tx_commit src : 2, dst : 1, timestamp : 21, type : tx_commit src : 0, dst : 2, timestamp : 22, type : ack src : 1, dst : 2, timestamp : 23, type : ack src : 2, dst : 0, timestamp : 0, type : prepare src : 2, dst : 1, timestamp : 1, type : prepare src : 0, dst : 2, timestamp : 2, type : commit src : 1, dst : 2, timestamp : 3, type : commit src : 2, dst : 0, timestamp : 4, type : tx_commit src : 2, dst : 1, timestamp : 5, type : tx_commit src : 0, dst : 2, timestamp : 6, type : ack src : 1, dst : 2, timestamp : 7, type : ack src : 2, dst : 0, timestamp : 8, type : prepare src : 2, dst : 1, timestamp : 9, type : prepare src : 0, dst : 2, timestamp : 10, type : commit src : 1, dst : 2, timestamp : 11, type : commit src : 2, dst : 0, timestamp : 12, type : tx_commit src : 2, dst : 1, timestamp : 13, type : tx_commit src : 0, dst : 2, timestamp : 14, type : ack src : 1, dst : 2, timestamp : 15, type : ack src : 2, dst : 0, timestamp : 16, type : prepare src : 2, dst : 1, timestamp : 17, type : prepare src : 0, dst : 2, timestamp : 18, type : commit src : 1, dst : 2, timestamp : 19, type : commit

8

Models Logs

Hard to Create

Manually defined

Easy to Use Easy to Create Hard to Use

src : 2, dst : 0, timestamp : 16, type : prepare src : 2, dst : 1, timestamp : 17, type : prepare src : 0, dst : 2, timestamp : 18, type : commit src : 1, dst : 2, timestamp : 19, type : commit src : 2, dst : 0, timestamp : 20, type : tx_commit src : 2, dst : 1, timestamp : 21, type : tx_commit src : 0, dst : 2, timestamp : 22, type : ack src : 1, dst : 2, timestamp : 23, type : ack src : 2, dst : 0, timestamp : 0, type : prepare src : 2, dst : 1, timestamp : 1, type : prepare src : 0, dst : 2, timestamp : 2, type : commit src : 1, dst : 2, timestamp : 3, type : commit src : 2, dst : 0, timestamp : 4, type : tx_commit src : 2, dst : 1, timestamp : 5, type : tx_commit src : 0, dst : 2, timestamp : 6, type : ack src : 1, dst : 2, timestamp : 7, type : ack src : 2, dst : 0, timestamp : 8, type : prepare src : 2, dst : 1, timestamp : 9, type : prepare src : 0, dst : 2, timestamp : 10, type : commit src : 1, dst : 2, timestamp : 11, type : commit src : 2, dst : 0, timestamp : 12, type : tx_commit src : 2, dst : 1, timestamp : 13, type : tx_commit src : 0, dst : 2, timestamp : 14, type : ack src : 1, dst : 2, timestamp : 15, type : ack src : 2, dst : 0, timestamp : 16, type : prepare src : 2, dst : 1, timestamp : 17, type : prepare src : 0, dst : 2, timestamp : 18, type : commit src : 1, dst : 2, timestamp : 19, type : commit src : 2, dst : 0, timestamp : 20, type : tx_commit src : 2, dst : 1, timestamp : 21, type : tx_commit src : 0, dst : 2, timestamp : 22, type : ack src : 1, dst : 2, timestamp : 23, type : ack src : 2, dst : 0, timestamp : 0, type : prepare src : 2, dst : 1, timestamp : 1, type : prepare src : 0, dst : 2, timestamp : 2, type : commit src : 1, dst : 2, timestamp : 3, type : commit src : 2, dst : 0, timestamp : 4, type : tx_commit src : 2, dst : 1, timestamp : 5, type : tx_commit src : 0, dst : 2, timestamp : 6, type : ack src : 1, dst : 2, timestamp : 7, type : ack src : 2, dst : 0, timestamp : 8, type : prepare src : 2, dst : 1, timestamp : 9, type : prepare src : 0, dst : 2, timestamp : 10, type : commit src : 1, dst : 2, timestamp : 11, type : commit src : 2, dst : 0, timestamp : 12, type : tx_commit src : 2, dst : 1, timestamp : 13, type : tx_commit src : 0, dst : 2, timestamp : 14, type : ack src : 1, dst : 2, timestamp : 15, type : ack src : 2, dst : 0, timestamp : 16, type : prepare src : 2, dst : 1, timestamp : 17, type : prepare src : 0, dst : 2, timestamp : 18, type : commit src : 1, dst : 2, timestamp : 19, type : commit

Concise and exact

...

Trivial instrumentation A low-level view

8

slide-7
SLIDE 7 src : 2, dst : 0, timestamp : 4, type : tx_commit src : 2, dst : 1, timestamp : 5, type : tx_commit src : 0, dst : 2, timestamp : 6, type : ack src : 1, dst : 2, timestamp : 7, type : ack src : 2, dst : 0, timestamp : 8, type : prepare src : 2, dst : 1, timestamp : 9, type : prepare src : 0, dst : 2, timestamp : 10, type : commit src : 1, dst : 2, timestamp : 11, type : commit src : 2, dst : 0, timestamp : 12, type : tx_commit src : 2, dst : 1, timestamp : 13, type : tx_commit src : 0, dst : 2, timestamp : 14, type : ack src : 1, dst : 2, timestamp : 15, type : ack src : 2, dst : 0, timestamp : 16, type : prepare src : 2, dst : 1, timestamp : 17, type : prepare src : 0, dst : 2, timestamp : 18, type : commit src : 1, dst : 2, timestamp : 19, type : commit src : 2, dst : 0, timestamp : 20, type : tx_commit src : 2, dst : 1, timestamp : 21, type : tx_commit src : 0, dst : 2, timestamp : 22, type : ack src : 1, dst : 2, timestamp : 23, type : ack src : 2, dst : 0, timestamp : 0, type : prepare src : 2, dst : 1, timestamp : 1, type : prepare src : 0, dst : 2, timestamp : 2, type : commit src : 1, dst : 2, timestamp : 3, type : commit src : 2, dst : 0, timestamp : 4, type : tx_commit src : 2, dst : 1, timestamp : 5, type : tx_commit src : 0, dst : 2, timestamp : 6, type : ack src : 1, dst : 2, timestamp : 7, type : ack src : 2, dst : 0, timestamp : 8, type : prepare src : 2, dst : 1, timestamp : 9, type : prepare src : 0, dst : 2, timestamp : 10, type : commit src : 1, dst : 2, timestamp : 11, type : commit src : 2, dst : 0, timestamp : 12, type : tx_commit src : 2, dst : 1, timestamp : 13, type : tx_commit src : 0, dst : 2, timestamp : 14, type : ack src : 1, dst : 2, timestamp : 15, type : ack src : 2, dst : 0, timestamp : 16, type : prepare src : 2, dst : 1, timestamp : 17, type : prepare src : 0, dst : 2, timestamp : 18, type : commit src : 1, dst : 2, timestamp : 19, type : commit src : 2, dst : 0, timestamp : 20, type : tx_commit src : 2, dst : 1, timestamp : 21, type : tx_commit src : 0, dst : 2, timestamp : 22, type : ack src : 1, dst : 2, timestamp : 23, type : ack src : 2, dst : 0, timestamp : 0, type : prepare src : 2, dst : 1, timestamp : 1, type : prepare src : 0, dst : 2, timestamp : 2, type : commit src : 1, dst : 2, timestamp : 3, type : commit src : 2, dst : 0, timestamp : 4, type : tx_commit src : 2, dst : 1, timestamp : 5, type : tx_commit src : 0, dst : 2, timestamp : 6, type : ack src : 1, dst : 2, timestamp : 7, type : ack src : 2, dst : 0, timestamp : 8, type : prepare src : 2, dst : 1, timestamp : 9, type : prepare src : 0, dst : 2, timestamp : 10, type : commit src : 1, dst : 2, timestamp : 11, type : commit src : 2, dst : 0, timestamp : 12, type : tx_commit src : 2, dst : 1, timestamp : 13, type : tx_commit src : 0, dst : 2, timestamp : 14, type : ack src : 1, dst : 2, timestamp : 15, type : ack src : 2, dst : 0, timestamp : 16, type : prepare src : 2, dst : 1, timestamp : 17, type : prepare src : 0, dst : 2, timestamp : 18, type : commit src : 1, dst : 2, timestamp : 19, type : commit src : 2, dst : 0, timestamp : 20, type : tx_commit src : 2, dst : 1, timestamp : 21, type : tx_commit src : 0, dst : 2, timestamp : 22, type : ack src : 1, dst : 2, timestamp : 23, type : ack src : 2, dst : 0, timestamp : 0, type : prepare src : 2, dst : 1, timestamp : 1, type : prepare src : 0, dst : 2, timestamp : 2, type : commit src : 1, dst : 2, timestamp : 3, type : commit src : 2, dst : 0, timestamp : 4, type : tx_commit src : 2, dst : 1, timestamp : 5, type : tx_commit src : 0, dst : 2, timestamp : 6, type : ack src : 1, dst : 2, timestamp : 7, type : ack src : 2, dst : 0, timestamp : 8, type : prepare src : 2, dst : 1, timestamp : 9, type : prepare src : 0, dst : 2, timestamp : 10, type : commit src : 1, dst : 2, timestamp : 11, type : commit src : 2, dst : 0, timestamp : 12, type : tx_commit src : 2, dst : 1, timestamp : 13, type : tx_commit src : 0, dst : 2, timestamp : 14, type : ack src : 1, dst : 2, timestamp : 15, type : ack src : 2, dst : 0, timestamp : 16, type : prepare src : 2, dst : 1, timestamp : 17, type : prepare src : 0, dst : 2, timestamp : 18, type : commit src : 1, dst : 2, timestamp : 19, type : commit src : 2, dst : 0, timestamp : 20, type : tx_commit src : 2, dst : 1, timestamp : 21, type : tx_commit src : 0, dst : 2, timestamp : 22, type : ack src : 1, dst : 2, timestamp : 23, type : ack src : 2, dst : 0, timestamp : 0, type : prepare src : 2, dst : 1, timestamp : 1, type : prepare src : 0, dst : 2, timestamp : 2, type : commit src : 1, dst : 2, timestamp : 3, type : commit src : 2, dst : 0, timestamp : 4, type : tx_commit src : 2, dst : 1, timestamp : 5, type : tx_commit src : 0, dst : 2, timestamp : 6, type : ack src : 1, dst : 2, timestamp : 7, type : ack src : 2, dst : 0, timestamp : 8, type : prepare src : 2, dst : 1, timestamp : 9, type : prepare src : 0, dst : 2, timestamp : 10, type : commit src : 1, dst : 2, timestamp : 11, type : commit src : 2, dst : 0, timestamp : 12, type : tx_commit src : 2, dst : 1, timestamp : 13, type : tx_commit src : 0, dst : 2, timestamp : 14, type : ack src : 1, dst : 2, timestamp : 15, type : ack src : 2, dst : 0, timestamp : 16, type : prepare src : 2, dst : 1, timestamp : 17, type : prepare src : 0, dst : 2, timestamp : 18, type : commit src : 1, dst : 2, timestamp : 19, type : commit src : 2, dst : 0, timestamp : 20, type : tx_commit src : 2, dst : 1, timestamp : 21, type : tx_commit src : 0, dst : 2, timestamp : 22, type : ack src : 1, dst : 2, timestamp : 23, type : ack src : 2, dst : 0, timestamp : 4, type : tx_commit src : 2, dst : 1, timestamp : 5, type : tx_commit src : 2, dst : 0, timestamp : 0, type : prepare src : 2, dst : 1, timestamp : 1, type : prepare src : 0, dst : 2, timestamp : 2, type : commit src : 1, dst : 2, timestamp : 3, type : commit src : 2, dst : 0, timestamp : 4, type : tx_commit src : 2, dst : 1, timestamp : 5, type : tx_commit src : 0, dst : 2, timestamp : 6, type : ack src : 1, dst : 2, timestamp : 7, type : ack src : 2, dst : 0, timestamp : 8, type : prepare src : 2, dst : 1, timestamp : 9, type : prepare src : 0, dst : 2, timestamp : 10, type : commit src : 1, dst : 2, timestamp : 11, type : commit src : 2, dst : 0, timestamp : 12, type : tx_commit src : 2, dst : 1, timestamp : 13, type : tx_commit src : 0, dst : 2, timestamp : 14, type : ack src : 1, dst : 2, timestamp : 15, type : ack src : 2, dst : 0, timestamp : 16, type : prepare src : 2, dst : 1, timestamp : 17, type : prepare src : 0, dst : 2, timestamp : 18, type : commit src : 1, dst : 2, timestamp : 19, type : commit src : 2, dst : 0, timestamp : 20, type : tx_commit src : 2, dst : 1, timestamp : 21, type : tx_commit src : 0, dst : 2, timestamp : 22, type : ack src : 1, dst : 2, timestamp : 23, type : ack src : 2, dst : 0, timestamp : 0, type : prepare src : 2, dst : 1, timestamp : 1, type : prepare src : 0, dst : 2, timestamp : 2, type : commit src : 1, dst : 2, timestamp : 3, type : commit src : 2, dst : 0, timestamp : 4, type : tx_commit src : 2, dst : 1, timestamp : 5, type : tx_commit src : 0, dst : 2, timestamp : 6, type : ack src : 1, dst : 2, timestamp : 7, type : ack src : 2, dst : 0, timestamp : 8, type : prepare src : 2, dst : 1, timestamp : 9, type : prepare src : 0, dst : 2, timestamp : 10, type : commit src : 1, dst : 2, timestamp : 11, type : commit src : 2, dst : 0, timestamp : 12, type : tx_commit src : 2, dst : 1, timestamp : 13, type : tx_commit src : 0, dst : 2, timestamp : 14, type : ack src : 1, dst : 2, timestamp : 15, type : ack src : 2, dst : 0, timestamp : 16, type : prepare src : 2, dst : 1, timestamp : 17, type : prepare src : 0, dst : 2, timestamp : 18, type : commit src : 1, dst : 2, timestamp : 19, type : commit src : 2, dst : 0, timestamp : 20, type : tx_commit src : 2, dst : 1, timestamp : 21, type : tx_commit src : 0, dst : 2, timestamp : 22, type : ack src : 1, dst : 2, timestamp : 23, type : ack src : 2, dst : 0, timestamp : 0, type : prepare src : 2, dst : 1, timestamp : 1, type : prepare src : 0, dst : 2, timestamp : 2, type : commit src : 1, dst : 2, timestamp : 3, type : commit src : 2, dst : 0, timestamp : 4, type : tx_commit src : 2, dst : 1, timestamp : 5, type : tx_commit src : 0, dst : 2, timestamp : 6, type : ack src : 1, dst : 2, timestamp : 7, type : ack src : 2, dst : 0, timestamp : 8, type : prepare src : 2, dst : 1, timestamp : 9, type : prepare src : 0, dst : 2, timestamp : 10, type : commit src : 1, dst : 2, timestamp : 11, type : commit src : 2, dst : 0, timestamp : 12, type : tx_commit src : 2, dst : 1, timestamp : 13, type : tx_commit src : 0, dst : 2, timestamp : 14, type : ack src : 1, dst : 2, timestamp : 15, type : ack src : 2, dst : 0, timestamp : 16, type : prepare src : 2, dst : 1, timestamp : 17, type : prepare src : 0, dst : 2, timestamp : 18, type : commit src : 1, dst : 2, timestamp : 19, type : commit src : 2, dst : 0, timestamp : 20, type : tx_commit src : 2, dst : 1, timestamp : 21, type : tx_commit src : 0, dst : 2, timestamp : 22, type : ack src : 1, dst : 2, timestamp : 23, type : ack src : 2, dst : 0, timestamp : 0, type : prepare src : 2, dst : 1, timestamp : 1, type : prepare src : 0, dst : 2, timestamp : 2, type : commit src : 1, dst : 2, timestamp : 3, type : commit src : 2, dst : 0, timestamp : 4, type : tx_commit src : 2, dst : 1, timestamp : 5, type : tx_commit src : 0, dst : 2, timestamp : 6, type : ack src : 1, dst : 2, timestamp : 7, type : ack src : 2, dst : 0, timestamp : 8, type : prepare src : 2, dst : 1, timestamp : 9, type : prepare src : 0, dst : 2, timestamp : 10, type : commit src : 1, dst : 2, timestamp : 11, type : commit src : 2, dst : 0, timestamp : 12, type : tx_commit src : 2, dst : 1, timestamp : 13, type : tx_commit src : 0, dst : 2, timestamp : 14, type : ack src : 1, dst : 2, timestamp : 15, type : ack src : 2, dst : 0, timestamp : 16, type : prepare src : 2, dst : 1, timestamp : 17, type : prepare src : 0, dst : 2, timestamp : 18, type : commit src : 1, dst : 2, timestamp : 19, type : commit src : 2, dst : 0, timestamp : 20, type : tx_commit src : 2, dst : 1, timestamp : 21, type : tx_commit src : 0, dst : 2, timestamp : 22, type : ack src : 1, dst : 2, timestamp : 23, type : ack src : 2, dst : 0, timestamp : 16, type : prepare src : 2, dst : 1, timestamp : 17, type : prepare src : 0, dst : 2, timestamp : 18, type : commit src : 1, dst : 2, timestamp : 19, type : commit src : 2, dst : 0, timestamp : 20, type : tx_commit src : 2, dst : 1, timestamp : 21, type : tx_commit src : 0, dst : 2, timestamp : 22, type : ack src : 1, dst : 2, timestamp : 23, type : ack src : 1, dst : 2, timestamp : 19, type : commit

Bridging logging and modeling

9

Input

...

Output

  • Specification mining
  • Process discovery
  • Model inference

Tool

Dallmeier et al. WODA 2006

Prior work:

Cook et al. TSE 1998 Lo et al. ASE 2010

9

slide-8
SLIDE 8 src : 2, dst : 0, timestamp : 4, type : tx_commit src : 2, dst : 1, timestamp : 5, type : tx_commit src : 0, dst : 2, timestamp : 6, type : ack src : 1, dst : 2, timestamp : 7, type : ack src : 2, dst : 0, timestamp : 8, type : prepare src : 2, dst : 1, timestamp : 9, type : prepare src : 0, dst : 2, timestamp : 10, type : commit src : 1, dst : 2, timestamp : 11, type : commit src : 2, dst : 0, timestamp : 12, type : tx_commit src : 2, dst : 1, timestamp : 13, type : tx_commit src : 0, dst : 2, timestamp : 14, type : ack src : 1, dst : 2, timestamp : 15, type : ack src : 2, dst : 0, timestamp : 16, type : prepare src : 2, dst : 1, timestamp : 17, type : prepare src : 0, dst : 2, timestamp : 18, type : commit src : 1, dst : 2, timestamp : 19, type : commit src : 2, dst : 0, timestamp : 20, type : tx_commit src : 2, dst : 1, timestamp : 21, type : tx_commit src : 0, dst : 2, timestamp : 22, type : ack src : 1, dst : 2, timestamp : 23, type : ack src : 2, dst : 0, timestamp : 0, type : prepare src : 2, dst : 1, timestamp : 1, type : prepare src : 0, dst : 2, timestamp : 2, type : commit src : 1, dst : 2, timestamp : 3, type : commit src : 2, dst : 0, timestamp : 4, type : tx_commit src : 2, dst : 1, timestamp : 5, type : tx_commit src : 0, dst : 2, timestamp : 6, type : ack src : 1, dst : 2, timestamp : 7, type : ack src : 2, dst : 0, timestamp : 8, type : prepare src : 2, dst : 1, timestamp : 9, type : prepare src : 0, dst : 2, timestamp : 10, type : commit src : 1, dst : 2, timestamp : 11, type : commit src : 2, dst : 0, timestamp : 12, type : tx_commit src : 2, dst : 1, timestamp : 13, type : tx_commit src : 0, dst : 2, timestamp : 14, type : ack src : 1, dst : 2, timestamp : 15, type : ack src : 2, dst : 0, timestamp : 16, type : prepare src : 2, dst : 1, timestamp : 17, type : prepare src : 0, dst : 2, timestamp : 18, type : commit src : 1, dst : 2, timestamp : 19, type : commit src : 2, dst : 0, timestamp : 20, type : tx_commit src : 2, dst : 1, timestamp : 21, type : tx_commit src : 0, dst : 2, timestamp : 22, type : ack src : 1, dst : 2, timestamp : 23, type : ack src : 2, dst : 0, timestamp : 0, type : prepare src : 2, dst : 1, timestamp : 1, type : prepare src : 0, dst : 2, timestamp : 2, type : commit src : 1, dst : 2, timestamp : 3, type : commit src : 2, dst : 0, timestamp : 4, type : tx_commit src : 2, dst : 1, timestamp : 5, type : tx_commit src : 0, dst : 2, timestamp : 6, type : ack src : 1, dst : 2, timestamp : 7, type : ack src : 2, dst : 0, timestamp : 8, type : prepare src : 2, dst : 1, timestamp : 9, type : prepare src : 0, dst : 2, timestamp : 10, type : commit src : 1, dst : 2, timestamp : 11, type : commit src : 2, dst : 0, timestamp : 12, type : tx_commit src : 2, dst : 1, timestamp : 13, type : tx_commit src : 0, dst : 2, timestamp : 14, type : ack src : 1, dst : 2, timestamp : 15, type : ack src : 2, dst : 0, timestamp : 16, type : prepare src : 2, dst : 1, timestamp : 17, type : prepare src : 0, dst : 2, timestamp : 18, type : commit src : 1, dst : 2, timestamp : 19, type : commit src : 2, dst : 0, timestamp : 20, type : tx_commit src : 2, dst : 1, timestamp : 21, type : tx_commit src : 0, dst : 2, timestamp : 22, type : ack src : 1, dst : 2, timestamp : 23, type : ack src : 2, dst : 0, timestamp : 0, type : prepare src : 2, dst : 1, timestamp : 1, type : prepare src : 0, dst : 2, timestamp : 2, type : commit src : 1, dst : 2, timestamp : 3, type : commit src : 2, dst : 0, timestamp : 4, type : tx_commit src : 2, dst : 1, timestamp : 5, type : tx_commit src : 0, dst : 2, timestamp : 6, type : ack src : 1, dst : 2, timestamp : 7, type : ack src : 2, dst : 0, timestamp : 8, type : prepare src : 2, dst : 1, timestamp : 9, type : prepare src : 0, dst : 2, timestamp : 10, type : commit src : 1, dst : 2, timestamp : 11, type : commit src : 2, dst : 0, timestamp : 12, type : tx_commit src : 2, dst : 1, timestamp : 13, type : tx_commit src : 0, dst : 2, timestamp : 14, type : ack src : 1, dst : 2, timestamp : 15, type : ack src : 2, dst : 0, timestamp : 16, type : prepare src : 2, dst : 1, timestamp : 17, type : prepare src : 0, dst : 2, timestamp : 18, type : commit src : 1, dst : 2, timestamp : 19, type : commit src : 2, dst : 0, timestamp : 20, type : tx_commit src : 2, dst : 1, timestamp : 21, type : tx_commit src : 0, dst : 2, timestamp : 22, type : ack src : 1, dst : 2, timestamp : 23, type : ack src : 2, dst : 0, timestamp : 0, type : prepare src : 2, dst : 1, timestamp : 1, type : prepare src : 0, dst : 2, timestamp : 2, type : commit src : 1, dst : 2, timestamp : 3, type : commit src : 2, dst : 0, timestamp : 4, type : tx_commit src : 2, dst : 1, timestamp : 5, type : tx_commit src : 0, dst : 2, timestamp : 6, type : ack src : 1, dst : 2, timestamp : 7, type : ack src : 2, dst : 0, timestamp : 8, type : prepare src : 2, dst : 1, timestamp : 9, type : prepare src : 0, dst : 2, timestamp : 10, type : commit src : 1, dst : 2, timestamp : 11, type : commit src : 2, dst : 0, timestamp : 12, type : tx_commit src : 2, dst : 1, timestamp : 13, type : tx_commit src : 0, dst : 2, timestamp : 14, type : ack src : 1, dst : 2, timestamp : 15, type : ack src : 2, dst : 0, timestamp : 16, type : prepare src : 2, dst : 1, timestamp : 17, type : prepare src : 0, dst : 2, timestamp : 18, type : commit src : 1, dst : 2, timestamp : 19, type : commit src : 2, dst : 0, timestamp : 20, type : tx_commit src : 2, dst : 1, timestamp : 21, type : tx_commit src : 0, dst : 2, timestamp : 22, type : ack src : 1, dst : 2, timestamp : 23, type : ack src : 2, dst : 0, timestamp : 4, type : tx_commit src : 2, dst : 1, timestamp : 5, type : tx_commit src : 2, dst : 0, timestamp : 0, type : prepare src : 2, dst : 1, timestamp : 1, type : prepare src : 0, dst : 2, timestamp : 2, type : commit src : 1, dst : 2, timestamp : 3, type : commit src : 2, dst : 0, timestamp : 4, type : tx_commit src : 2, dst : 1, timestamp : 5, type : tx_commit src : 0, dst : 2, timestamp : 6, type : ack src : 1, dst : 2, timestamp : 7, type : ack src : 2, dst : 0, timestamp : 8, type : prepare src : 2, dst : 1, timestamp : 9, type : prepare src : 0, dst : 2, timestamp : 10, type : commit src : 1, dst : 2, timestamp : 11, type : commit src : 2, dst : 0, timestamp : 12, type : tx_commit src : 2, dst : 1, timestamp : 13, type : tx_commit src : 0, dst : 2, timestamp : 14, type : ack src : 1, dst : 2, timestamp : 15, type : ack src : 2, dst : 0, timestamp : 16, type : prepare src : 2, dst : 1, timestamp : 17, type : prepare src : 0, dst : 2, timestamp : 18, type : commit src : 1, dst : 2, timestamp : 19, type : commit src : 2, dst : 0, timestamp : 20, type : tx_commit src : 2, dst : 1, timestamp : 21, type : tx_commit src : 0, dst : 2, timestamp : 22, type : ack src : 1, dst : 2, timestamp : 23, type : ack src : 2, dst : 0, timestamp : 0, type : prepare src : 2, dst : 1, timestamp : 1, type : prepare src : 0, dst : 2, timestamp : 2, type : commit src : 1, dst : 2, timestamp : 3, type : commit src : 2, dst : 0, timestamp : 4, type : tx_commit src : 2, dst : 1, timestamp : 5, type : tx_commit src : 0, dst : 2, timestamp : 6, type : ack src : 1, dst : 2, timestamp : 7, type : ack src : 2, dst : 0, timestamp : 8, type : prepare src : 2, dst : 1, timestamp : 9, type : prepare src : 0, dst : 2, timestamp : 10, type : commit src : 1, dst : 2, timestamp : 11, type : commit src : 2, dst : 0, timestamp : 12, type : tx_commit src : 2, dst : 1, timestamp : 13, type : tx_commit src : 0, dst : 2, timestamp : 14, type : ack src : 1, dst : 2, timestamp : 15, type : ack src : 2, dst : 0, timestamp : 16, type : prepare src : 2, dst : 1, timestamp : 17, type : prepare src : 0, dst : 2, timestamp : 18, type : commit src : 1, dst : 2, timestamp : 19, type : commit src : 2, dst : 0, timestamp : 20, type : tx_commit src : 2, dst : 1, timestamp : 21, type : tx_commit src : 0, dst : 2, timestamp : 22, type : ack src : 1, dst : 2, timestamp : 23, type : ack src : 2, dst : 0, timestamp : 0, type : prepare src : 2, dst : 1, timestamp : 1, type : prepare src : 0, dst : 2, timestamp : 2, type : commit src : 1, dst : 2, timestamp : 3, type : commit src : 2, dst : 0, timestamp : 4, type : tx_commit src : 2, dst : 1, timestamp : 5, type : tx_commit src : 0, dst : 2, timestamp : 6, type : ack src : 1, dst : 2, timestamp : 7, type : ack src : 2, dst : 0, timestamp : 8, type : prepare src : 2, dst : 1, timestamp : 9, type : prepare src : 0, dst : 2, timestamp : 10, type : commit src : 1, dst : 2, timestamp : 11, type : commit src : 2, dst : 0, timestamp : 12, type : tx_commit src : 2, dst : 1, timestamp : 13, type : tx_commit src : 0, dst : 2, timestamp : 14, type : ack src : 1, dst : 2, timestamp : 15, type : ack src : 2, dst : 0, timestamp : 16, type : prepare src : 2, dst : 1, timestamp : 17, type : prepare src : 0, dst : 2, timestamp : 18, type : commit src : 1, dst : 2, timestamp : 19, type : commit src : 2, dst : 0, timestamp : 20, type : tx_commit src : 2, dst : 1, timestamp : 21, type : tx_commit src : 0, dst : 2, timestamp : 22, type : ack src : 1, dst : 2, timestamp : 23, type : ack src : 2, dst : 0, timestamp : 0, type : prepare src : 2, dst : 1, timestamp : 1, type : prepare src : 0, dst : 2, timestamp : 2, type : commit src : 1, dst : 2, timestamp : 3, type : commit src : 2, dst : 0, timestamp : 4, type : tx_commit src : 2, dst : 1, timestamp : 5, type : tx_commit src : 0, dst : 2, timestamp : 6, type : ack src : 1, dst : 2, timestamp : 7, type : ack src : 2, dst : 0, timestamp : 8, type : prepare src : 2, dst : 1, timestamp : 9, type : prepare src : 0, dst : 2, timestamp : 10, type : commit src : 1, dst : 2, timestamp : 11, type : commit src : 2, dst : 0, timestamp : 12, type : tx_commit src : 2, dst : 1, timestamp : 13, type : tx_commit src : 0, dst : 2, timestamp : 14, type : ack src : 1, dst : 2, timestamp : 15, type : ack src : 2, dst : 0, timestamp : 16, type : prepare src : 2, dst : 1, timestamp : 17, type : prepare src : 0, dst : 2, timestamp : 18, type : commit src : 1, dst : 2, timestamp : 19, type : commit src : 2, dst : 0, timestamp : 20, type : tx_commit src : 2, dst : 1, timestamp : 21, type : tx_commit src : 0, dst : 2, timestamp : 22, type : ack src : 1, dst : 2, timestamp : 23, type : ack src : 2, dst : 0, timestamp : 16, type : prepare src : 2, dst : 1, timestamp : 17, type : prepare src : 0, dst : 2, timestamp : 18, type : commit src : 1, dst : 2, timestamp : 19, type : commit src : 2, dst : 0, timestamp : 20, type : tx_commit src : 2, dst : 1, timestamp : 21, type : tx_commit src : 0, dst : 2, timestamp : 22, type : ack src : 1, dst : 2, timestamp : 23, type : ack src : 1, dst : 2, timestamp : 19, type : commit

How Synoptic works

10

Input

...

Output

propose commit tx-commit tx-abort abort commit abort

Does not require access to code Uses refinement instead of coarsening Finds a compact accurate model

Invariants

Mines and preserves temporal log invariants

10

slide-9
SLIDE 9

Use cases for Synoptic models

11

  • Log summarization
  • Mental model validation
  • Test case generation
  • Comparison to formal specifications
  • Evaluate test suite against actual usage
  • Verifying a code fix

11

slide-10
SLIDE 10
  • Motivation
  • Synoptic’s design
  • Evaluation results
  • Future work
  • Conclusion

Talk outline

12

12

slide-11
SLIDE 11

Synoptic inputs

13

  • 1. Log file
  • 2. Regular expressions to parse the log file

13

slide-12
SLIDE 12

Two phase commit protocol log

14

  • 1. Log file

Two phase commit protocol log

  • I. Manager proposes a transaction (TX),

each replica replies with an abort or a commit.

  • II. Manager sends

i) TX commit if all replicas commit ii) TX abort otherwise Manager maintains a totally ordered log of events for all transactions in the system

src : 2, dst : 0, timestamp : 0, type : prepare src : 2, dst : 1, timestamp : 1, type : prepare src : 0, dst : 2, timestamp : 2, type : commit src : 1, dst : 2, timestamp : 3, type : commit src : 2, dst : 0, timestamp : 4, type : tx_commit src : 2, dst : 1, timestamp : 5, type : tx_commit src : 0, dst : 2, timestamp : 6, type : ack src : 1, dst : 2, timestamp : 7, type : ack src : 2, dst : 0, timestamp : 8, type : prepare src : 2, dst : 1, timestamp : 9, type : prepare src : 0, dst : 2, timestamp : 10, type : commit src : 1, dst : 2, timestamp : 11, type : commit src : 2, dst : 0, timestamp : 12, type : tx_commit src : 2, dst : 1, timestamp : 13, type : tx_commit src : 0, dst : 2, timestamp : 14, type : ack src : 1, dst : 2, timestamp : 15, type : ack src : 2, dst : 0, timestamp : 16, type : prepare src : 2, dst : 1, timestamp : 17, type : prepare src : 0, dst : 2, timestamp : 18, type : commit src : 1, dst : 2, timestamp : 19, type : commit src : 2, dst : 0, timestamp : 20, type : tx_commit src : 2, dst : 1, timestamp : 21, type : tx_commit src : 0, dst : 2, timestamp : 22, type : ack src : 1, dst : 2, timestamp : 23, type : ack src : 2, dst : 0, timestamp : 0, type : prepare src : 2, dst : 1, timestamp : 1, type : prepare src : 0, dst : 2, timestamp : 2, type : commit src : 1, dst : 2, timestamp : 3, type : commit src : 2, dst : 0, timestamp : 4, type : tx_commit src : 2, dst : 1, timestamp : 5, type : tx_commit src : 0, dst : 2, timestamp : 6, type : ack src : 1, dst : 2, timestamp : 7, type : ack src : 2, dst : 0, timestamp : 8, type : prepare src : 2, dst : 1, timestamp : 9, type : prepare src : 0, dst : 2, timestamp : 10, type : commit src : 1, dst : 2, timestamp : 11, type : commit src : 2, dst : 0, timestamp : 12, type : tx_commit src : 2, dst : 1, timestamp : 13, type : tx_commit src : 0, dst : 2, timestamp : 14, type : ack src : 1, dst : 2, timestamp : 15, type : ack src : 2, dst : 0, timestamp : 16, type : prepare src : 2, dst : 1, timestamp : 17, type : prepare

log.txt

2PC System

14

slide-13
SLIDE 13 src : 2, dst : 0, timestamp : 0, type : prepare src : 2, dst : 1, timestamp : 1, type : prepare src : 0, dst : 2, timestamp : 2, type : commit src : 1, dst : 2, timestamp : 3, type : commit src : 2, dst : 0, timestamp : 4, type : tx_commit src : 2, dst : 1, timestamp : 5, type : tx_commit src : 0, dst : 2, timestamp : 6, type : ack src : 1, dst : 2, timestamp : 7, type : ack src : 2, dst : 0, timestamp : 8, type : prepare src : 2, dst : 1, timestamp : 9, type : prepare src : 0, dst : 2, timestamp : 10, type : commit src : 1, dst : 2, timestamp : 11, type : commit src : 2, dst : 0, timestamp : 12, type : tx_commit src : 2, dst : 1, timestamp : 13, type : tx_commit src : 0, dst : 2, timestamp : 14, type : ack src : 1, dst : 2, timestamp : 15, type : ack src : 2, dst : 0, timestamp : 16, type : prepare src : 2, dst : 1, timestamp : 17, type : prepare src : 0, dst : 2, timestamp : 18, type : commit src : 1, dst : 2, timestamp : 19, type : commit src : 2, dst : 0, timestamp : 20, type : tx_commit src : 2, dst : 1, timestamp : 21, type : tx_commit src : 0, dst : 2, timestamp : 22, type : ack src : 1, dst : 2, timestamp : 23, type : ack src : 2, dst : 0, timestamp : 0, type : prepare src : 2, dst : 1, timestamp : 1, type : prepare src : 0, dst : 2, timestamp : 2, type : commit src : 1, dst : 2, timestamp : 3, type : commit src : 2, dst : 0, timestamp : 4, type : tx_commit src : 2, dst : 1, timestamp : 5, type : tx_commit src : 0, dst : 2, timestamp : 6, type : ack src : 1, dst : 2, timestamp : 7, type : ack src : 2, dst : 0, timestamp : 8, type : prepare src : 2, dst : 1, timestamp : 9, type : prepare src : 0, dst : 2, timestamp : 10, type : commit src : 1, dst : 2, timestamp : 11, type : commit src : 2, dst : 0, timestamp : 12, type : tx_commit src : 2, dst : 1, timestamp : 13, type : tx_commit src : 0, dst : 2, timestamp : 14, type : ack src : 1, dst : 2, timestamp : 15, type : ack src : 2, dst : 0, timestamp : 16, type : prepare src : 2, dst : 1, timestamp : 17, type : prepare

Regular expressions

15

log.txt

  • 1. Log file (e.g., two phase commit log)
  • 2. Regular expressions to parse the log file
  • Split log into executions
  • From each log line extract:
  • Total event relation (e.g., time)
  • Event type

2PC System

15

slide-14
SLIDE 14

Synoptic overview

16

1/5. Parse log into a trace graph 2/5. Construct the initial model 3/5. Mine temporal invariants

...

1/5. Parse log into a trace graph

propose propose abort commit tx-abort tx-abort propose propose commit abort tx-abort tx-abort propose propose commit commit tx-commit tx-commit

: initial event : terminal event : intermediate event

X Y Z

16

slide-15
SLIDE 15

Synoptic overview

16

1/5. Parse log into a trace graph 2/5. Construct the initial model 3/5. Mine temporal invariants

...

propose

A compact model with

  • ne node per event type

2/5. Construct the initial model

propose propose abort commit tx-abort tx-abort propose propose commit abort tx-abort tx-abort propose propose commit commit tx-commit tx-commit

16

slide-16
SLIDE 16

Synoptic overview

16

1/5. Parse log into a trace graph 2/5. Construct the initial model 3/5. Mine temporal invariants

...

propose commit

A compact model with

  • ne node per event type

2/5. Construct the initial model

propose propose abort commit tx-abort tx-abort propose propose commit abort tx-abort tx-abort propose propose commit commit tx-commit tx-commit

16

slide-17
SLIDE 17

Synoptic overview

16

1/5. Parse log into a trace graph 2/5. Construct the initial model 3/5. Mine temporal invariants

...

propose abort tx-commit tx-abort commit

A compact model with

  • ne node per event type

2/5. Construct the initial model

propose propose abort commit tx-abort tx-abort propose propose commit abort tx-abort tx-abort propose propose commit commit tx-commit tx-commit

16

slide-18
SLIDE 18

Synoptic overview

16

1/5. Parse log into a trace graph 2/5. Construct the initial model 3/5. Mine temporal invariants

...

commit tx-commit abort propose tx-abort

A compact model with

  • ne node per event type

2/5. Construct the initial model

propose propose abort commit tx-abort tx-abort propose propose commit abort tx-abort tx-abort propose propose commit commit tx-commit tx-commit

16

slide-19
SLIDE 19

Synoptic overview

16

1/5. Parse log into a trace graph 2/5. Construct the initial model 3/5. Mine temporal invariants

...

A compact model with

  • ne node per event type

commit tx-commit abort propose tx-abort

2/5. Construct the initial model

propose propose abort commit tx-abort tx-abort propose propose commit abort tx-abort tx-abort propose propose commit commit tx-commit tx-commit propose propose abort commit tx-abort tx-abort propose propose commit abort tx-abort tx-abort propose propose commit commit tx-commit tx-commit

16

slide-20
SLIDE 20

Synoptic overview

16

1/5. Parse log into a trace graph 2/5. Construct the initial model 3/5. Mine temporal invariants

...

A compact model with

  • ne node per event type

3/5. Mine temporal invariants

commit tx-commit abort propose tx-abort

...

abort tx-abort abort tx-commit abort tx-abort

propose propose abort commit tx-abort tx-abort propose propose commit abort tx-abort tx-abort propose propose commit commit tx-commit tx-commit

16

slide-21
SLIDE 21

Synoptic overview

17

5/5. Coarsen model without unsatisfying any invariants 4/5. Refine the initial model until all invariants satisfied 4/5. Refine the initial model until all invariants satisfied Choose an invariant invalid in the model

abort tx-abort

True for log, false for initial model

17

slide-22
SLIDE 22

Synoptic overview

17

5/5. Coarsen model without unsatisfying any invariants 4/5. Refine the initial model until all invariants satisfied 4/5. Refine the initial model until all invariants satisfied Choose an invariant invalid in the model

abort tx-abort

Refine a model node

commit tx-commit abort propose tx-abort

commit tx-commit abort propose tx-abort commit

Unsatisfied invariants exist

17

slide-23
SLIDE 23

Synoptic overview

17

5/5. Coarsen model without unsatisfying any invariants 4/5. Refine the initial model until all invariants satisfied 5/5. Coarsen model without unsatisfying any invariants Choose an invariant invalid in the model

abort tx-abort

Refine a model node

commit tx-commit abort propose tx-abort

commit tx-commit abort propose tx-abort commit

Unsatisfied invariants exist All invariants satisfied

17

slide-24
SLIDE 24

Synoptic overview

17

5/5. Coarsen model without unsatisfying any invariants 4/5. Refine the initial model until all invariants satisfied 5/5. Coarsen model without unsatisfying any invariants Choose an invariant invalid in the model

abort tx-abort

Refine a model node

commit tx-commit abort propose tx-abort

commit tx-commit abort propose tx-abort commit

Unsatisfied invariants exist All invariants satisfied

propose commit tx-commit tx-abort abort commit abort abort

Merge nodes that exhibit the same behaviors

propose commit tx-commit tx-abort abort commit abort

17

slide-25
SLIDE 25

Assumptions

  • Multiple executions
  • Events in an execution are totally ordered
  • Process generating the log can be modeled as an FSM
  • Temporal system properties are evident in the orderings

among events

18

Logs System

18

slide-26
SLIDE 26
  • Motivation
  • Synoptic’s design
  • Overview
  • Assumptions
  • Temporal invariants
  • Model space exploration
  • Evaluation results
  • Future work
  • Conclusion

Talk outline

19

19

slide-27
SLIDE 27

Invariant Example Type

x y

always followed by

liveness x y

always precedes

safety x y

never followed by

safety

Temporal log invariants

  • Synoptic mines three kinds of temporal log invariants

that are true for all the logged executions

Dwyer et al. ICSE 1999

20

x y y x z x x y x x y y y z X X Y y X Y X Y y y y

Yang et al. PASTE 2004

20

slide-28
SLIDE 28

Invariant Example Type

x y

always followed by

liveness x y

always precedes

safety x y

never followed by

safety

Temporal log invariants

  • Synoptic mines three kinds of temporal log invariants

that are true for all the logged executions

Dwyer et al. ICSE 1999

20

x x y y y z X X Y y X Y X Y y y y X Y Y x z x X Y

Yang et al. PASTE 2004

20

slide-29
SLIDE 29

Invariant Example Type

x y

always followed by

liveness x y

always precedes

safety x y

never followed by

safety

Temporal log invariants

  • Synoptic mines three kinds of temporal log invariants

that are true for all the logged executions

Dwyer et al. ICSE 1999

20

X X Y y X Y X Y y y y X Y Y x z x X Y X X y y y z

Yang et al. PASTE 2004

20

slide-30
SLIDE 30
  • abort tx-abort
  • abort tx-commit
  • abort tx-abort
  • commit tx-commit
  • propose
  • propose

21

abort, commit, tx-abort, tx-commit

{ }

abort, commit, tx-abort, tx-commit

{ }

  • Mined invariants:

Two phase commit invariants

18

propose propose abort commit tx-abort tx-abort propose propose commit commit tx-commit tx-commit

...

21

slide-31
SLIDE 31
  • abort tx-abort
  • abort tx-commit
  • abort tx-abort
  • commit tx-commit
  • propose
  • propose

22

abort, commit, tx-abort, tx-commit

{ }

abort, commit, tx-abort, tx-commit

{ }

  • The initial graph violates 3

mined invariants:

Satisfying invariants with refinement

18

  • For each violation find

a corresponding path

  • Use refinement to

eliminate such path counter-examples

commit tx-commit abort propose tx-abort

One node per event type

22

slide-32
SLIDE 32

Counter-example based refinement

Example invariant: abort tx-abort

23

commit tx-commit abort propose tx-abort

1.

Initial model

commit tx-commit abort propose tx-abort

2.

Invariant counter-example Identify partition to refine

commit tx-commit abort propose tx-abort commit

3.

commit commit

Eliminate counter-example

commit tx-commit abort propose tx-abort commit

4.

commit commit

Refined model

commit tx-commit abort propose tx-abort

5.

commit

23

slide-33
SLIDE 33 propose propose abort commit tx-abort tx-abort propose propose commit abort tx-abort tx-abort propose propose commit commit tx-commit tx-commit propose propose commit commit tx-commit tx-commit propose propose commit commit tx-commit tx-commit propose propose commit abort tx-abort tx-abort propose propose commit commit tx-commit tx-commit

...

Model space

24

c1 c3 B a1 a2 c2 2 3 1,4 a3 a4 5 c1 c3 B a2 c2 3 4 a3 a4 5 2 a1 1 c1 c3 B a2 c2 3 4 a3 5 a1 1 a4 2 c1 c3 B a1 a2 c2 3 1,4 a4 5 a3 2 a1 a3 a2 B C 1 2 3 4 a4 5 a1 a3 a2 B c1 c3 1 2 3 4 a4 5 c2 c1 c3 a1 a3 a2 a4 B c2 2 1 4 3,5 c1 c3 B a2 a4 c2 3,5 4 a1 1 a3 2 a1 B 3 1 C a3 a4 5 2 a2 4 c1 c3 B A c2 2 3,5 1,4 a1 a3 a2 a4 B C 1 2 3,5 4 a1 a2 a4 B C a3 3,5 2 1,4 a1 a2 B 1 2 3 4 a4 5 C a3 a2 a4 B C a1 a3 2 3,5 4 1 a1 a2 a4 B c1 c3 a3 c2 2 1,4 3,5 a1 a2 B C a4 a3 1,4 3 5 2 a1 a2 B C a3 a4 3 5 2 1,4 B C A 1,4 2 3,5

Larger models: fewer behaviors Smaller models: more behaviors Initial model Trace graph

24

slide-34
SLIDE 34 propose propose abort commit tx-abort tx-abort propose propose commit abort tx-abort tx-abort propose propose commit commit tx-commit tx-commit propose propose commit commit tx-commit tx-commit propose propose commit commit tx-commit tx-commit propose propose commit abort tx-abort tx-abort propose propose commit commit tx-commit tx-commit

...

Model space

24

c1 c3 B a1 a2 c2 2 3 1,4 a3 a4 5 c1 c3 B a2 c2 3 4 a3 a4 5 2 a1 1 c1 c3 B a2 c2 3 4 a3 5 a1 1 a4 2 c1 c3 B a1 a2 c2 3 1,4 a4 5 a3 2 a1 a3 a2 B C 1 2 3 4 a4 5 a1 a3 a2 B c1 c3 1 2 3 4 a4 5 c2 c1 c3 a1 a3 a2 a4 B c2 2 1 4 3,5 c1 c3 B a2 a4 c2 3,5 4 a1 1 a3 2 a1 B 3 1 C a3 a4 5 2 a2 4 c1 c3 B A c2 2 3,5 1,4 a1 a3 a2 a4 B C 1 2 3,5 4 a1 a2 a4 B C a3 3,5 2 1,4 a1 a2 B 1 2 3 4 a4 5 C a3 a2 a4 B C a1 a3 2 3,5 4 1 a1 a2 a4 B c1 c3 a3 c2 2 1,4 3,5 a1 a2 B C a4 a3 1,4 3 5 2 a1 a2 B C a3 a4 3 5 2 1,4 B C A 1,4 2 3,5

Larger models: fewer behaviors Smaller models: more behaviors Initial model Trace graph

24

slide-35
SLIDE 35 propose propose abort commit tx-abort tx-abort propose propose commit abort tx-abort tx-abort propose propose commit commit tx-commit tx-commit propose propose commit commit tx-commit tx-commit propose propose commit commit tx-commit tx-commit propose propose commit abort tx-abort tx-abort propose propose commit commit tx-commit tx-commit

...

Model space

24

c1 c3 B a1 a2 c2 2 3 1,4 a3 a4 5 c1 c3 B a2 c2 3 4 a3 a4 5 2 a1 1 c1 c3 B a2 c2 3 4 a3 5 a1 1 a4 2 c1 c3 B a1 a2 c2 3 1,4 a4 5 a3 2 a1 a3 a2 B C 1 2 3 4 a4 5 a1 a3 a2 B c1 c3 1 2 3 4 a4 5 c2 c1 c3 a1 a3 a2 a4 B c2 2 1 4 3,5 c1 c3 B a2 a4 c2 3,5 4 a1 1 a3 2 a1 B 3 1 C a3 a4 5 2 a2 4 c1 c3 B A c2 2 3,5 1,4 a1 a3 a2 a4 B C 1 2 3,5 4 a1 a2 a4 B C a3 3,5 2 1,4 a1 a2 B 1 2 3 4 a4 5 C a3 a2 a4 B C a1 a3 2 3,5 4 1 a1 a2 a4 B c1 c3 a3 c2 2 1,4 3,5 a1 a2 B C a4 a3 1,4 3 5 2 a1 a2 B C a3 a4 3 5 2 1,4 B C A 1,4 2 3,5

Some invariants falsified

Larger models: fewer behaviors Smaller models: more behaviors Initial model Trace graph

24

slide-36
SLIDE 36 propose propose abort commit tx-abort tx-abort propose propose commit abort tx-abort tx-abort propose propose commit commit tx-commit tx-commit propose propose commit commit tx-commit tx-commit propose propose commit commit tx-commit tx-commit propose propose commit abort tx-abort tx-abort propose propose commit commit tx-commit tx-commit

...

Model space

24

c1 c3 B a1 a2 c2 2 3 1,4 a3 a4 5 c1 c3 B a2 c2 3 4 a3 a4 5 2 a1 1 c1 c3 B a2 c2 3 4 a3 5 a1 1 a4 2 c1 c3 B a1 a2 c2 3 1,4 a4 5 a3 2 a1 a3 a2 B C 1 2 3 4 a4 5 a1 a3 a2 B c1 c3 1 2 3 4 a4 5 c2 c1 c3 a1 a3 a2 a4 B c2 2 1 4 3,5 c1 c3 B a2 a4 c2 3,5 4 a1 1 a3 2 a1 B 3 1 C a3 a4 5 2 a2 4 c1 c3 B A c2 2 3,5 1,4 a1 a3 a2 a4 B C 1 2 3,5 4 a1 a2 a4 B C a3 3,5 2 1,4 a1 a2 B 1 2 3 4 a4 5 C a3 a2 a4 B C a1 a3 2 3,5 4 1 a1 a2 a4 B c1 c3 a3 c2 2 1,4 3,5 a1 a2 B C a4 a3 1,4 3 5 2 a1 a2 B C a3 a4 3 5 2 1,4 B C A 1,4 2 3,5

All invariants satisfied Some invariants falsified

Larger models: fewer behaviors Smaller models: more behaviors Initial model Trace graph

24

slide-37
SLIDE 37 propose propose abort commit tx-abort tx-abort propose propose commit abort tx-abort tx-abort propose propose commit commit tx-commit tx-commit propose propose commit commit tx-commit tx-commit propose propose commit commit tx-commit tx-commit propose propose commit abort tx-abort tx-abort propose propose commit commit tx-commit tx-commit

...

Model space

24

c1 c3 B a1 a2 c2 2 3 1,4 a3 a4 5 c1 c3 B a2 c2 3 4 a3 a4 5 2 a1 1 c1 c3 B a2 c2 3 4 a3 5 a1 1 a4 2 c1 c3 B a1 a2 c2 3 1,4 a4 5 a3 2 a1 a3 a2 B C 1 2 3 4 a4 5 a1 a3 a2 B c1 c3 1 2 3 4 a4 5 c2 c1 c3 a1 a3 a2 a4 B c2 2 1 4 3,5 c1 c3 B a2 a4 c2 3,5 4 a1 1 a3 2 a1 B 3 1 C a3 a4 5 2 a2 4 c1 c3 B A c2 2 3,5 1,4 a1 a3 a2 a4 B C 1 2 3,5 4 a1 a2 a4 B C a3 3,5 2 1,4 a1 a2 B 1 2 3 4 a4 5 C a3 a2 a4 B C a1 a3 2 3,5 4 1 a1 a2 a4 B c1 c3 a3 c2 2 1,4 3,5 a1 a2 B C a4 a3 1,4 3 5 2 a1 a2 B C a3 a4 3 5 2 1,4 B C A 1,4 2 3,5

All invariants satisfied Some invariants falsified

Larger models: fewer behaviors Smaller models: more behaviors

Find the smallest model satisfying all invariants

Synoptic’s goal:

Initial model Trace graph

24

slide-38
SLIDE 38 propose propose abort commit tx-abort tx-abort propose propose commit abort tx-abort tx-abort propose propose commit commit tx-commit tx-commit propose propose commit commit tx-commit tx-commit propose propose commit commit tx-commit tx-commit propose propose commit abort tx-abort tx-abort propose propose commit commit tx-commit tx-commit

...

Model space

24

c1 c3 B a1 a2 c2 2 3 1,4 a3 a4 5 c1 c3 B a2 c2 3 4 a3 a4 5 2 a1 1 c1 c3 B a2 c2 3 4 a3 5 a1 1 a4 2 c1 c3 B a1 a2 c2 3 1,4 a4 5 a3 2 a1 a3 a2 B C 1 2 3 4 a4 5 a1 a3 a2 B c1 c3 1 2 3 4 a4 5 c2 c1 c3 a1 a3 a2 a4 B c2 2 1 4 3,5 c1 c3 B a2 a4 c2 3,5 4 a1 1 a3 2 a1 B 3 1 C a3 a4 5 2 a2 4 c1 c3 B A c2 2 3,5 1,4 a1 a3 a2 a4 B C 1 2 3,5 4 a1 a2 a4 B C a3 3,5 2 1,4 a1 a2 B 1 2 3 4 a4 5 C a3 a2 a4 B C a1 a3 2 3,5 4 1 a1 a2 a4 B c1 c3 a3 c2 2 1,4 3,5 a1 a2 B C a4 a3 1,4 3 5 2 a1 a2 B C a3 a4 3 5 2 1,4 B C A 1,4 2 3,5

All invariants satisfied Some invariants falsified

Larger models: fewer behaviors Smaller models: more behaviors

Coarsening Refinement

Find the smallest model satisfying all invariants

Synoptic’s goal:

Initial model Trace graph

24

slide-39
SLIDE 39

25

c1 c3 B a1 a2 c2 2 3 1,4 a3 a4 5 c1 c3 B a2 c2 3 4 a3 a4 5 2 a1 1 c1 c3 B a2 c2 3 4 a3 5 a1 1 a4 2 c1 c3 B a1 a2 c2 3 1,4 a4 5 a3 2 a1 a3 a2 B C 1 2 3 4 a4 5 a1 a3 a2 B c1 c3 1 2 3 4 a4 5 c2 c1 c3 a1 a3 a2 a4 B c2 2 1 4 3,5 c1 c3 B a2 a4 c2 3,5 4 a1 1 a3 2 a1 B 3 1 C a3 a4 5 2 a2 4 c1 c3 B A c2 2 3,5 1,4 a1 a3 a2 a4 B C 1 2 3,5 4 a1 a2 a4 B C a3 3,5 2 1,4 a1 a2 B 1 2 3 4 a4 5 C a3 a2 a4 B C a1 a3 2 3,5 4 1 a1 a2 a4 B c1 c3 a3 c2 2 1,4 3,5 a1 a2 B C a4 a3 1,4 3 5 2 a1 a2 B C a3 a4 3 5 2 1,4 B C A 1,4 2 3,5

All invariants satisfied Some invariants satisfied

Refine Refine Refine Coarsen

Synoptic finds a local

  • ptimum, not

a global one

Select a refinement that satisfies an unsatisfied invariant Select a coarsening that maintains all the invariants

Initial model

25

slide-40
SLIDE 40

25

c1 c3 B a1 a2 c2 2 3 1,4 a3 a4 5 c1 c3 B a2 c2 3 4 a3 a4 5 2 a1 1 c1 c3 B a2 c2 3 4 a3 5 a1 1 a4 2 c1 c3 B a1 a2 c2 3 1,4 a4 5 a3 2 a1 a3 a2 B C 1 2 3 4 a4 5 a1 a3 a2 B c1 c3 1 2 3 4 a4 5 c2 c1 c3 a1 a3 a2 a4 B c2 2 1 4 3,5 c1 c3 B a2 a4 c2 3,5 4 a1 1 a3 2 a1 B 3 1 C a3 a4 5 2 a2 4 c1 c3 B A c2 2 3,5 1,4 a1 a3 a2 a4 B C 1 2 3,5 4 a1 a2 a4 B C a3 3,5 2 1,4 a1 a2 B 1 2 3 4 a4 5 C a3 a2 a4 B C a1 a3 2 3,5 4 1 a1 a2 a4 B c1 c3 a3 c2 2 1,4 3,5 a1 a2 B C a4 a3 1,4 3 5 2 a1 a2 B C a3 a4 3 5 2 1,4 B C A 1,4 2 3,5

All invariants satisfied Some invariants satisfied

Refine Refine Refine Coarsen

Synoptic finds a local

  • ptimum, not

a global one

Select a refinement that satisfies an unsatisfied invariant Select a coarsening that maintains all the invariants

Initial model

  • Coarsening from initial traces is inefficient
  • k-Tail and GK-Tail
  • Refinement is well known
  • Using mined invariant constraints is a new idea

Biermann et al. 1972 Lorenzoli et al. ICSE 2008 Paige et al. 1987

25

slide-41
SLIDE 41
  • Motivation
  • Synoptic’s design
  • Evaluation results
  • Formal evaluation
  • Reverse traceroute
  • Distributed systems course
  • Future work
  • Conclusion

Talk outline

26

26

slide-42
SLIDE 42

Formal evaluation

27

  • Termination
  • Always finds a model
  • Correctness
  • Satisfies all the mined invariants, and no others
  • Conciseness
  • Local minimum
  • Efficiency
  • Never violate a mined invariant
  • Make progress towards satisfying some mined invariant

See the paper for more

27

slide-43
SLIDE 43

Reverse traceroute case-study

28

  • Reverse traceroute
  • Finds the likely reverse traceroute from an arbitrary

destination to a source host

  • In live deployment for over a year
  • Deployed internally by a large Internet company
  • Ran Synoptic on reverse traceroute server logs
  • Developer added 16 lines of logging code
  • Synoptic processed the 900,000 events in 12 minutes

KATZ-BASSETT et al. NSDI 2010

28

slide-44
SLIDE 44

do_measurements do_fail_callback get_next_hop reverse_hops_assume_ symmetric do_measurements reverse_hops_assume_ symmetric_peek reverse_hops_ tr_to_src do_measurements get_next_hop check_cache reverse_hops_assume_ symmetric_peek reverse_hops_ tr_to_src do_reach_callback do_fail_callback get_next_hop do_reach_callback reverse_hops_ts reverse_hops_rr reverse_hops_assume_ symmetric

0.82 0.14 1.00 0.24 1.00 1.00 0.92 0.33 0.44 0.14 0.95 1.00 1.00 0.20 0.78 0.67 0.15 0.71 0.11 0.13 0.85 0.50 0.12 0.43 0.81 0.01 0.01 0.04 0.02 0.02 0.48 0.01

Reverse traceroute case-study

2 bugs found:

  • nodes

should not be terminal

  • Red edges

should not exist

29

Shaded

Synoptic was useful for:

  • Finding bugs in code
  • Increasing developer confidence
  • Building system understanding

29

slide-45
SLIDE 45

Synoptic limitations

  • Quality and usefulness of the model depends on

granularity of logging statements and user input

  • Only considers three kinds of temporal invariants
  • For some applications, the small model size may

be irrelevant

  • Online log analysis is not supported
  • The input log must be totally ordered

30

30

slide-46
SLIDE 46

Future work

  • Handle logs generated by distributed systems
  • Generalize invariants
  • Relax always and never constraints
  • Explore composition of temporal invariants
  • Incorporating structural/data invariants
  • Tool improvements
  • Explicating model paths in the GUI
  • Eclipse plug-in for ease of use
  • Automatically infer log format

31

Lou et al. KDD 2010 Gabel et al. FSE 2008 Ernst et al. TSE 2001 Vaarandi et al. IFIP ICICS 2004 Zhu et al. OSR 2010

31

slide-47
SLIDE 47

Contributions

32

  • Specification mining algorithm
  • Uses refinement for efficiency
  • Mines and satisfies temporal log invariants for accuracy
  • Proved important properties of refinement
  • Showed that Synoptic helps developers to study large

and complex logs, and can help find bugs

Synoptic: a tool that extracts models from logs

http://synoptic.googlecode.com

Try it!

32