Coarse-Grained Transactions
Eric Koskinen University of Cambridge 20 January 2010 Joint work with Matthew Parkinson, Maurice Herlihy
Wednesday, 20 January 2010
Coarse-Grained Transactions Eric Koskinen University of Cambridge - - PowerPoint PPT Presentation
Coarse-Grained Transactions Eric Koskinen University of Cambridge 20 January 2010 Joint work with Matthew Parkinson, Maurice Herlihy Wednesday, 20 January 2010 Abstract Data Types global SkipList set; atomic { atomic { set.Add(3); if
Eric Koskinen University of Cambridge 20 January 2010 Joint work with Matthew Parkinson, Maurice Herlihy
Wednesday, 20 January 2010
atomic { set.Add(3); set.Rm(5) } atomic { if set.Has(6) then set.Rm(7) } global SkipList set;
Wednesday, 20 January 2010
atomic { set.Add(3); set.Rm(5) } atomic { if set.Has(6) then set.Rm(7) } global SkipList set;
ADT Operations
Wednesday, 20 January 2010
atomic { set.Add(3); set.Rm(5) } atomic { if set.Has(6) then set.Rm(7) } (Add3) (Has6) (Rm5) (Rm7) T1 T2 global SkipList set;
ADT Operations
Wednesday, 20 January 2010
atomic { set.Add(3); set.Rm(5) } atomic { if set.Has(6) then set.Rm(7) } (cmt) (Add3) (Has6) (Rm5) (Rm7) T1 T2 global SkipList set;
ADT Operations
Wednesday, 20 January 2010
atomic { set.Add(3); set.Rm(5) } atomic { if set.Has(6) then set.Rm(7) } (cmt) (Add3) (Has6) (Rm5) (Rm7) T1 T2
Abort!
global SkipList set;
ADT Operations
Wednesday, 20 January 2010
atomic { set.Add(3); set.Rm(5) } atomic { if set.Has(6) then set.Rm(7) } (cmt) (cmt) (Add3) (Has6) (Rm5) (Rm7) T1 T2
Abort!
global SkipList set;
ADT Operations
Wednesday, 20 January 2010
atomic { set.Add(3); set.Rm(5) } atomic { if set.Has(6) then set.Rm(7) } (cmt) (cmt) (Add3) (Has6) (Rm5) (Rm7) T1 T2
Abort! Abort!
global SkipList set;
ADT Operations
Wednesday, 20 January 2010
Wednesday, 20 January 2010
Wednesday, 20 January 2010
atomic { set.Add(3); set.Rm(5) } atomic { if set.Has(6) then set.Rm(7) } (Add3) (Has6) (Rm5) (cmt) (Rm7) (cmt) T1 T2 global SkipList set;
Wednesday, 20 January 2010
atomic { set.Add(3); set.Rm(5) } atomic { if set.Has(6) then set.Rm(7) } (Add3) (Has6) (Rm5) (cmt) (Rm7) (cmt) T1 T2 global SkipList set;
Wednesday, 20 January 2010
atomic { set.Add(3); set.Rm(5) } atomic { if set.Has(6) then set.Rm(7) } (Add3) (Has6) (Rm5) (cmt) (Rm7) (cmt) T1 T2 global SkipList set;
Wednesday, 20 January 2010
atomic { set.Add(3); set.Rm(5) } atomic { if set.Has(6) then set.Rm(7) } (Add3) (Has6) (Rm5) (cmt) (Rm7) (cmt) T1 T2 global SkipList set; (Add3) (Has6) (Rm5) (cmt) (Rm7) (cmt) T1 T2
Wednesday, 20 January 2010
Wednesday, 20 January 2010
Wednesday, 20 January 2010
Wednesday, 20 January 2010
Wednesday, 20 January 2010
set.Rm(5) (Add3) (Has6) (Rm5) (cmt) (Rm7) (cmt) T1 T2 set.Rm(7) set.Rm(5) set.Has(6)
Wednesday, 20 January 2010
set.Rm(5) (Add3) (Has6) (Rm5) (cmt) (Rm7) (cmt) T1 T2 set.Rm(7) set.Rm(5) set.Has(6)
⊳
Wednesday, 20 January 2010
set.Rm(5) (Add3) (Has6) (Rm5) (cmt) (Rm7) (cmt) T1 T2 set.Rm(7) set.Rm(5) set.Has(6)
⊲
Wednesday, 20 January 2010
set.Rm(5) (Add3) (Has6) (Rm5) (cmt) (Rm7) (cmt) T1 T2 set.Rm(7) set.Rm(5) set.Has(6)
⊲ ⊳
Wednesday, 20 January 2010
set.Rm(5) (Add3) (Has6) (Rm5) (cmt) (Rm7) (cmt) T1 T2 set.Rm(7) set.Rm(5) set.Has(6)
⊲ ⊳ ⊲ ⊳
Wednesday, 20 January 2010
set.Rm(5) (Add3) (Has6) (Rm5) (cmt) (Rm7) (cmt) T1 T2 set.Rm(7) set.Rm(5) set.Has(6) set.*(x) set.*(y)
⊲ ⊳ ⊲ ⊳ ⊲ ⊳
Wednesday, 20 January 2010
set.Rm(5) (Add3) (Has6) (Rm5) (cmt) (Rm7) (cmt) T1 T2
if x≠y
set.Rm(7) set.Rm(5) set.Has(6) set.*(x) set.*(y)
⊲ ⊳ ⊲ ⊳ ⊲ ⊳
Wednesday, 20 January 2010
iff
Wednesday, 20 January 2010
iff
p.n
p.n
∀σ
Wednesday, 20 January 2010
iff
p.n
p.n
∀σ
Wednesday, 20 January 2010
time
inc() dec() dec() 1 1
Wednesday, 20 January 2010
What Theory? Sept 2009 10
time
inc() dec() dec() 1 1 1 2 11
Wednesday, 20 January 2010
What Theory? Sept 2009 11
Valid sequence of calls (same return values)
time
inc() dec() dec() 1 1 1 2 11
Wednesday, 20 January 2010
What Theory? Sept 2009 12
Same final state
time
inc() dec() dec() 1 1 1 2 11
Wednesday, 20 January 2010
What Theory? Sept 2009 12
Same final state
time
inc() dec()
inc() dec() dec() 1 1 1 2 11
Wednesday, 20 January 2010
What Theory? Sept 2009 12
Same final state
time
inc() dec()
inc() dec() dec() 1 1 1 2 11
⊳
Wednesday, 20 January 2010
What Theory? Sept 2009 13
time
dec() inc() 1 dec()
1
Wednesday, 20 January 2010
What Theory? Sept 2009 14
time
1 dec() inc() 1 dec()
Wednesday, 20 January 2010
What Theory? Sept 2009 14
time
1 dec() inc() 1 dec()
dec() is NOT a left mover w.r.t inc()
Wednesday, 20 January 2010
time
If and are adjacent, Ok to move later
Wednesday, 20 January 2010
time
If and are adjacent, Ok to move later
If and are adjacent, Ok to swap
time
Wednesday, 20 January 2010
Wednesday, 20 January 2010
Wednesday, 20 January 2010
Wednesday, 20 January 2010
Statements
σ′ ∈ cσ c; s, σ − →A s, σ′ t, σ ⇓A σ′ beg t; s, σ − →A s, σ′
Wednesday, 20 January 2010
Transactions
σ′′ ∈ o.m(a)σ t, σ′′ ⇓A σ′
end, σ ⇓A σ
Statements
σ′ ∈ cσ c; s, σ − →A s, σ′ t, σ ⇓A σ′ beg t; s, σ − →A s, σ′
Wednesday, 20 January 2010
produce serial histories.
Transactions
σ′′ ∈ o.m(a)σ t, σ′′ ⇓A σ′
end, σ ⇓A σ
Statements
σ′ ∈ cσ c; s, σ − →A s, σ′ t, σ ⇓A σ′ beg t; s, σ − →A s, σ′
Wednesday, 20 January 2010
Wednesday, 20 January 2010
Pessimistic Optimistic
Boosting, Open Nested Txns, Lock Inf. RW STM, Intel, TL2, Burkhardt
undos undos undos
add(2) rm(4) add(4)
redos redos redos
merge merge
Wednesday, 20 January 2010
Pessimistic Optimistic
Boosting, Open Nested Txns, Lock Inf. RW STM, Intel, TL2, Burkhardt
undos undos undos
add(2) rm(4) add(4)
redos redos redos
merge merge
Abort!
Wednesday, 20 January 2010
Pessimistic Optimistic
Ti : N⊥ × s × σ × σ × ℓτ Ti : N⊥ × s× list M
Wednesday, 20 January 2010
Pessimistic Optimistic
transaction identifier code
Ti : N⊥ × s × σ × σ × ℓτ Ti : N⊥ × s× list M
Wednesday, 20 January 2010
Pessimistic Optimistic
transaction identifier code
Ti : N⊥ × s × σ × σ × ℓτ Ti : N⊥ × s× list M
thread-local state previous state replay log
Wednesday, 20 January 2010
Ti : N⊥ × s × σ × σ × ℓτ
Semantics Apply
− →P : (Ti, T, σsh) × (Ti, T, σsh) − →O : (Ti, T, σsh, ℓsh) × (Ti, T, σsh, ℓsh)
Commit
Ti : N⊥ × s× list M
Pessimistic Optimistic
Wednesday, 20 January 2010
Ti : N⊥ × s × σ × σ × ℓτ
Semantics Apply
{o.m} ⊳ meths(T) τ, x := o.m; t, M, στ, T, σsh − →P ..., T, σsh[o → oσsh.m] − →P : (Ti, T, σsh) × (Ti, T, σsh) − →O : (Ti, T, σsh, ℓsh) × (Ti, T, σsh, ℓsh)
Commit
Ti : N⊥ × s× list M
Pessimistic Optimistic
Wednesday, 20 January 2010
Ti : N⊥ × s × σ × σ × ℓτ
Semantics Apply
{o.m} ⊳ meths(T) τ, x := o.m; t, M, στ, T, σsh − →P ..., T, σsh[o → oσsh.m] − →P : (Ti, T, σsh) × (Ti, T, σsh) − →O : (Ti, T, σsh, ℓsh) × (Ti, T, σsh, ℓsh)
Commit
Ti : N⊥ × s× list M
Pessimistic Optimistic
τ, end;s, M, στ, T, σsh − →P τ, s, ∅, στ, T, σsh
Wednesday, 20 January 2010
Ti : N⊥ × s × σ × σ × ℓτ
Semantics Apply
{o.m} ⊳ meths(T) τ, x := o.m; t, M, στ, T, σsh − →P ..., T, σsh[o → oσsh.m] − →P : (Ti, T, σsh) × (Ti, T, σsh) − →O : (Ti, T, σsh, ℓsh) × (Ti, T, σsh, ℓsh)
Commit
Ti : N⊥ × s× list M
Pessimistic Optimistic
τ, x := o.m; t, στ, ← − σ τ, ℓτ, T, σsh, ℓsh − →O ..., ℓτ :: (“o.m′′), T, σsh, ℓsh
τ, end;s, M, στ, T, σsh − →P τ, s, ∅, στ, T, σsh
Wednesday, 20 January 2010
Ti : N⊥ × s × σ × σ × ℓτ
Semantics Apply
{o.m} ⊳ meths(T) τ, x := o.m; t, M, στ, T, σsh − →P ..., T, σsh[o → oσsh.m] − →P : (Ti, T, σsh) × (Ti, T, σsh) − →O : (Ti, T, σsh, ℓsh) × (Ti, T, σsh, ℓsh)
Commit
Ti : N⊥ × s× list M
Pessimistic Optimistic
τ, x := o.m; t, στ, ← − σ τ, ℓτ, T, σsh, ℓsh − →O ..., ℓτ :: (“o.m′′), T, σsh, ℓsh ∀(τ cmt, ℓτ ′) ∈ ℓsh.τ cmt > τ ⇒ ℓτ ⊲ ℓτ ′ τ, end; s, στ, ← − σ τ, ℓτ, T, σsh, ℓsh − →O ..., T, merge(σsh, ℓτ), ℓsh :: (fresh(τ cmt), ℓτ)
τ, end;s, M, στ, T, σsh − →P τ, s, ∅, στ, T, σsh
Wednesday, 20 January 2010
Pessimistic Optimistic
T1 T2 T3
a r a
Wednesday, 20 January 2010
pessimistic semantics is serializable.
Wednesday, 20 January 2010
ǫC·ǫU
pessimistic semantics is serializable.
Wednesday, 20 January 2010
time
beg beg
Wednesday, 20 January 2010
time
beg beg cmt
Wednesday, 20 January 2010
time
beg beg cmt
Wednesday, 20 January 2010
time
beg beg cmt
Wednesday, 20 January 2010
time
beg beg cmt
Move Left of Pending
Wednesday, 20 January 2010
Wednesday, 20 January 2010
Wednesday, 20 January 2010
time
beg cmt
Wednesday, 20 January 2010
time
beg cmt cmt
Wednesday, 20 January 2010
time
beg cmt cmt
Wednesday, 20 January 2010
time
beg cmt cmt
Wednesday, 20 January 2010
time
beg cmt cmt
Move Right of Committed
Wednesday, 20 January 2010
Wednesday, 20 January 2010
Wednesday, 20 January 2010
Wednesday, 20 January 2010
Wednesday, 20 January 2010
Wednesday, 20 January 2010
Wednesday, 20 January 2010
Coarse-Grained Transactions
Wednesday, 20 January 2010
Nested Transactions. SPAA’08.
Wednesday, 20 January 2010
Instance Exec. Granul.
Wednesday, 20 January 2010
Instance Exec. Granul.
Traditional STM (Intel, TL2) Opt Fine
Wednesday, 20 January 2010
Instance Exec. Granul.
Traditional STM (Intel, TL2) Opt Fine Lock Inference (Cherem. PLDI’08) Pess Fine
Wednesday, 20 January 2010
Instance Exec. Granul.
Traditional STM (Intel, TL2) Opt Fine Lock Inference (Cherem. PLDI’08) Pess Fine Transactional Boosting (PPoPP’08) Pess Coarse
Wednesday, 20 January 2010
Instance Exec. Granul.
Traditional STM (Intel, TL2) Opt Fine Lock Inference (Cherem. PLDI’08) Pess Fine Transactional Boosting (PPoPP’08) Pess Coarse Open Nested Transactions (PPoPP’07) Pess Coarse
Wednesday, 20 January 2010
Instance Exec. Granul.
Traditional STM (Intel, TL2) Opt Fine Lock Inference (Cherem. PLDI’08) Pess Fine Transactional Boosting (PPoPP’08) Pess Coarse Open Nested Transactions (PPoPP’07) Pess Coarse Burkhardt and Baldassin (HotPar’09) Opt Coarse
Wednesday, 20 January 2010
Instance Exec. Granul.
Traditional STM (Intel, TL2) Opt Fine Lock Inference (Cherem. PLDI’08) Pess Fine Transactional Boosting (PPoPP’08) Pess Coarse Open Nested Transactions (PPoPP’07) Pess Coarse Burkhardt and Baldassin (HotPar’09) Opt Coarse work-in-progress Opt Coarse
Wednesday, 20 January 2010
Wednesday, 20 January 2010
Wednesday, 20 January 2010
Wednesday, 20 January 2010
Wednesday, 20 January 2010
Wednesday, 20 January 2010
Wednesday, 20 January 2010
Wednesday, 20 January 2010