forked from jaynavar/Copysets
-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathRamcloud.py
More file actions
44 lines (36 loc) · 1.64 KB
/
Ramcloud.py
File metadata and controls
44 lines (36 loc) · 1.64 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
import Replication
import scipy.misc
class RamcloudScheme(Replication.ReplicationScheme):
def __init__(self, *args, **kwargs):
super(RamcloudScheme, self).__init__(*args, **kwargs)
self.chunksPerNode = 8000
# comes from S = P (R - 1)
# S: scatter width
# P: number of permutations (fixed at 1)
# R: replication factor
self.scatterWidth = self.replicationFactor - 1
class RamcloudRandomScheme(RamcloudScheme):
def probabilityOfDataLossSimulation(self, numNodes):
return self.simulationRandomDataLoss(
self.trials, numNodes, self.chunksPerNode, self.replicationFactor,
self.scatterWidth)
def probabilityOfDataLossComputation(self, numNodes):
return self.randomReplicationDataLoss(
numNodes, self.chunksPerNode, self.replicationFactor)
@staticmethod
def plotInfo():
return Replication.PlotInfo('RAMCloud, Random Replication',
linestyle='--', marker='s', color='blue')
class RamcloudCopysetScheme(RamcloudScheme):
def probabilityOfDataLossSimulation(self, numNodes):
return self.simulationCopysetDataLoss(
self.trials, numNodes, self.chunksPerNode, self.replicationFactor,
self.scatterWidth)
def probabilityOfDataLossComputation(self, numNodes):
return self.copysetReplicationDataLoss(
numNodes, self.chunksPerNode, self.replicationFactor, self.scatterWidth)
@staticmethod
def plotInfo():
return Replication.PlotInfo('RAMCloud, Copyset Replication',
linestyle='--', marker='o', markersize=10,
color='maroon')