1 © R. Guerraoui Seth Gilbert Professor: Rachid Guerraoui Assistants: M. Kapalka and A. Dragojevic...

64
© R. Guerraoui 1 Seth Gilbert http://lpd.epfl.ch Professor: Rachid Guerraoui Assistants: M. Kapalka and A. Dragojevic Distributed Programming Laboratory Special Topics in Distributed Computing: Shared Memory Algorithms

Transcript of 1 © R. Guerraoui Seth Gilbert Professor: Rachid Guerraoui Assistants: M. Kapalka and A. Dragojevic...

Page 1: 1 © R. Guerraoui Seth Gilbert  Professor: Rachid Guerraoui Assistants: M. Kapalka and A. Dragojevic Distributed Programming Laboratory.

© R. Guerraoui 1

Seth Gilberthttp://lpd.epfl.ch

Professor: Rachid Guerraoui

Assistants: M. Kapalka and A. Dragojevic

Distributed Programming Laboratory

Special Topics in

Distributed Computing:

Shared Memory Algorithms

Page 2: 1 © R. Guerraoui Seth Gilbert  Professor: Rachid Guerraoui Assistants: M. Kapalka and A. Dragojevic Distributed Programming Laboratory.

2

This course introduces a theory of robust and concurrent computing…

Page 3: 1 © R. Guerraoui Seth Gilbert  Professor: Rachid Guerraoui Assistants: M. Kapalka and A. Dragojevic Distributed Programming Laboratory.

3

Major chip manufacturers have recently announced a major paradigm shift:

New York Times, 8 May 2004:Intel … [has] decided to focus its development efforts on «dual core» processors … with two engines instead of one, allowing for greater efficiency because the processor workload is essentially shared.

Multi-processors and Multicoresvs

faster processors

(Thanks for the quote, Maurice Herlihy.)

Page 4: 1 © R. Guerraoui Seth Gilbert  Professor: Rachid Guerraoui Assistants: M. Kapalka and A. Dragojevic Distributed Programming Laboratory.

4

The clock speed of a processor cannot be increased without overheating.

But

More and more processors can fit in the same space.

Page 5: 1 © R. Guerraoui Seth Gilbert  Professor: Rachid Guerraoui Assistants: M. Kapalka and A. Dragojevic Distributed Programming Laboratory.

5

(hat tip: Simon Peyton-Jones)

Clock speed

flattening sharply

Transistor count still

rising

Slide borrowed from Maurice Herlihy’s talk at PODC 2008:

“The Future of Distributed Computing: Renaissance or Reformation?”

Page 6: 1 © R. Guerraoui Seth Gilbert  Professor: Rachid Guerraoui Assistants: M. Kapalka and A. Dragojevic Distributed Programming Laboratory.

6

Speed will be achieved by having several processors work on independent parts of a task.

But

The processors would occasionally need to pause and synchronize.

But

If the task is shared, then pure parallelism is usually impossible and, at best, inefficient.

Page 7: 1 © R. Guerraoui Seth Gilbert  Professor: Rachid Guerraoui Assistants: M. Kapalka and A. Dragojevic Distributed Programming Laboratory.

7

Concurrent computing for the masses

Forking processes might be more frequent

But…

Concurrent accesses to shared objects might become more problematic and harder.

Page 8: 1 © R. Guerraoui Seth Gilbert  Professor: Rachid Guerraoui Assistants: M. Kapalka and A. Dragojevic Distributed Programming Laboratory.

8

How do devices synchronize?

Shared object

Concurrent processes

Page 9: 1 © R. Guerraoui Seth Gilbert  Professor: Rachid Guerraoui Assistants: M. Kapalka and A. Dragojevic Distributed Programming Laboratory.

9

Locking (mutual exclusion)

How do devices synchronize?

Page 10: 1 © R. Guerraoui Seth Gilbert  Professor: Rachid Guerraoui Assistants: M. Kapalka and A. Dragojevic Distributed Programming Laboratory.

10

Locked object

One process at a time

How do devices synchronize?

Page 11: 1 © R. Guerraoui Seth Gilbert  Professor: Rachid Guerraoui Assistants: M. Kapalka and A. Dragojevic Distributed Programming Laboratory.

11

Locking (mutual exclusion)

Difficult: 50% of the bugs reported in Java come from the use of « synchronized »

Fragile: a process holding a lock prevents all others from progressing

Other: deadlock, livelock, priority inversion, etc.

How do devices synchronize?

Page 12: 1 © R. Guerraoui Seth Gilbert  Professor: Rachid Guerraoui Assistants: M. Kapalka and A. Dragojevic Distributed Programming Laboratory.

12

Processes are asynchronous

Page faultsPre-emptionsFailuresCache misses, …

A process can be delayed by millions of instructions …

Why is locking hard?

Page 13: 1 © R. Guerraoui Seth Gilbert  Professor: Rachid Guerraoui Assistants: M. Kapalka and A. Dragojevic Distributed Programming Laboratory.

13

Alternative to locking?

Page 14: 1 © R. Guerraoui Seth Gilbert  Professor: Rachid Guerraoui Assistants: M. Kapalka and A. Dragojevic Distributed Programming Laboratory.

14

Wait-free atomic objects

Wait-freedom: every process that invokes an operation eventually returns from the invocation o Robust … unlike locking.

Atomicity: every operation appears to execute instantaneously. o As if the object were locked.

Page 15: 1 © R. Guerraoui Seth Gilbert  Professor: Rachid Guerraoui Assistants: M. Kapalka and A. Dragojevic Distributed Programming Laboratory.

15

In short

This course shows how to wait-free implement high-

level atomic objects out of more primitive base objects.

Page 16: 1 © R. Guerraoui Seth Gilbert  Professor: Rachid Guerraoui Assistants: M. Kapalka and A. Dragojevic Distributed Programming Laboratory.

16Shared object

Concurrent processes

Page 17: 1 © R. Guerraoui Seth Gilbert  Professor: Rachid Guerraoui Assistants: M. Kapalka and A. Dragojevic Distributed Programming Laboratory.

17

Timing: • Class: Monday 9:15-11:00

• Exercise sessions: Monday 11:15-12:00– Room: BC03

– First session: Week 3

Text book:• None. Handouts on the webpage.

Final Exam:• Written, closed-book, date/time/room TBA.

Administrative Issues

Page 18: 1 © R. Guerraoui Seth Gilbert  Professor: Rachid Guerraoui Assistants: M. Kapalka and A. Dragojevic Distributed Programming Laboratory.

18

What about the other class?

« Distributed Computing » Monday, 15:15-17:00, ELA01

• The courses are complementary.– This course: shared memory.– Other course: message passing.

Consider taking both! (Recommended…)

Administrative Issues

Page 19: 1 © R. Guerraoui Seth Gilbert  Professor: Rachid Guerraoui Assistants: M. Kapalka and A. Dragojevic Distributed Programming Laboratory.

19

1. Introduction: • What is the goal of this course?

2. Model:• Processes and objects

• Atomicity

• Wait-freedom

3. Examples

Today’s Lecture:

Page 20: 1 © R. Guerraoui Seth Gilbert  Professor: Rachid Guerraoui Assistants: M. Kapalka and A. Dragojevic Distributed Programming Laboratory.

20

Processes

We assume a finite set of processes:

–Processes have unique identifiers.

–Processes are denoted as « p1, …, pN » or « p, q, r »

–Processes know each other.

–Processes can coordinate via shared objects.

Page 21: 1 © R. Guerraoui Seth Gilbert  Professor: Rachid Guerraoui Assistants: M. Kapalka and A. Dragojevic Distributed Programming Laboratory.

21

Processes

We assume a finite set of processes:

–Each process models a sequential program.

–Each clock tick each process takes a step.

– In each step, a process:

a) Performs some computation. (LOCAL)

b) Initiates an operation on a shared object. (GLOBAL)

c) Receives a response from an operation. (GLOBAL)

–We make no assumptions on process (relative) speeds. (Asynchronous)

Page 22: 1 © R. Guerraoui Seth Gilbert  Professor: Rachid Guerraoui Assistants: M. Kapalka and A. Dragojevic Distributed Programming Laboratory.

22

Processes

p1

p2

p3

Page 23: 1 © R. Guerraoui Seth Gilbert  Professor: Rachid Guerraoui Assistants: M. Kapalka and A. Dragojevic Distributed Programming Laboratory.

23

ProcessesCrash Failures:

A process either executes the algorithm assigned to it or crashes.

A process that crashes does not recover.

A process that does not crash in a given execution (computation or run) is called correct (in that execution).

Page 24: 1 © R. Guerraoui Seth Gilbert  Professor: Rachid Guerraoui Assistants: M. Kapalka and A. Dragojevic Distributed Programming Laboratory.

24

Processes

p1

p2

p3

crash

Page 25: 1 © R. Guerraoui Seth Gilbert  Professor: Rachid Guerraoui Assistants: M. Kapalka and A. Dragojevic Distributed Programming Laboratory.

25

On objects and processes

Processes interact via shared objects:

A process can initiate an operation on a particular object.

Every operation is expected to return a reply.

Each process can initiate only one operation at a time.

Page 26: 1 © R. Guerraoui Seth Gilbert  Professor: Rachid Guerraoui Assistants: M. Kapalka and A. Dragojevic Distributed Programming Laboratory.

26

Processes

p1

p2

p3

operation

operation

operation

Page 27: 1 © R. Guerraoui Seth Gilbert  Professor: Rachid Guerraoui Assistants: M. Kapalka and A. Dragojevic Distributed Programming Laboratory.

27

On objects and processes

Sequentiality:

– After invoking an operation op1 on some object O1…

– A process does not invoke a new operation on the same or on some other object…

– Until it receives the reply for op1.

Remark. Sometimes we talk about operations when we should be talking about operation invocations

Page 28: 1 © R. Guerraoui Seth Gilbert  Professor: Rachid Guerraoui Assistants: M. Kapalka and A. Dragojevic Distributed Programming Laboratory.

28

Processes

p1

p2

p3

operation

operation

operation

Page 29: 1 © R. Guerraoui Seth Gilbert  Professor: Rachid Guerraoui Assistants: M. Kapalka and A. Dragojevic Distributed Programming Laboratory.

29

Atomicity

We mainly focus in this course on how to implement atomic objects.

Atomicity (or linearizability):

Every operation appears to execute at some indivisible point in time.

This is called the linearization point.

This point is between the invocation and the reply.

Page 30: 1 © R. Guerraoui Seth Gilbert  Professor: Rachid Guerraoui Assistants: M. Kapalka and A. Dragojevic Distributed Programming Laboratory.

30

Atomicity

p1

p2

p3

operation

operation

operation

Page 31: 1 © R. Guerraoui Seth Gilbert  Professor: Rachid Guerraoui Assistants: M. Kapalka and A. Dragojevic Distributed Programming Laboratory.

31

Atomicity

p1

p2

p3

operation

operation

operation

Page 32: 1 © R. Guerraoui Seth Gilbert  Professor: Rachid Guerraoui Assistants: M. Kapalka and A. Dragojevic Distributed Programming Laboratory.

32

Atomicity (the crash case)

p1

p2

p3

operation

operation

operation

p2

crash

Page 33: 1 © R. Guerraoui Seth Gilbert  Professor: Rachid Guerraoui Assistants: M. Kapalka and A. Dragojevic Distributed Programming Laboratory.

33

Atomicity (the crash case)

p1

p2

p3

operation

operation

operation

p2

Page 34: 1 © R. Guerraoui Seth Gilbert  Professor: Rachid Guerraoui Assistants: M. Kapalka and A. Dragojevic Distributed Programming Laboratory.

34

Atomicity (the crash case)

p1

p2

p3

operation

operation

p2

Page 35: 1 © R. Guerraoui Seth Gilbert  Professor: Rachid Guerraoui Assistants: M. Kapalka and A. Dragojevic Distributed Programming Laboratory.

35

Atomicity

Theorem:Consider executions of algorithm A in which every operation completes.

If every such execution is atomic, then A guarantees atomicity in all executions (even those with operations that do not complete).

Page 36: 1 © R. Guerraoui Seth Gilbert  Professor: Rachid Guerraoui Assistants: M. Kapalka and A. Dragojevic Distributed Programming Laboratory.

36

We mainly focus in this course on wait-free implementations

An implementation is wait-free if:

• Any correct process that invokes an operation eventually gets a reply.

• This does not depend on any other process.

• Other processes may crash or be very slow.

Wait-freedom

Page 37: 1 © R. Guerraoui Seth Gilbert  Professor: Rachid Guerraoui Assistants: M. Kapalka and A. Dragojevic Distributed Programming Laboratory.

37

Wait-freedom

p1

p2

p3

operation

Page 38: 1 © R. Guerraoui Seth Gilbert  Professor: Rachid Guerraoui Assistants: M. Kapalka and A. Dragojevic Distributed Programming Laboratory.

38

Wait-freedom

Wait-freedom conveys the robustness of the implementation

With a wait-free implementation, a process gets replies despite the crash of the n-1 other processes

Note that this precludes implementations based on locks (i.e., mutual exclusion).

Page 39: 1 © R. Guerraoui Seth Gilbert  Professor: Rachid Guerraoui Assistants: M. Kapalka and A. Dragojevic Distributed Programming Laboratory.

39

Wait-freedom

p1

p2

p3

crash

operation

crash

Page 40: 1 © R. Guerraoui Seth Gilbert  Professor: Rachid Guerraoui Assistants: M. Kapalka and A. Dragojevic Distributed Programming Laboratory.

40

1. Introduction: • What is the goal of this course?

2. Model:• Processes and objects

• Atomicity

• Wait-freedom

3. Examples

Today’s Lecture:

Page 41: 1 © R. Guerraoui Seth Gilbert  Professor: Rachid Guerraoui Assistants: M. Kapalka and A. Dragojevic Distributed Programming Laboratory.

41

Most synchronization primitives (problems) can be precisely expressed as atomic objects (implementations)

Studying how to ensure robust synchronization boils down to studying wait-free atomic object implementations

Motivation

Page 42: 1 © R. Guerraoui Seth Gilbert  Professor: Rachid Guerraoui Assistants: M. Kapalka and A. Dragojevic Distributed Programming Laboratory.

42

Example 1

The reader/writer synchronization problem corresponds to the register object

Basically, the processes need to read or write a shared data structure such that the value read by a process at a time t, is the last value written before t

Page 43: 1 © R. Guerraoui Seth Gilbert  Professor: Rachid Guerraoui Assistants: M. Kapalka and A. Dragojevic Distributed Programming Laboratory.

43

Register

A register has two operations:

– read()

– write()

Assume (for simplicity) that: – a register contains an integer– the register is denoted by x – the register is initially 0

Page 44: 1 © R. Guerraoui Seth Gilbert  Professor: Rachid Guerraoui Assistants: M. Kapalka and A. Dragojevic Distributed Programming Laboratory.

44

Read/Write Register

Sequential specification: read()

return(x)

write(v) x v; return(ok)

Page 45: 1 © R. Guerraoui Seth Gilbert  Professor: Rachid Guerraoui Assistants: M. Kapalka and A. Dragojevic Distributed Programming Laboratory.

45

Atomicity?

p1

p2

p3

write(1) - ok

read() - 2

write(2) - ok

Page 46: 1 © R. Guerraoui Seth Gilbert  Professor: Rachid Guerraoui Assistants: M. Kapalka and A. Dragojevic Distributed Programming Laboratory.

46

Atomicity?

p1

p2

p3

write(1) - ok

read() - 2

write(2) - ok

Page 47: 1 © R. Guerraoui Seth Gilbert  Professor: Rachid Guerraoui Assistants: M. Kapalka and A. Dragojevic Distributed Programming Laboratory.

47

Atomicity?

p1

p2

p3

write(1) - ok

read() - 1

write(2) - ok

Page 48: 1 © R. Guerraoui Seth Gilbert  Professor: Rachid Guerraoui Assistants: M. Kapalka and A. Dragojevic Distributed Programming Laboratory.

48

Atomicity?

p1

p2

p3

write(1) - ok

read() - 1

write(2) - ok

Page 49: 1 © R. Guerraoui Seth Gilbert  Professor: Rachid Guerraoui Assistants: M. Kapalka and A. Dragojevic Distributed Programming Laboratory.

49

Atomicity?

p1

p2

p3

read() - 1

read() - 1

write(1) - ok

Page 50: 1 © R. Guerraoui Seth Gilbert  Professor: Rachid Guerraoui Assistants: M. Kapalka and A. Dragojevic Distributed Programming Laboratory.

50

Atomicity?

p1

p2

p3

write(1) - ok

read() - 1

read() - 0

Page 51: 1 © R. Guerraoui Seth Gilbert  Professor: Rachid Guerraoui Assistants: M. Kapalka and A. Dragojevic Distributed Programming Laboratory.

51

Atomicity?

p1

p2

p3

write(1) - ok

read() - 0

read() - 0

Page 52: 1 © R. Guerraoui Seth Gilbert  Professor: Rachid Guerraoui Assistants: M. Kapalka and A. Dragojevic Distributed Programming Laboratory.

52

Atomicity?

p1

p2

p3

write(1) - ok

read() - 0

read() - 0

Page 53: 1 © R. Guerraoui Seth Gilbert  Professor: Rachid Guerraoui Assistants: M. Kapalka and A. Dragojevic Distributed Programming Laboratory.

53

Atomicity?

p1

p2

p3

write(1) - ok

read() - 0

read() - 0

Page 54: 1 © R. Guerraoui Seth Gilbert  Professor: Rachid Guerraoui Assistants: M. Kapalka and A. Dragojevic Distributed Programming Laboratory.

54

Atomicity?

p1

p2

p3

write(1) - ok

read() - 1

read() - 0

Page 55: 1 © R. Guerraoui Seth Gilbert  Professor: Rachid Guerraoui Assistants: M. Kapalka and A. Dragojevic Distributed Programming Laboratory.

55

Atomicity?

p1

p2

p3

write(1) - ok

read() - 1

read() - 1

Page 56: 1 © R. Guerraoui Seth Gilbert  Professor: Rachid Guerraoui Assistants: M. Kapalka and A. Dragojevic Distributed Programming Laboratory.

56

Example 2

Producer/consumer synchronization: corresponds to the queue object.

Producer processes create items; consumer processes use items.

Requirements:

– An item cannot be consumed by 2 processes.

– The first item produced is the first consumed (FIFO).

Page 57: 1 © R. Guerraoui Seth Gilbert  Professor: Rachid Guerraoui Assistants: M. Kapalka and A. Dragojevic Distributed Programming Laboratory.

57

Queue

A queue has two operations: enqueue() and dequeue()

We assume that a queue internally maintains a list x which supports:

– append(): put an item at the end of the list;

– remove(): remove an element from the head of the list.

Page 58: 1 © R. Guerraoui Seth Gilbert  Professor: Rachid Guerraoui Assistants: M. Kapalka and A. Dragojevic Distributed Programming Laboratory.

58

Sequential specification

dequeue() if (x = 0) then return(nil); else return(x.remove())

enqueue(v) x.append(v); return(ok)

Page 59: 1 © R. Guerraoui Seth Gilbert  Professor: Rachid Guerraoui Assistants: M. Kapalka and A. Dragojevic Distributed Programming Laboratory.

59

Atomicity?

p1

p2

p3

enq(x) - ok

deq() - y

deq() - x

enq(y) - ok

Page 60: 1 © R. Guerraoui Seth Gilbert  Professor: Rachid Guerraoui Assistants: M. Kapalka and A. Dragojevic Distributed Programming Laboratory.

60

Atomicity?

p1

p2

p3

enq(x) - ok

deq() - y

deq() - x

enq(y) - ok

Page 61: 1 © R. Guerraoui Seth Gilbert  Professor: Rachid Guerraoui Assistants: M. Kapalka and A. Dragojevic Distributed Programming Laboratory.

61

Atomicity?

p1

p2

p3

enq(x) - ok

deq() - y

enq(y) - ok

Page 62: 1 © R. Guerraoui Seth Gilbert  Professor: Rachid Guerraoui Assistants: M. Kapalka and A. Dragojevic Distributed Programming Laboratory.

62

Atomicity?

p1

p2

p3

enq(x) - ok

deq() - x

enq(y) - ok

Page 63: 1 © R. Guerraoui Seth Gilbert  Professor: Rachid Guerraoui Assistants: M. Kapalka and A. Dragojevic Distributed Programming Laboratory.

63

Content

(1) Implementing registers

(2) The power & limitation of registers

(3) Universal objects & synchronization number

(4) The power of time & failure detection

(5) Tolerating failure prone objects

(6) Anonymous implementations

(7) Transaction memory

Page 64: 1 © R. Guerraoui Seth Gilbert  Professor: Rachid Guerraoui Assistants: M. Kapalka and A. Dragojevic Distributed Programming Laboratory.

64

In shortThis course shows how to wait-free implement high-level atomic objects out of basic objects

Remark: unless explicitely stated otherwise: objects mean atomic objects and implementations are wait-free.