PEREGRINE: Efficient Deterministic Multithreading

PEREGRINE: Efficient Deterministic Multithreading
1 / 1
PEREGRINE: Efficient Deterministic Multithreading - slide 1 of 36 PEREGRINE: Efficient Deterministic Multithreading - slide 2 of 36 PEREGRINE: Efficient Deterministic Multithreading - slide 3 of 36 PEREGRINE: Efficient Deterministic Multithreading - slide 4 of 36 PEREGRINE: Efficient Deterministic Multithreading - slide 5 of 36 PEREGRINE: Efficient Deterministic Multithreading - slide 6 of 36 PEREGRINE: Efficient Deterministic Multithreading - slide 7 of 36 PEREGRINE: Efficient Deterministic Multithreading - slide 8 of 36 PEREGRINE: Efficient Deterministic Multithreading - slide 9 of 36 PEREGRINE: Efficient Deterministic Multithreading - slide 10 of 36 PEREGRINE: Efficient Deterministic Multithreading - slide 11 of 36 PEREGRINE: Efficient Deterministic Multithreading - slide 12 of 36 PEREGRINE: Efficient Deterministic Multithreading - slide 13 of 36 PEREGRINE: Efficient Deterministic Multithreading - slide 14 of 36 PEREGRINE: Efficient Deterministic Multithreading - slide 15 of 36 PEREGRINE: Efficient Deterministic Multithreading - slide 16 of 36 PEREGRINE: Efficient Deterministic Multithreading - slide 17 of 36 PEREGRINE: Efficient Deterministic Multithreading - slide 18 of 36 PEREGRINE: Efficient Deterministic Multithreading - slide 19 of 36 PEREGRINE: Efficient Deterministic Multithreading - slide 20 of 36 PEREGRINE: Efficient Deterministic Multithreading - slide 21 of 36 PEREGRINE: Efficient Deterministic Multithreading - slide 22 of 36 PEREGRINE: Efficient Deterministic Multithreading - slide 23 of 36 PEREGRINE: Efficient Deterministic Multithreading - slide 24 of 36 PEREGRINE: Efficient Deterministic Multithreading - slide 25 of 36 PEREGRINE: Efficient Deterministic Multithreading - slide 26 of 36 PEREGRINE: Efficient Deterministic Multithreading - slide 27 of 36 PEREGRINE: Efficient Deterministic Multithreading - slide 28 of 36 PEREGRINE: Efficient Deterministic Multithreading - slide 29 of 36 PEREGRINE: Efficient Deterministic Multithreading - slide 30 of 36 PEREGRINE: Efficient Deterministic Multithreading - slide 31 of 36 PEREGRINE: Efficient Deterministic Multithreading - slide 32 of 36 PEREGRINE: Efficient Deterministic Multithreading - slide 33 of 36 PEREGRINE: Efficient Deterministic Multithreading - slide 34 of 36 PEREGRINE: Efficient Deterministic Multithreading - slide 35 of 36 PEREGRINE: Efficient Deterministic Multithreading - slide 36 of 36
PEREGRINE: Efficient Deterministic Multithreading through Schedule Relaxation Heming Cui, Jingyue Wu, John Gallagher, Huayang Guo, Junfeng Yang Software Systems Lab Columbia University 1 Nondeterminism in Multithreading Different runs

Related Topics

Download this presentation From Below

"PEREGRINE: Efficient Deterministic Multithreading" is the property of its rightful owner. Permission is granted to download and print the materials on this website for personal, non-commercial use only, and to display it on your personal computer provided you do not modify the materials and that you retain all copyright notices contained in the materials. By downloading content from our website, you accept the terms of this agreement.

Presentation Transcript

01
PEREGRINE: Efficient Deterministic Multithreading through Schedule Relaxation Heming Cui,
Jingyue Wu,
John Gallagher,
Huayang Guo,
Junfeng Yang

Software Systems Lab
Columbia University 1<br>
02
Nondeterminism in Multithreading Different runs  different behaviors, depending on thread schedules

Complicates a lot of things
Understanding
Testing
Debugging
… 2<br>
03
3 Thread 0 Thread 1 Apache Bug #21287 Thread 0 Thread 1 mutex_lock(M)
*obj = …
mutex_unlock(M) mutex_lock(M)
free(obj)
mutex_unlock(M) mutex_lock(M)
*obj = …
mutex_unlock(M) mutex_lock(M)
free(obj)
mutex_unlock(M) Nondeterministic Synchronization Thread 0 Thread 1 FFT in SPLASH2 ……
barrier_wait(B)

print(result) ……
barrier_wait(B)
result += … Thread 0 Thread 1 ……
barrier_wait(B)
print(result) ……
barrier_wait(B)

result += … Data Race<br>