Naive Vector Clocks and Singhal & Kshemkalyani's Vector Clocks Presented by: :: Abdulkareem...

Preview:

Citation preview

Naive Vector Clocks and Naive Vector Clocks and Singhal & Kshemkalyani's Singhal & Kshemkalyani's

Vector ClocksVector Clocks

Presented by:Presented by:

:::: Abdulkareem Alali Abdulkareem Alali ::::

Briefly :Naive Vector Clocks vs. SK’s

Vector ClocksNaïve Vector Clocks ::: Vector clock of a system of N processes is an

array of N logical clocks, 1 per process, a local copy of which is kept in each process with the following rules for clock updates:

:: Initially all clocks are 0. For an internal event, increments its own logical clock in the vector by 1. Before send a message, it increments its own logical clock in the vector by 1. Each time a process receives a message, it increments its own logical clock in the vector by 1 and updates each element in its vector by taking the maximum of the value in its own vector clock and the value in the vector in the received message (for every element).

Briefly :Naive Vector Clocks vs. SK’s

Vector Clocks [cont.]SK’s Vector Clocks

:: Based on the observation that between successive message sends to the same process, only a few entries of the vector clock at the sender process are likely to change.

:: On average the size of the time stamp on a message will be less than N.

Approach:: All processes start by calling the task

Processing().

:: Processing() with some probability depending on the MAX_NODES will update the logical clock by 1, else will send a message randomly to other process.

:: In case the message received at any process, updates hold and Processing() will be called.

:: For failed message sending, A delay event will be invoked for IMER_ONE_SHOT 1024 and then Processing() will be called.

Code Architecturetask Processing(){

if ( choice > P(MAX_NODES))/*P is a probability function with a high chance return a number larger than choice*/

{clock[LOCAL_ADDRESS]++;}else{target = Random(MAX_NODES);

/*Random is a function the returns a random number between 0 - MAX_NODES*/ sendMessageTo(target);

}event receiveMessage( mptr ){

clock[LOCAL_ADDRESS]++;MessagesCounter++;for ( i = 0; i < MAX_NODES; i++){if ( mptr->clock[i] > 0 &&

mptr->clock[i] != clock[i] )ChangesCounter++;}

}

Average Naive vs SK

0

500

1000

1500

2000

2500

3000

3500

3 4 5 6 7 8 9 10 11 12 13 14 15 16 17

Nodes

Co

st(B

ytes

)

NVC

SKCV

Standard Deviation Naive vs SK

0

1000

2000

3000

4000

5000

6000

3 4 5 6 7 8 9 10 11 12 13 14 15 16 17

Nodes

Co

st(B

ytes

)

NVC

SKVC

SK-VC / NVC Average

0

0.1

0.2

0.3

0.4

0.5

0.6

3 4 5 6 7 8 9 10 11 12 13 14 15 16 17

Nodes

SK

-VC

/ N

VC

Ave

rag

e

SK-VC / NVC Avg

SK-VC / NVC Standard Deviation

0

0.1

0.2

0.3

0.4

0.5

0.6

0.7

0.8

0.9

3 4 5 6 7 8 9 10 11 12 13 14 15 16 17

Nodes

SK

-VC

/ N

VC

Sta

nd

ard

Dev

iati

on

SK-VC / NVC SD

Conclusion

:: As mentioned before we conclude that SK vector clocks algorithm - as in the targeted approach – would maintain lower cost than the Naive vector clock implementation and that would appear clearly in huge systems.

Future Work

:: In general, with a much better approach we could have more precise results that really simulate the real wireless systems because Randomness is not what the real world behaves.

:: In special, for my approach, Function P could be studied in more depth to have a choice more balanced every time. The one I’m using right now is too simple.

Problems

:: Time shortage (my problem).:: Very hard to trace the code.:: Memory limitations.:: I faced a major problem with

Random generating function. Till at the end I coded something on my own.

THE END

Recommended