-
Notifications
You must be signed in to change notification settings - Fork 1
/
Copy pathcmdline.ggo
157 lines (132 loc) · 7.22 KB
/
cmdline.ggo
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
package "mutilate"
version "0.1"
usage "mutilate -s server[:port] [options]"
description "\"High-performance\" memcached benchmarking tool"
args "-c cc --show-required -C --default-optional -l"
option "verbose" v "Verbosity. Repeat for more verbose." multiple
option "quiet" - "Disable log messages."
text "\nBasic options:"
option "server" s "Memcached server hostname[:port]. \
Repeat to specify multiple servers." string multiple
option "binary" - "Use binary memcached protocol instead of ASCII."
option "qps" q "Target aggregate QPS. 0 = peak QPS." int default="0"
option "time" t "Maximum time to run (seconds)." int default="5"
option "keysize" K "Length of memcached keys (distribution)."
string default="30"
option "valuesize" V "Length of memcached values (distribution)."
string default="200"
option "getcount" G "Number of gets in multiget (distribution)."
string default="1"
option "records" r "Number of memcached records to use. \
If multiple memcached servers are given, this number is divided \
by the number of servers." int default="10000"
option "update" u "Ratio of set:get commands." float default="0.0"
text "\nAdvanced options:"
option "username" U "Username to use for SASL authentication." string
option "password" P "Password to use for SASL authentication." string
option "threads" T "Number of threads to spawn." int default="1"
option "affinity" - "Set CPU affinity for threads, round-robin"
option "connections" c "Connections to establish per server." int default="1"
option "numreqperconn" n "Number of requests per connection (distribution). \
Once a connection reaches this number, it is torn down and re-started. \
This option facilitates experiments involving ongoing opening and closing \
of connections to the memcached server; it is passed to all agents and \
ignored on the master which takes samples. Default behaviour is to use the \
same connection for all requests." string default="0"
option "depth" d "Maximum depth to pipeline requests. Agents may locally \
override this setting." int default="1"
option "roundrobin" R "Assign threads to servers in round-robin fashion. \
By default, each thread connects to every server."
option "iadist" i "Inter-arrival distribution (distribution). Note: \
The distribution will automatically be adjusted to match the QPS given \
by --qps." string default="exponential"
option "skip" S "Skip transmissions if previous requests are late. This \
harms the long-term QPS average, but reduces spikes in QPS after \
long latency requests."
option "moderate" - "Enforce a minimum delay of ~1/lambda between requests."
option "noload" - "Skip database loading."
option "loadonly" - "Load database and then exit."
option "blocking" B "Use blocking epoll(). May increase latency."
option "no_nodelay" - "Don't use TCP_NODELAY."
option "warmup" w "Warmup time before starting measurement." int
option "wait" W "Time to wait after startup to start measurement." int
option "save" - "Record latency samples to given file." string
option "search" - "Search for the QPS where N-order statistic < Xus. \
(i.e. --search 95:1000 means find the QPS where 95% of requests are \
faster than 1000us)." string typestr="N:X"
option "scan" - "Scan latency across QPS rates from min to max."
string typestr="min:max:step"
option "report-stats" - "Report statistics every interval seconds. By default, \
report at the end of the benchmark." float typestr="interval"
option "qps-function" - "Adjust the target QPS during the benchmark according \
to the given function." string
option "qps-warmup" - "Warmup at given rate or rate QPS_function(t=0) for the \
given number of seconds." string typestr="time[:rate]"
option "stop-latency" - "Stop scanning when N-order statistic > Xus. \
(i.e. --stop-latency 95:1000 means stop scanning when 95% of requests are \
slower than 1000us)." string typestr="N:X"
option "scan-search" - "Scan latency and search for the QPS. (i.e. \
--scan-search 95:1000,20:10:100,500:50 means scan from 20KQPS to 100KQPS in
10KQPS steps and then in 500KQPS steps while 95% of requests are faster than
1000us, then go back one step, and do 50KPQS steps)." string
option "src-port" - "A list of IP source ports to use in order to achieve \
desired RSS queue distribution." string multiple
option "popularity" - "Key popularity distribution." string default="uniform"
option "agent-sampling" - "each agent will sample connection stats and \
if `save` argument has been given it is also is applied to agents" flag off
text "\nAgent-mode options:"
option "agentmode" A "Run client in agent mode."
option "agent" a "Enlist remote agent." string typestr="host" multiple
option "agent_port" p "Agent port." string default="5556"
option "lambda_mul" l "Lambda multiplier. Increases share of \
QPS for this client." int default="1"
option "measure_connections" C "Master client connections per server, \
overrides --connections." int
option "measure_qps" Q "Explicitly set master client QPS, \
spread across threads and connections." int
option "measure_depth" D "Set master client connection depth." int
text "\nDPDK options:"
option "my-mac" - "The MAC address of the agent." string
option "my-ip" - "The IP address of the agent." string
option "server-mac" - "The MAC address of the server." string
option "cpu-core" - "The CPU core to run the agent on." int
text "
The --measure_* options aid in taking latency measurements of the
memcached server without incurring significant client-side queuing
delay. --measure_connections allows the master to override the
--connections option. --measure_depth allows the master to operate as
an \"open-loop\" client while other agents continue as a regular
closed-loop clients. --measure_qps lets you modulate the QPS the
master queries at independent of other clients. This theoretically
normalizes the baseline queuing delay you expect to see across a wide
range of --qps values.
"
text "
Some options take a 'distribution' as an argument.
Distributions are specified by <distribution>[:<param1>[,...]].
Parameters are not required. The following distributions are supported:
[fixed:]<value> Always generates <value>.
uniform:<max> Uniform distribution between 0 and <max>.
normal:<mean>,<sd> Normal distribution.
exponential:<lambda> Exponential distribution.
pareto:<loc>,<scale>,<shape> Generalized Pareto distribution.
gev:<loc>,<scale>,<shape> Generalized Extreme Value distribution.
To recreate the Facebook \"ETC\" request stream from [1], the
following hard-coded distributions are also provided:
fb_value = a hard-coded discrete and GPareto PDF of value sizes
fb_key = \"gev:30.7984,8.20449,0.078688\", key-size distribution
fb_ia = \"pareto:0.0,16.0292,0.154971\", inter-arrival time dist.
[1] Berk Atikoglu et al., Workload Analysis of a Large-Scale Key-Value Store,
SIGMETRICS 2012
"
text "
The following QPS functions are supported:
triangle:min:max:period:maxhold Triangle wave.
qtriangle:min:max:period:step Quantized triangle wave.
sin_noise:min:max:period:namp:nupdate Sine wave plus noise.
"
text "
The following popularity distributions are supported:
uniform Uniform distribution.
zipf:<theta> Zipf distribution.
"