Overview of Maekawa•Permission based DMX solution•Each process has a quorum•Each process only has one permission to give•Process is granted access to the critical
section if it receives permission from its entire quorum
•6 Message types:▫Request, Permission, Release
Message Complexity: 3√N▫Failure, Inquire, Yield (Deadlock Messages)
Message Complexity: 6√N
4
Billiards Algorithm
1st Path2nd Path 3rd Path
1st Path 2nd Path3rd Path
Where to start
Where to start
Quorums:Quorum[0]= { }Quorum[1]= { }Quorum[2]= { }Quorum[3]= { }
6
Billiards Algorithm
1st Path2nd Path 3rd Path
1st Path 2nd Path3rd Path
Where to start
Where to start
Quorums:Quorum[0]= {0, 1, 2}Quorum[1]= { }Quorum[2]= { }Quorum[3]= { }
7
Billiards Algorithm
1st Path2nd Path 3rd Path
1st Path 2nd Path3rd Path
Where to start
Where to start
Quorums:Quorum[0]= {0, 1, 2}Quorum[1]= {1, 2, 3}Quorum[2]= { }Quorum[3]= { }
8
Billiards Algorithm
1st Path2nd Path 3rd Path
1st Path 2nd Path3rd Path
Where to start
Where to start
Quorums:Quorum[0]= {0, 1, 2}Quorum[1]= {1, 2, 3}Quorum[2]= {0, 2, 3}Quorum[3]= { }
9
Billiards Algorithm
1st Path2nd Path 3rd Path
1st Path 2nd Path3rd Path
Where to start
Where to start
Quorums:Quorum[0]= {0, 1, 2}Quorum[1]= {1, 2, 3}Quorum[2]= {0, 2, 3}Quorum[3]= {0, 1, 3}
10
Non-Billiards Algorithm•Make a matrix
counting upwards
•Find the process
•Draw two lines, add all of the processes hit to the quorum.
0 1
2 3
Quorums:Quorum[0]= { }Quorum[1]= { }Quorum[2]= { }Quorum[3]= { }
11
Non-Billiards Algorithm•Make a matrix
counting upwards
•Find the process
•Draw two lines, add all of the processes hit to the quorum.
0 1
2 3
Quorums:Quorum[0]= {0, 1, 2}Quorum[1]= { }Quorum[2]= { }Quorum[3]= { }
12
Non-Billiards Algorithm•Make a matrix
counting upwards
•Find the process
•Draw two lines, add all of the processes hit to the quorum.
0 1
2 3
Quorums:Quorum[0]= {0, 1, 2}Quorum[1]= {0, 1, 3}Quorum[2]= { }Quorum[3]= { }
13
Non-Billiards Algorithm•Make a matrix
counting upwards
•Find the process
•Draw two lines, add all of the processes hit to the quorum.
0 1
2 3
Quorums:Quorum[0]= {0, 1, 2}Quorum[1]= {0, 1, 3}Quorum[2]= {0, 2, 3}Quorum[3]= { }
14
Non-Billiards Algorithm•Make a matrix
counting upwards
•Find the process
•Draw two lines, add all of the processes hit to the quorum.
0 1
2 3
Quorums:Quorum[0]= {0, 1, 2}Quorum[1]= {0, 1, 3}Quorum[2]= {0, 2, 3}Quorum[3]= {1, 2, 3}
15
Billiards vs. Non-Billiards•Testing 2 parameters: Message Complexity and
Correctness in critical section entry.•Hypothesis: Billiards will have smaller message
complexity but a worse correctness in CS entry.•Methods:
▫Set up 2 fixed quorums for each type. Run increasingly large sample sizes of CS entry. Run each test 10 times and average the results.
▫Billiards: 24 Processes, 7 Quorum Size.▫Non-Billiards: 25 Processes, 9 Quorum Size
17
Results (Cont.)
•On all tests done the correctness of CS entry was 100% for both Billiards and Non-Billiards
•Not once was there incorrect order in entry.
•Expected a wrong entry in the first 1-3 entries every once in a while.
21
Future Work
•Test different sizes of quorums, not only 2 fixed sizes.
•Force the algorithms into out-of-order situations initially and see if there is any difference in correctness between the two algorithms.
23
Conclusions
•Billiards algorithm is the all-around best algorithm for quorum creation
•Both algorithms level off in messages sent around 500 critical section entries
•No advantage to use anything other than billiards quorum creation
25
Top Related