-
Notifications
You must be signed in to change notification settings - Fork 0
/
paxos.properties
191 lines (153 loc) · 5.72 KB
/
paxos.properties
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
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
#################################
### JPaxos configuration file ###
#################################
# units: bytes or milliseconds, unless other specified
### List of processes ###
# A process is described by:
# process.<id> = <address>:<port for replicas>:<port for clients>
process.0 = smith.ecn.purdue.edu:2021:3001
process.1 = morpheus.ecn.purdue.edu:2022:3002
process.2 = neo.ecn.purdue.edu:2023:3003
### System model ###
# Failure detector
#
# How long to wait until suspecting the leader.
#Default: 1000
FDSuspectTimeout = 1000
# Interval between sending heartbeats.
# Default: 500
FDSendTimeout = 500
# The crash model for this system. All crash models are not-byzantine.
# All crash-models may decide as long as the majority is up.
#
# FullStableStorage all logs are written on disk. Replicas may recover.
# Supports catastrophic failures
# (i.e. all replicas may crash, f = n)
#
# ViewSS disk used on view change only. Replicas may recover.
# Majority must be always up
#
# EpochSS disk used on startup only. Replicas may recover.
# Majority must be always up
#
# CrashStop Replicas may not recover.
#
# Default: FullStableStorage
#CrashModel = FullStableStorage
CrashModel = EpochSS
# Location of the stable storage - the place for files of JPaxos logs.
# Will be used if the CrashModel needs stable storage.
# Please note, that each replica will append /<LocalId> to the log path.
#
# This setting may be overwritten also in code, with replica.setLogPath() method.
#
# Default: jpaxosLogs
LogPath = jpaxosLogs
### Concurrency and optimization setup ###
# Maximum number of concurrently proposed instances.
# Default: 2
WindowSize = 4
# Maximum size of batches.
# Default: 65507
#
# The leader will try to batch requests in a single proposal to improve performance.
# This setting controls how big the batches can be before having to be sent.
# This value may be exceeded if a request is larger than the BatchSize.
BatchSize = 65507
# Maximum time a batch may be delayed starting from the time the first
# request is added to it.
# Default: 10
#
# A batch is sent either when it's full (reaches BatchSize) or this delay elapses.
MaxBatchDelay = 10
### Snapshotting section ###
# TODO: describe this
# Before any snapshot has been made, JPaxos needs to have an estimate of snapshot
# size in bytes.
# Default: 1024
FirstSnapshotEstimateBytes = 1024
# Ratio = \frac{log}{snapshot}. How bigger the log must be to ask
# Default 1.0
SnapshotAskRatio = 1.0
# Ratio = \frac{log}{snapshot}. How bigger the log must be to force
# Default 2.0
SnapshotForceRatio = 2.0
# Minimum count of instances before the ratio log size / snapshot size is calculated
# Default: 50
MinimumInstancesForSnapshotRatioSample = 50
# Minimum size of the log before the ratio log size / snapshot size is calculated
# Default: 10240
MinLogSizeForRatioCheckBytes = 10240
### Networking section ###
# Main protocol used to communicate between replicas. Options:
# - TCP
# - UDP
# - Generic - Uses UDP for small (<64KB) messages and TCP for larger messages
# Default: TCP
Network = TCP
# Threshold used by GenericNetwork to send packets using
# UDP (size<=MaxUDPPacketSize) or TCP (size>MaxUDPPacketSize).
# Default: 65507
MaxUDPPacketSize = 65507
# Initial time of message retransmission
# Default: 1000
RetransmitTimeoutMilisecs = 1000
# The timeout of activating periodic Catch-Up
# Default: 2000
PeriodicCatchupMilisecs = 2000
# If a TCP connection fails, how much to wait for another try
# Default: 1000
TcpReconnectMilisecs = 1000
# Number of threads used to read and write requests from clients.
# -1 for automatic tuning based on the number of CPUs available.
#
# Default: -1
replica.SelectorThreads = -1
# Whether a replica should forward client requests to the current leader or
# if should redirect the client to connect to the leader directly.
#
# Default: true
replica.ForwardClientRequests = true
# Maximum size of the batches of client requests sent by non-leader replicas to
# the leader. Applies only when request forwarding is enabled.
#
# Default: 1450
replica.ForwardMaxBatchSize = 1450
# Maximum delay since a batch with client requests is started until it is sent to
# the leader. Applies only when request forwarding is enabled.
#
# Default: 50
replica.ForwardMaxBatchDelay = 50
# Maximum a replica will wait to send an explicit ack message for a batch, counting
# from the time it sent the last ack, either piggybacked or explicit.
#
# Default: 50
replica.ClientBatchAckTimeout = 50
#################################################
# Debugging and testing settings. Do not change #
# unless you really know what you're doing. #
#################################################
# MayShareSnapshots = true
# How the replica generates client IDs.
# Options:
# - TimeBased - Prefix a timestamp generated by the server to the client ID
# - Simple - Use a sequentially generated number.
# Default: TimeBased
#
# TimeBased ensures unique IDs, even when servers crash and recover,
# under the assumption that a replica cannot crash and recover in less time than
# what is required for its local clock to advance at least one time step.
# Simple ensures unique ids only if replicas do not recover.
# Simple produces ids that are smaller and more readable than TimeBased,
# which makes debugging and testing easier.
ClientIDGenerator = TimeBased
# Enable or disable collection of performance statistics at the replica and/or at the client.
# If enabled, the results are saved to a text file.
#
# Default: false
BenchmarkRunReplica = false
BenchmarkRunClient = false
# Interval between processes changing the leader.
# In milliseconds.
# Default: 5000
test.LeaderPromoter.Interval = 10000