-
Notifications
You must be signed in to change notification settings - Fork 3
Command line interface
python benchmark.py <system> <topology> <distribution> <failure>
The system to test for example etcd
--client
: The relevant system's client.
--system_logs
: The log location for the system and its clients.
--new_client_per_request
: Whether to use a new client per request or to reuse the same client. This is False by default.
The mininet topology to use.
--number-nodes
: The number of nodes in the system.
--number-clients
: the number of clients.
--link-latency
: The latency of the links between nodes. In the WAN topology this is the latency to a central switch, so the end to end latency is twice this.
The distribution of keys in the requests.
--write-ratio
: What fraction of the requests are write requests
--payload-size
: How large write requests payload are in bytes
--key-range
: The range of keys, '>' separated lower and (inclusive) upper bound of integer keys.
The failure to inject into the system. This returns some number of pertubations to inject into the system which are then applied at even intervals throughout the test.
For example none
means no failures are injected, while leader
injects two pertubations, one to kill the leader, one to bring it back up. This means that in the leader
failure case on a 60s test, it will have 20s before the leader is killed, 20s of the leader being dead and 20s after it recovers.
intermittent-<partition-type>
: These failures transition between the underlying failure being in place or removed at relatively high frequency. The frequency of transitions is governed by --mtbf
which is the length of time in seconds between each transition.