1 / 26

The Complexity of Distributed Algorithms

The Complexity of Distributed Algorithms. Space complexity How much space is needed per process to run an algorithm? (measured in terms of N, the size of the network) Time complexity What is the max. time (number of steps) needed to complete the execution of the algorithm?

rrebello
Download Presentation

The Complexity of Distributed Algorithms

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


  1. The Complexity of Distributed Algorithms

  2. Space complexity How much space is needed per process to run an algorithm? (measured in terms of N, the size of the network) Time complexity What is the max. time (number of steps) needed to complete the execution of the algorithm? Message complexity How many message are exchanged to complete the execution of the algorithm? Common measures

  3. An example Consider broadcasting in an n-cube (here n=3). Process 0 is the source, broadcasting the value of x[0]. Let x[0] = v. N = total number of processes = 2n = 8 Each process j > 0 has a variable x[j], whose initial value is arbitrary. Finally, x[0] = x[1] = x[2] = … = x[7] = v source

  4. {Process 0} m.value := x[0]; send m to all neighbors {Process i > 0} repeat receive m {m contains the value}; if m is received for the first time thenx[i] := m.value; send x[i] to each neighbor j > I else discard m end if forever What is the (1) message complexity (2) space complexity per process? Broadcasting using message passing m m m Number of edges log2N

  5. {Process 0} x[0] := v {Process i > 0} repeat if there exists a neighbor j < i : x[i] ≠ x[j] then x[i] := x[j] (PULL DATA) {this is a step} else skip end if forever What is the time complexity? (i.e. how many steps are needed?) Broadcasting using shared memory Arbitrarily large. Why?

  6. {Process 0} x[0] := v {Process i > 0} repeat if there exists a neighbor j < i : x[i] ≠ x[j] then x[i] := x[j] (PULL DATA) {this is a step} else skip end if forever Broadcasting using shared memory 15 12 27 10 53 14 99 32 Node 7 can keep copying from 5, 6, 4 indefinitely long before the value in node 0 is eventually copied into it.

  7. Now, use “large atomicity”, where in one step, a process j reads the state x[k] of each neighbor k < j, and updates x[j] only when these are equal, but different from x[j]. What is the time complexity? How many steps are needed? The time complexity is now O(n2) (n = dimension of the cube) Broadcasting using shared memory

  8. Rounds are truly defined for synchronous systems. An asynchronous round consists of a number of steps where every eligible process (including the slowest one) takes at least one step. How many rounds will you need to complete the broadcast using the large atomicity model? Time complexity in rounds An easier way to measure complexity in rounds is to assume that processes executing their steps in lock-step synchrony

  9. Representing distributed algorithms • Why do we need these? • Don’t we already know a • lot about programming? • Well, you need to capture the notions of atomicity, non-determinism, fairnessetc. These concepts are not built into languages like JAVA, C++, python etc!

  10. Syntax & semantics: guarded actions <guard G><action A> is equivalent to if G then A (Borrowed from E.W. Dijkstra: A Discipline of Programming)

  11. Syntax & semantics: guarded actions • Sequential actions S0; S1; S2; . . . ; Sn • Alternative constructsif . . . . . . . . . . fi • Repetitive constructsdo . . . . . . . . . od The specification is useful for representing abstract algorithms, not executable codes.

  12. Syntax & semantics Alternative construct if G1 S1 [] G2 S2 … [] GnSn fi When no guard is true, skip (do nothing). When multiple guards are true, the choice of the action to be executed is completely arbitrary.

  13. Syntax & semantics Repetitive construct do G1S1 [] G2 S2 . [] Gn Sn od Keep executing the actions until all guards are false and the program terminates. When multiple guards are true, the choice of the action is arbitrary.

  14. Example: graph coloring There are four processes and two colors 0, 1. The system has to reach a configuration in which no two neighboring processes have the same color. 1 0 0 {program for process i} c[i] = color of process i do j  neighbor(i): c(j) = c(i)  c(i) := 1- c(i) od 1 Will the above computation terminate?

  15. Consider another example program uncertain; define x : integer; initially x = 0 do x < 4  x := x + 1 [] x = 3  x := 0 od Question. Will the program terminate? (Our goal here is to understand fairness)

  16. The adversary A distributed computation can be viewed as a game between the system and an adversary. The adversary may come up with feasibleschedules to challenge the system (and cause “bad things”). A correct algorithm must be able to prevent those bad things from happening.

  17. Non-determinism Token server (Program for a token server - it has a single token} repeat if (req1 ∧ token) then give the token to client1 elseif (req2 ∧ token) then give the token to client2 elseif (req3 ∧ token) then give the token to client3 forever Now, assume that all three requests are sent simultaneously. Client 2 or 3 may never get the token! The outcome could have been different if the server makes a non-deterministic choice. 3 1 2

  18. Examples of non-determinism If there are multiple processes ready to execute actions, then who will execute the action first is nondeterministic Message propagation delays are arbitrary and the order of message reception is non-deterministic Determinism caters to a specific order and is a special case of non-determinism.

  19. Atomic = all or nothing Atomic actions = indivisible actions do red message  x:= 0 {red action} [] blue message  x:=7 {blue action} od Regardless of how nondeterminism is handled, we would expect that the value of x will be an arbitrary sequence of 0's and 7's. Right or wrong? Atomicity (or granularity) x

  20. do red message  x:= 0 {red action} [] blue message  x:=7 {blue action} od Let x be a 3-bit integer x2 x1 x0, so x:=7 means (x2:=1, x1:= 1, x2:=1), and x:=0 means (x2:=0, x1:= 0, x2:=0) If the assignment is not atomic, then many interleavings are possible, leading to any possible value of x between 0 and 7 Atomicity (continued) x So, the answer depends on the atomicity of the assignment

  21. Does hardware guarantee any form of atomicity? Yes! (examples?) Transactions are atomic by definition (in spite of process failures). Also, critical section codes are atomic. We will assume that G  A is an “atomic operation.” Does it make a difference if it is not so? Atomicity (continued) if x ≠ y  y:= x fi x y if x ≠ y  y:= x fi

  22. {Program for P} define b: boolean initially b = true do b  send msg m to Q [] ¬ empty(R,P) receive msg; b := false od Suppose it takes 15 seconds to send the message. After 5 seconds, P receives a message from R. Will it stop sending the remainder of the message? NO. Atomicity (continued) R P Q b

  23. Fairness Defines the choices or restrictions on the scheduling of actions. No such restriction implies an unfair scheduler. For fair schedulers, the following types of fairness have received attention: • Unconditional fairness • Weak fairness • Strong fairness Scheduler / demon / adversary

  24. Program test define x : integer {initial value unknown} do true  x : = 0 [] x = 0  x : = 1 [] x = 1  x : = 2 od An unfair schedulermay never schedule the second (or the third actions). So, x may always be equal to zero. An unconditionally fair scheduler will eventually give every statement a chance to execute without checking their eligibility. (Example: process scheduler in a multiprogrammed OS.) Fairness

  25. Program test define x : integer {initial value unknown} do true  x : = 0 [] x = 0  x : = 1 [] x = 1  x : = 2 od A scheduler is weakly fair, when it eventually executes every guarded action whose guard becomes true, and remains true thereafter A weakly fair scheduler will eventually execute the second action, but may never execute the third action. Why? Weak fairness

  26. Program test define x : integer {initial value unknown} do true  x : = 0 [] x = 0  x : = 1 [] x = 1  x : = 2 od A scheduler is strongly fair, when it eventually executes every guarded action whose guard is true infinitely often. The third statement will be executed under a strongly fair scheduler. Why? Strong fairness Study more examples to reinforce these concepts

More Related