Merge pull request #140 from hussainnaqvee/patch-1
[awesomized/libmemcached] / bin / memaslap.rst
1 ==================================================
2 memaslap - Load testing and benchmarking a server
3 ==================================================
4
5 SYNOPSIS
6 --------
7
8 memaslap [options]
9
10 .. program:: memaslap
11
12 .. option:: --help
13
14 .. envvar:: MEMCACHED_SERVERS
15
16 DESCRIPTION
17 -----------
18
19 :program:`memaslap` is a load generation and benchmark tool for memcached
20 servers. It generates configurable workload such as threads, concurrency,
21 connections, run time, overwrite, miss rate, key size, value size, get/set
22 proportion, expected throughput, and so on. Furthermore, it also tests data
23 verification, expire-time verification, UDP, binary protocol, facebook test,
24 replication test, multi-get and reconnection, etc.
25
26 Memaslap manages network connections like memcached with
27 libevent. Each thread of memaslap is bound with a CPU core, all
28 the threads don't communicate with each other, and there are several socket
29 connections in each thread. Each connection keeps key size distribution,
30 value size distribution, and command distribution by itself.
31
32 You can specify servers via the :option:`memslap --servers` option or via the
33 environment variable :envvar:`MEMCACHED_SERVERS`.
34
35 FEATURES
36 --------
37
38 Memslap is developed to for the following purposes:
39
40 Manages network connections with libevent asynchronously.
41
42 Set both TCP and UDP up to use non-blocking IO.
43
44 Improves parallelism: higher performance in multi-threads environments.
45
46 Improves time efficiency: faster processing speed.
47
48 Generates key and value more efficiently; key size distribution and value size distribution are configurable.
49
50 Supports get, multi-get, and set commands; command distribution is configurable.
51
52 Supports controllable miss rate and overwrite rate.
53
54 Supports data and expire-time verification.
55
56 Supports dumping statistic information periodically.
57
58 Supports thousands of TCP connections.
59
60 Supports binary protocol.
61
62 Supports facebook test (set with TCP and multi-get with UDP) and replication test.
63
64 DETAILS
65 -------
66
67 Effective implementation of network.
68 ____________________________________
69
70 For memaslap, both TCP and UDP use non-blocking network IO. All
71 the network events are managed by libevent as memcached. The network module
72 of memaslap is similar to memcached. Libevent can ensure
73 memaslap can handle network very efficiently.
74
75 Effective implementation of multi-threads and concurrency
76 _________________________________________________________
77
78 Memslap has the similar implementation of multi-threads to
79 memcached. Memslap creates one or more self-governed threads;
80 each thread is bound with one CPU core if the system tests setting CPU
81 core affinity.
82
83 In addition, each thread has a libevent to manage the events of the network;
84 each thread has one or more self-governed concurrency; and each
85 concurrency has one or more socket connections. All the concurrent tasks don't
86 communicate with each other even though they are in the same thread.
87
88 Memslap can create thousands of socket connections, and each
89 concurrency has tens of socket connections. Each concurrency randomly or
90 sequentially selects one socket connection from its socket connection pool
91 to run, so memaslap can ensure each concurrency handles one
92 socket connection at any given time. Users can specify the number of
93 concurrency and socket connections of each concurrency according to their
94 expected workload.
95
96 Effective implementation of generating key and value
97 ____________________________________________________
98
99 In order to improve time efficiency and space efficiency,
100 memaslap creates a random characters table with 10M characters. All the
101 suffixes of keys and values are generated from this random characters table.
102
103 Memslap uses the offset in the character table and the length
104 of the string to identify a string. It can save much memory.
105 Each key contains two parts, a prefix and a suffix. The prefix is an
106 uint64_t, 8 bytes. In order to verify the data set before,
107 memaslap need to ensure each key is unique, so it uses the prefix to identify
108 a key. The prefix cannot include illegal characters, such as '\r', '\n',
109 '\0' and ' '. And memaslap has an algorithm to ensure that.
110
111 Memslap doesn't generate all the objects (key-value pairs) at
112 the beginning. It only generates enough objects to fill the task window
113 (default 10K objects) of each concurrency. Each object has the following
114 basic information, key prefix, key suffix offset in the character table, key
115 length, value offset in the character table, and value length.
116
117 In the work process, each concurrency sequentially or randomly selects an
118 object from the window to do set operation or get operation. At the same
119 time, each concurrency kicks objects out of its window and adds new object
120 into it.
121
122 Simple but useful task scheduling
123 _________________________________
124
125 Memslap uses libevent to schedule all concurrent tasks of
126 threads, and each concurrency schedules tasks based on the local task
127 window. Memslap assumes that if each concurrency keeps the same
128 key distribution, value distribution and commands distribution, from
129 outside, memaslap keeps all the distribution as a whole.
130 Each task window includes a lot of objects, each object stores its basic
131 information, such as key, value, expire time, and so on. At any time, all
132 the objects in the window keep the same and fixed key and value
133 distribution. If an object is overwritten, the value of the object will be
134 updated. Memslap verifies the data or expire-time according to
135 the object information stored in the task window.
136
137 Libevent selects which concurrency to handle based on a specific network
138 event. Then the concurrency selects which command (get or set) to operate
139 based on the command distribution. If it needs to kick out an old object and
140 add a new object, in order to keep the same key and value distribution, the
141 new object must have the same key length and value length.
142
143 If memcached server has two cache layers (memory and SSD), running
144 memaslap with different window sizes can get different cache
145 miss rates. If memaslap adds enough objects into the windows at
146 the beginning, and the cache of memcached cannot store all the objects
147 initialized, then memaslap will get some objects from the second
148 cache layer. It causes the first cache layer to miss. So the user can
149 specify the window size to get the expected miss rate of the first cache
150 layer.
151
152 Useful implementation of multi-servers , UDP, TCP, multi-get and binary protocol
153 ________________________________________________________________________________
154
155 Because each thread is self-governed, memaslap can assign
156 different threads to handle different memcached servers. This is just one of
157 the ways in which memaslap tests multiple servers. The only
158 limitation is that the number of servers cannot be greater than the number
159 of threads. The other way to test multiple servers is for replication
160 test. Each concurrency has one socket connection to each memcached server.
161 For the implementation, memaslap can set some objects to one
162 memcached server, and get these objects from the other servers.
163
164 By default, Memslap does single get. If the user specifies
165 multi-get option, memaslap will collect enough get commands and
166 pack and send the commands together.
167
168 Memslap tests both the ASCII protocol and binary protocol,
169 but it runs on the ASCII protocol by default.
170 Memslap by default runs on the TCP protocol, but it also
171 tests UDP. Because UDP is unreliable, dropped packages and out-of-order
172 packages may occur. Memslap creates a memory buffer to handle
173 these problems. Memslap tries to read all the response data of
174 one command from the server and reorders the response data. If some packages
175 get lost, the waiting timeout mechanism can ensure half-baked packages will
176 be discarded and the next command will be sent.
177
178 USAGE
179 -----
180
181 Below are some usage samples:
182
183 memaslap -s 127.0.0.1:11211 -S 5s
184
185 memaslap -s 127.0.0.1:11211 -t 2m -v 0.2 -e 0.05 -b
186
187 memaslap -s 127.0.0.1:11211 -F config -t 2m -w 40k -S 20s -o 0.2
188
189 memaslap -s 127.0.0.1:11211 -F config -t 2m -T 4 -c 128 -d 20 -P 40k
190
191 memaslap -s 127.0.0.1:11211 -F config -t 2m -d 50 -a -n 40
192
193 memaslap -s 127.0.0.1:11211,127.0.0.1:11212 -F config -t 2m
194
195 memaslap -s 127.0.0.1:11211,127.0.0.1:11212 -F config -t 2m -p 2
196
197 The user must specify one server at least to run memaslap. The
198 rest of the parameters have default values, as shown below:
199
200 Thread number = 1 Concurrency = 16
201
202 Run time = 600 seconds Configuration file = NULL
203
204 Key size = 64 Value size = 1024
205
206 Get/set = 9:1 Window size = 10k
207
208 Execute number = 0 Single get = true
209
210 Multi-get = false Number of sockets of each concurrency = 1
211
212 Reconnect = false Data verification = false
213
214 Expire-time verification = false ASCII protocol = true
215
216 Binary protocol = false Dumping statistic information periodically = false
217
218 Overwrite proportion = 0% UDP = false
219
220 TCP = true Limit throughput = false
221
222 Facebook test = false Replication test = false
223
224 Key size, value size and command distribution.
225 ______________________________________________
226
227 All the distributions are read from the configuration file specified by user
228 with "—cfg_cmd" option. If the user does not specify a configuration file,
229 memaslap will run with the default distribution (key size = 64,
230 value size = 1024, get/set = 9:1). For information on how to edit the
231 configuration file, refer to the "Configuration File" section.
232
233 The minimum key size is 16 bytes; the maximum key size is 250 bytes. The
234 precision of proportion is 0.001. The proportion of distribution will be
235 rounded to 3 decimal places.
236
237 The minimum value size is 1 bytes; the maximum value size is 1M bytes. The
238 precision of proportion is 0.001. The proportion of distribution will be
239 rounded to 3 decimal places.
240 Currently, memaslap only tests set and get commands. And it
241 testss 100% set and 100% get. For 100% get, it will preset some objects to
242 the server.
243
244 Multi-thread and concurrency
245 ____________________________
246
247 The high performance of memaslap benefits from the special
248 schedule of thread and concurrency. It's important to specify the proper
249 number of them. The default number of threads is 1; the default number of
250 concurrency is 16. The user can use "—threads" and "--concurrency" to
251 specify these variables.
252
253 If the system tests setting CPU affinity and the number of threads
254 specified by the user is greater than 1, memaslap will try to
255 bind each thread to a different CPU core. So if you want to get the best
256 performance memaslap, it is better to specify the number of
257 thread equal to the number of CPU cores. The number of threads specified by
258 the user can also be less or greater than the number of CPU cores. Because
259 of the limitation of implementation, the number of concurrencies could be
260 the multiple of the number of threads.
261
262 1. For 8 CPU cores system
263
264 For example:
265
266 --threads=2 --concurrency=128
267
268 --threads=8 --concurrency=128
269
270 --threads=8 --concurrency=256
271
272 --threads=12 --concurrency=144
273
274 2. For 16 CPU cores system
275
276 For example:
277
278 --threads=8 --concurrency=128
279
280 --threads=16 --concurrency=256
281
282 --threads=16 --concurrency=512
283
284 --threads=24 --concurrency=288
285
286 The memaslap performs very well, when
287 used to test the performance of memcached servers.
288 Most of the time, the bottleneck is the network or
289 the server. If for some reason the user wants to
290 limit the performance of memaslap, there
291 are two ways to do this:
292
293 Decrease the number of threads and concurrencies.
294 Use the option "--tps" that memaslap
295 provides to limit the throughput. This option allows
296 the user to get the expected throughput. For
297 example, assume that the maximum throughput is 50
298 kops/s for a specific configuration, you can specify
299 the throughput equal to or less than the maximum
300 throughput using "--tps" option.
301
302 Window size
303 ___________
304
305 Most of the time, the user does not need to specify the window size. The
306 default window size is 10k. For Schooner Memcached, the user can specify
307 different window sizes to get different cache miss rates based on the test
308 case. Memslap testss cache miss rate between 0% and 100%.
309 If you use this utility to test the performance of Schooner Memcached, you
310 can specify a proper window size to get the expected cache miss rate. The
311 formula for calculating window size is as follows:
312
313 Assume that the key size is 128 bytes, and the value size is 2048 bytes, and
314 concurrency=128.
315
316 1. Small cache cache_size=1M, 100% cache miss (all data get from SSD).
317 win_size=10k
318
319 2. cache_size=4G
320
321 (1). cache miss rate 0%
322
323 win_size=8k
324
325 (2). cache miss rate 5%
326
327 win_size=11k
328
329 3. cache_size=16G
330
331 (1). cache miss rate 0%
332
333 win_size=32k
334
335 (2). cache miss
336
337 rate 5%
338
339 win_size=46k
340
341 The formula for calculating window size for cache miss rate 0%:
342
343 cache_size / concurrency / (key_size + value_size) \* 0.5
344
345 The formula for calculating window size for cache miss rate 5%:
346
347 cache_size / concurrency / (key_size + value_size) \* 0.7
348
349 Verification
350 ____________
351
352 Memslap testss both data verification and expire-time
353 verification. The user can use "--verify=" or "-v" to specify the proportion
354 of data verification. In theory, it testss 100% data verification. The
355 user can use "--exp_verify=" or "-e" to specify the proportion of
356 expire-time verification. In theory, it testss 100% expire-time
357 verification. Specify the "--verbose" options to get more detailed error
358 information.
359
360 For example: --exp_verify=0.01 –verify=0.1 , it means that 1% of the objects
361 set with expire-time, 10% of the objects gotten will be verified. If the
362 objects are gotten, memaslap will verify the expire-time and
363 value.
364
365 multi-servers and multi-config
366 _______________________________
367
368 Memslap testss multi-servers based on self-governed thread.
369 There is a limitation that the number of servers cannot be greater than the
370 number of threads. Memslap assigns one thread to handle one
371 server at least. The user can use the "--servers=" or "-s" option to specify
372 multi-servers.
373
374 For example:
375
376 --servers=10.1.1.1:11211,10.1.1.2:11212,10.1.1.3:11213 --threads=6 --concurrency=36
377
378 The above command means that there are 6 threads, with each thread having 6
379 concurrencies and that threads 0 and 3 handle server 0 (10.1.1.1); threads 1
380 and 4 handle server 1 (10.1.1.2); and thread 2 and 5 handle server 2
381 (10.1.1.3).
382
383 All the threads and concurrencies in memaslap are self-governed.
384
385 So is memaslap. The user can start up several
386 memaslap instances. The user can run memaslap on different client
387 machines to communicate with the same memcached server at the same. It is
388 recommended that the user start different memaslap on different
389 machines using the same configuration.
390
391 Run with execute number mode or time mode
392 _________________________________________
393
394 The default memaslap runs with time mode. The default run time
395 is 10 minutes. If it times out, memaslap will exit. Do not
396 specify both execute number mode and time mode at the same time; just
397 specify one instead.
398
399 For example:
400
401 --time=30s (It means the test will run 30 seconds.)
402
403 --execute_number=100000 (It means that after running 100000 commands, the test will exit.)
404
405 Dump statistic information periodically.
406 ________________________________________
407
408 The user can use "--stat_freq=" or "-S" to specify the frequency.
409
410 For example:
411
412 --stat_freq=20s
413
414 Memslap will dump the statistics of the commands (get and set) at the frequency of every 20
415 seconds.
416
417 For more information on the format of dumping statistic information, refer to "Format of Output" section.
418
419 Multi-get
420 _________
421
422 The user can use "--division=" or "-d" to specify multi-get keys count.
423 Memslap by default does single get with TCP. Memslap also testss data
424 verification and expire-time verification for multi-get.
425
426 Memslap testss multi-get with both TCP and UDP. Because of
427 the different implementation of the ASCII protocol and binary protocol,
428 there are some differences between the two. For the ASCII protocol,
429 memaslap sends one "multi-get" to the server once. For the
430 binary protocol, memaslap sends several single get commands
431 together as "multi-get" to the server.
432
433 UDP and TCP
434 ___________
435
436 Memslap testss both UDP and TCP. For TCP,
437 memaslap does not reconnect the memcached server if socket connections are
438 lost. If all the socket connections are lost or memcached server crashes,
439 memaslap will exit. If the user specifies the "--reconnect"
440 option when socket connections are lost, it will reconnect them.
441
442 User can use "--udp" to enable the UDP feature, but UDP comes with some
443 limitations:
444
445 UDP cannot set data more than 1400 bytes.
446
447 UDP is not tested by the binary protocol because the binary protocol of
448 memcached does not tests that.
449
450 UDP doesn't tests reconnection.
451
452 Facebook test
453 _____________
454
455 Set data with TCP and multi-get with UDP. Specify the following options:
456
457 "--facebook --division=50"
458
459 If you want to create thousands of TCP connections, specify the
460
461 "--conn_sock=" option.
462
463 For example: --facebook --division=50 --conn_sock=200
464
465 The above command means that memaslap will do facebook test,
466 each concurrency has 200 socket TCP connections and one UDP socket.
467
468 Memslap sets objects with the TCP socket, and multi-gets 50
469 objects once with the UDP socket.
470
471 If you specify "--division=50", the key size must be less that 25 bytes
472 because the UDP packet size is 1400 bytes.
473
474 Replication test
475 ________________
476
477 For replication test, the user must specify at least two memcached servers.
478 The user can use "—rep_write=" option to enable feature.
479
480 For example:
481
482 --servers=10.1.1.1:11211,10.1.1.2:11212 –rep_write=2
483
484 The above command means that there are 2 replication memcached servers,
485 memaslap will set objects to both server 0 and server 1, get
486 objects which are set to server 0 before from server 1, and also get objects
487 which are set to server 1 before from server 0. If server 0 crashes,
488 memaslap will only get objects from server 1. If server 0 comes
489 back to life again, memaslap will reconnect server 0. If both
490 server 0 and server 1 crash, memaslap will exit.
491
492 Supports thousands of TCP connections
493 _____________________________________
494
495 Start memaslap with "--conn_sock=" or "-n" to enable this
496 feature. Make sure that your system can tests opening thousands of files
497 and creating thousands of sockets. However, this feature does not tests
498 reconnection if sockets disconnect.
499
500 For example:
501
502 --threads=8 --concurrency=128 --conn_sock=128
503
504 The above command means that memaslap starts up 8 threads, each
505 thread has 16 concurrencies, each concurrency has 128 TCP socket
506 connections, and the total number of TCP socket connections is 128 \* 128 =
507 16384.
508
509 Supports binary protocol
510 ________________________
511
512 Start memaslap with "--binary" or "-B" options to enable this
513 feature. It testss all the above features except UDP, because the latest
514 memcached 1.3.3 does not implement binary UDP protocol.
515
516 For example:
517
518 --binary
519
520 Since memcached 1.3.3 doesn't implement binary UDP protocol,
521 memaslap does not tests UDP. In addition, memcached 1.3.3 does not tests
522 multi-get. If you specify "--division=50" option, it just sends 50 get
523 commands together as "multi-get" to the server.
524
525 Configuration file
526 ------------------
527
528 This section describes the format of the configuration file. By default
529 when no configuration file is specified memaslap reads the default
530 one located at ~/.memaslap.cnf.
531
532 Below is a sample configuration file:
533
534 .. code-block:: perl
535
536 ---------------------------------------------------------------------------
537 #comments should start with '#'
538 #key
539 #start_len end_len proportion
540 #
541 #key length range from start_len to end_len
542 #start_len must be equal to or greater than 16
543 #end_len must be equal to or less than 250
544 #start_len must be equal to or greater than end_len
545 #memaslap will generate keys according to the key range
546 #proportion: indicates keys generated from one range accounts for the total
547 generated keys
548 #
549 #example1: key range 16~100 accounts for 80%
550 # key range 101~200 accounts for 10%
551 # key range 201~250 accounts for 10%
552 # total should be 1 (0.8+0.1+0.1 = 1)
553 #
554 # 16 100 0.8
555 # 101 200 0.1
556 # 201 249 0.1
557 #
558 #example2: all keys length are 128 bytes
559 #
560 # 128 128 1
561 key
562 128 128 1
563 #value
564 #start_len end_len proportion
565 #
566 #value length range from start_len to end_len
567 #start_len must be equal to or greater than 1
568 #end_len must be equal to or less than 1M
569 #start_len must be equal to or greater than end_len
570 #memaslap will generate values according to the value range
571 #proportion: indicates values generated from one range accounts for the
572 total generated values
573 #
574 #example1: value range 1~1000 accounts for 80%
575 # value range 1001~10000 accounts for 10%
576 # value range 10001~100000 accounts for 10%
577 # total should be 1 (0.8+0.1+0.1 = 1)
578 #
579 # 1 1000 0.8
580 # 1001 10000 0.1
581 # 10001 100000 0.1
582 #
583 #example2: all value length are 128 bytes
584 #
585 # 128 128 1
586 value
587 2048 2048 1
588 #cmd
589 #cmd_type cmd_proportion
590 #
591 #currently memaslap only testss get and set command.
592 #
593 #cmd_type
594 #set 0
595 #get 1
596 #
597 #example: set command accounts for 50%
598 # get command accounts for 50%
599 # total should be 1 (0.5+0.5 = 1)
600 #
601 # cmd
602 # 0 0.5
603 # 1 0.5
604 cmd
605 0 0.1
606 1.0 0.9
607
608 Format of output
609 ----------------
610
611 At the beginning, memaslap displays some configuration information as follows:
612
613 servers : 127.0.0.1:11211
614
615 threads count: 1
616
617 concurrency: 16
618
619 run time: 20s
620
621 windows size: 10k
622
623 set proportion: set_prop=0.10
624
625 get proportion: get_prop=0.90
626
627 Where
628 _____
629
630 servers : "servers"
631
632 The servers used by memaslap.
633
634 threads count
635
636 The number of threads memaslap runs with.
637
638 concurrency
639
640 The number of concurrencies memaslap runs with.
641
642 run time
643
644 How long to run memaslap.
645
646 windows size
647
648 The task window size of each concurrency.
649
650 set proportion
651
652 The proportion of set command.
653
654 get proportion
655
656 The proportion of get command.
657
658 The output of dynamic statistics is something like this:
659
660 .. code-block:: perl
661
662 ---------------------------------------------------------------------------------------------------------------------------------
663 Get Statistics
664 Type Time(s) Ops TPS(ops/s) Net(M/s) Get_miss Min(us) Max(us)
665 Avg(us) Std_dev Geo_dist
666 Period 5 345826 69165 65.3 0 27 2198 203
667 95.43 177.29
668 Global 20 1257935 62896 71.8 0 26 3791 224
669 117.79 192.60
670 Set Statistics
671
672 Type Time(s) Ops TPS(ops/s) Net(M/s) Get_miss Min(us) Max(us)
673 Avg(us) Std_dev Geo_dist
674 Period 5 38425 7685 7.3 0 42 628 240
675 88.05 220.21
676 Global 20 139780 6989 8.0 0 37 3790 253
677 117.93 224.83
678 Total Statistics
679
680 Type Time(s) Ops TPS(ops/s) Net(M/s) Get_miss Min(us) Max(us)
681 Avg(us) Std_dev Geo_dist
682 Period 5 384252 76850 72.5 0 27 2198 207
683 94.72 181.18
684 Global 20 1397720 69886 79.7 0 26 3791 227
685 117.93 195.60
686 ---------------------------------------------------------------------------------------------------------------------------------
687
688 Where
689 _____
690
691 Get Statistics
692
693 Statistics information of get command
694
695 Set Statistics
696
697 Statistics information of set command
698
699 Total Statistics
700
701 Statistics information of both get and set command
702
703 Period
704
705 Result within a period
706
707 Global
708
709 Accumulated results
710
711 Ops
712
713 Total operations
714
715 TPS
716
717 Throughput, operations/second
718
719 Net
720
721 The rate of network
722
723 Get_miss
724
725 How many objects can't be gotten
726
727 Min
728
729 The minimum response time
730
731 Max
732
733 The maximum response time
734
735 Avg:
736
737 The average response time
738
739 Std_dev
740
741 Standard deviation of response time
742
743 Geo_dist
744
745 Geometric distribution based on natural exponential function
746
747 At the end, memaslap will output something like this:
748
749 .. code-block:: perl
750
751 ---------------------------------------------------------------------------------------------------------------------------------
752 Get Statistics (1257956 events)
753 Min: 26
754 Max: 3791
755 Avg: 224
756 Geo: 192.60
757 Std: 116.23
758 Log2 Dist:
759 4: 0 10 84490 215345
760 8: 484890 459823 12543 824
761 12: 31
762
763 Set Statistics (139782 events)
764 Min: 37
765 Max: 3790
766 Avg: 253
767 Geo: 224.84
768 Std: 116.83
769 Log2 Dist:
770 4: 0 0 4200 16988
771 8: 50784 65574 2064 167
772 12: 5
773
774 Total Statistics (1397738 events)
775 Min: 26
776 Max: 3791
777 Avg: 227
778 Geo: 195.60
779 Std: 116.60
780 Log2 Dist:
781 4: 0 10 88690 232333
782 8: 535674 525397 14607 991
783 12: 36
784
785 cmd_get: 1257969
786 cmd_set: 139785
787 get_misses: 0
788 verify_misses: 0
789 verify_failed: 0
790 expired_get: 0
791 unexpired_unget: 0
792 written_bytes: 242516030
793 read_bytes: 1003702556
794 object_bytes: 152086080
795 packet_disorder: 0
796 packet_drop: 0
797 udp_timeout: 0
798
799 Run time: 20.0s Ops: 1397754 TPS: 69817 Net_rate: 59.4M/s
800 ---------------------------------------------------------------------------------------------------------------------------------
801
802 Where
803 _____
804
805 Get Statistics
806
807 Get statistics of response time
808
809 Set Statistics
810
811 Set statistics of response time
812
813 Total Statistics
814
815 Both get and set statistics of response time
816
817 Min
818
819 The accumulated and minimum response time
820
821 Max
822
823 The accumulated and maximum response time
824
825 Avg
826
827 The accumulated and average response time
828
829 Std
830
831 Standard deviation of response time
832
833 Log2 Dist
834
835 Geometric distribution based on logarithm 2
836
837 cmd_get
838
839 Total get commands done
840
841 cmd_set
842
843 Total set commands done
844
845 get_misses
846
847 How many objects can't be gotten from server
848
849 verify_misses
850
851 How many objects need to verify but can't get them
852
853 verify_failed
854
855 How many objects with insistent value
856
857 expired_get
858
859 How many objects are expired but we get them
860
861 unexpired_unget
862
863 How many objects are unexpired but we can't get them
864
865 written_bytes
866
867 Total written bytes
868
869 read_bytes
870
871 Total read bytes
872
873 object_bytes
874
875 Total object bytes
876
877 packet_disorder
878
879 How many UDP packages are disorder
880
881 packet_drop
882
883 How many UDP packages are lost
884
885 udp_timeout
886
887 How many times UDP time out happen
888
889 Run time
890
891 Total run time
892
893 Ops
894
895 Total operations
896
897 TPS
898
899 Throughput, operations/second
900
901 Net_rate
902
903 The average rate of network
904
905 OPTIONS
906 -------
907
908 -s, --servers=
909 List one or more servers to connect. Servers count must be less than
910 threads count. e.g.: --servers=localhost:1234,localhost:11211
911
912 -T, --threads=
913 Number of threads to startup, better equal to CPU numbers. Default 8.
914
915 -c, --concurrency=
916 Number of concurrency to simulate with load. Default 128.
917
918 -n, --conn_sock=
919 Number of TCP socks per concurrency. Default 1.
920
921 -x, --execute_number=
922 Number of operations(get and set) to execute for the
923 given test. Default 1000000.
924
925 -t, --time=
926 How long the test to run, suffix: s-seconds, m-minutes, h-hours,
927 d-days e.g.: --time=2h.
928
929 -F, --cfg_cmd=
930 Load the configure file to get command,key and value distribution list.
931
932 -w, --win_size=
933 Task window size of each concurrency, suffix: K, M e.g.: --win_size=10k.
934 Default 10k.
935
936 -X, --fixed_size=
937 Fixed length of value.
938
939 -v, --verify=
940 The proportion of date verification, e.g.: --verify=0.01
941
942 -d, --division=
943 Number of keys to multi-get once. Default 1, means single get.
944
945 -S, --stat_freq=
946 Frequency of dumping statistic information. suffix: s-seconds,
947 m-minutes, e.g.: --resp_freq=10s.
948
949 -e, --exp_verify=
950 The proportion of objects with expire time, e.g.: --exp_verify=0.01.
951 Default no object with expire time
952
953 -o, --overwrite=
954 The proportion of objects need overwrite, e.g.: --overwrite=0.01.
955 Default never overwrite object.
956
957 -R, --reconnect
958 Reconnect tests, when connection is closed it will be reconnected.
959
960 -U, --udp
961 UDP tests, default memaslap uses TCP, TCP port and UDP port of
962 server must be same.
963
964 -a, --facebook
965 Whether it enables facebook test feature, set with TCP and multi-get with UDP.
966
967 -B, --binary
968 Whether it enables binary protocol. Default with ASCII protocol.
969
970 -P, --tps=
971 Expected throughput, suffix: K, e.g.: --tps=10k.
972
973 -p, --rep_write=
974 The first nth servers can write data, e.g.: --rep_write=2.
975
976 -b, --verbose
977 Whether it outputs detailed information when verification fails.
978
979 -h, --help
980 Display this message and then exit.
981
982 -V, --version
983 Display the version of the application and then exit.
984
985 EXAMPLES
986 --------
987
988 memaslap -s 127.0.0.1:11211 -S 5s
989
990 memaslap -s 127.0.0.1:11211 -t 2m -v 0.2 -e 0.05 -b
991
992 memaslap -s 127.0.0.1:11211 -F config -t 2m -w 40k -S 20s -o 0.2
993
994 memaslap -s 127.0.0.1:11211 -F config -t 2m -T 4 -c 128 -d 20 -P 40k
995
996 memaslap -s 127.0.0.1:11211 -F config -t 2m -d 50 -a -n 40
997
998 memaslap -s 127.0.0.1:11211,127.0.0.1:11212 -F config -t 2m
999
1000 memaslap -s 127.0.0.1:11211,127.0.0.1:11212 -F config -t 2m -p 2
1001
1002 SEE ALSO
1003 --------
1004
1005 .. only:: man
1006
1007 :manpage:`memcached(1)` :manpage:`libmemcached(3)`