Adding in memcached_last_error_message.3
[awesomized/libmemcached] / docs / man / memslap.1
index 8262578ed9d797c077562e385e653faf38ec3d39..6f43b6871c36b44b280a88c5a438fd864d011a03 100644 (file)
@@ -1,4 +1,4 @@
-.TH "MEMSLAP" "1" "April 07, 2011" "0.47" "libmemcached"
+.TH "MEMSLAP" "1" "September 09, 2011" "0.52" "libmemcached"
 .SH NAME
 memslap \- libmemcached Documentation
 .
@@ -30,1195 +30,46 @@ level margin: \\n[rst2man-indent\\n[rst2man-indent-level]]
 ..
 .\" Man page generated from reStructeredText.
 .
-.sp
-memslap \- Load testing and benchmarking tool for memcached
 .SH SYNOPSIS
 .sp
-.nf
-.ft C
 memslap [options]
-.ft P
-.fi
 .SH DESCRIPTION
 .sp
 \fBmemslap\fP is a load generation and benchmark tool for memcached(1)
-servers. It generates configurable workload such as threads, concurrencies, connections,
-run time, overwrite, miss rate, key size, value size, get/set proportion,
-expected throughput, and so on. Furthermore, it also supports data
-verification, expire\-time verification, UDP, binary protocol, facebook test,
-replication test, multi\-get and reconnection, etc.
-.sp
-Memslap manages network connections like memcached with
-libevent. Each thread of memslap is bound with a CPU core, all
-the threads don\(aqt communicate with each other, and there are several socket
-connections in each thread. Each connection keeps key size distribution,
-value size distribution, and command distribution by itself.
-.sp
-You can specify servers via the \fB\-\-servers\fP option or via the
-environment variable \fBMEMCACHED_SERVERS\fP.
-.SH FEATURES
-.sp
-Memslap is developed to for the following purposes:
-.sp
-Manages network connections with libevent asynchronously.
-.sp
-Set both TCP and UDP up to use non\-blocking IO.
-.sp
-Improves parallelism: higher performance in multi\-threads environments.
-.sp
-Improves time efficiency: faster processing speed.
-.sp
-Generates key and value more efficiently; key size distribution and value size distribution are configurable.
-.sp
-Supports get, multi\-get, and set commands; command distribution is configurable.
-.sp
-Supports controllable miss rate and overwrite rate.
-.sp
-Supports data and expire\-time verification.
-.sp
-Supports dumping statistic information periodically.
-.sp
-Supports thousands of TCP connections.
-.sp
-Supports binary protocol.
-.sp
-Supports facebook test (set with TCP and multi\-get with UDP) and replication test.
-.SH DETAILS
-.SS Effective implementation of network.
-.sp
-For memslap, both TCP and UDP use non\-blocking network IO. All
-the network events are managed by libevent as memcached. The network module
-of memslap is similar to memcached. Libevent can ensure
-memslap can handle network very efficiently.
-.SS Effective implementation of multi\-threads and concurrency
-.sp
-Memslap has the similar implementation of multi\-threads to
-memcached. Memslap creates one or more self\-governed threads;
-each thread is bound with one CPU core if the system supports setting CPU
-core affinity.
-.sp
-In addition, each thread has a libevent to manage the events of the network;
-each thread has one or more self\-governed concurrencies; and each
-concurrency has one or more socket connections. All the concurrencies don’t
-communicate with each other even though they are in the same thread.
-.sp
-Memslap can create thousands of socket connections, and each
-concurrency has tens of socket connections. Each concurrency randomly or
-sequentially selects one socket connection from its socket connection pool
-to run, so memslap can ensure each concurrency handles one
-socket connection at any given time. Users can specify the number of
-concurrency and socket connections of each concurrency according to their
-expected workload.
-.SS Effective implementation of generating key and value
-.sp
-In order to improve time efficiency and space efficiency,
-memslap creates a random characters table with 10M characters. All the
-suffixes of keys and values are generated from this random characters table.
-.sp
-Memslap uses the offset in the character table and the length
-of the string to identify a string. It can save much memory.
-Each key contains two parts, a prefix and a suffix. The prefix is an
-uint64_t, 8 bytes. In order to verify the data set before,
-memslap need to ensure each key is unique, so it uses the prefix to identify
-a key. The prefix cannot include illegal characters, such as ‘r’, ‘n’,
-‘0’ and ‘ ‘. And memslap has an algorithm to ensure that.
-.sp
-Memslap doesn’t generate all the objects (key\-value pairs) at
-the beginning. It only generates enough objects to fill the task window
-(default 10K objects) of each concurrency. Each object has the following
-basic information, key prefix, key suffix offset in the character table, key
-length, value offset in the character table, and value length.
-.sp
-In the work process, each concurrency sequentially or randomly selects an
-object from the window to do set operation or get operation. At the same
-time, each concurrency kicks objects out of its window and adds new object
-into it.
-.SS Simple but useful task scheduling
-.sp
-Memslap uses libevent to schedule all the concurrencies of
-threads, and each concurrency schedules tasks based on the local task
-window. Memslap assumes that if each concurrency keeps the same
-key distribution, value distribution and commands distribution, from
-outside, memslap keeps all the distribution as a whole.
-Each task window includes a lot of objects, each object stores its basic
-information, such as key, value, expire time, and so on. At any time, all
-the objects in the window keep the same and fixed key and value
-distribution. If an object is overwritten, the value of the object will be
-updated. Memslap verifies the data or expire\-time according to
-the object information stored in the task window.
-.sp
-Libevent selects which concurrency to handle based on a specific network
-event. Then the concurrency selects which command (get or set) to operate
-based on the command distribution. If it needs to kick out an old object and
-add a new object, in order to keep the same key and value distribution, the
-new object must have the same key length and value length.
-.sp
-If memcached server has two cache layers (memory and SSD), running
-memslap with different window sizes can get different cache
-miss rates. If memslap adds enough objects into the windows at
-the beginning, and the cache of memcached cannot store all the objects
-initialized, then memslap will get some objects from the second
-cache layer. It causes the first cache layer to miss. So the user can
-specify the window size to get the expected miss rate of the first cache
-layer.
-.SS Useful implementation of multi\-servers , UDP, TCP, multi\-get and binary protocol
-.sp
-Because each thread is self\-governed, memslap can assign
-different threads to handle different memcached servers. This is just one of
-the ways in which memslap supports multiple servers. The only
-limitation is that the number of servers cannot be greater than the number
-of threads. The other way to support multiple servers is for replication
-test. Each concurrency has one socket connection to each memcached server.
-For the implementation, memslap can set some objects to one
-memcached server, and get these objects from the other servers.
-.sp
-By default, Memslap does single get. If the user specifies
-multi\-get option, memslap will collect enough get commands and
-pack and send the commands together.
-.sp
-Memslap supports both the ASCII protocol and binary protocol,
-but it runs on the ASCII protocol by default.
-Memslap by default runs on the TCP protocol, but it also
-supports UDP. Because UDP is unreliable, dropped packages and out\-of\-order
-packages may occur. Memslap creates a memory buffer to handle
-these problems. Memslap tries to read all the response data of
-one command from the server and reorders the response data. If some packages
-get lost, the waiting timeout mechanism can ensure half\-baked packages will
-be discarded and the next command will be sent.
-.SH USAGE
-.sp
-Below are some usage samples:
-.sp
-memslap \-s 127.0.0.1:11211 \-S 5s
-.sp
-memslap \-s 127.0.0.1:11211 \-t 2m \-v 0.2 \-e 0.05 \-b
-.sp
-memslap \-s 127.0.0.1:11211 \-F config \-t 2m \-w 40k \-S 20s \-o 0.2
-.sp
-memslap \-s 127.0.0.1:11211 \-F config \-t 2m \-T 4 \-c 128 \-d 20 \-P 40k
-.sp
-memslap \-s 127.0.0.1:11211 \-F config \-t 2m \-d 50 \-a \-n 40
-.sp
-memslap \-s 127.0.0.1:11211,127.0.0.1:11212 \-F config \-t 2m
-.sp
-memslap \-s 127.0.0.1:11211,127.0.0.1:11212 \-F config \-t 2m \-p 2
-.sp
-The user must specify one server at least to run memslap. The
-rest of the parameters have default values, as shown below:
-.sp
-Thread number = 1                    Concurrency = 16
-.sp
-Run time = 600 seconds                Configuration file = NULL
-.sp
-Key size = 64                         Value size = 1024
-.sp
-Get/set = 9:1                         Window size = 10k
-.sp
-Execute number = 0                   Single get = true
-.sp
-Multi\-get = false                      Number of sockets of each concurrency = 1
-.sp
-Reconnect = false                     Data verification = false
-.sp
-Expire\-time verification = false           ASCII protocol = true
-.sp
-Binary protocol = false                 Dumping statistic information
-.sp
-periodically = false
-.sp
-Overwrite proportion = 0%             UDP = false
-.sp
-TCP = true                           Limit throughput = false
-.sp
-Facebook test = false                  Replication test = false
-.SS Key size, value size and command distribution.
-.sp
-All the distributions are read from the configuration file specified by user
-with “—cfg_cmd” option. If the user does not specify a configuration file,
-memslap will run with the default distribution (key size = 64,
-value size = 1024, get/set = 9:1). For information on how to edit the
-configuration file, refer to the “Configuration File” section.
-.sp
-The minimum key size is 16 bytes; the maximum key size is 250 bytes. The
-precision of proportion is 0.001. The proportion of distribution will be
-rounded to 3 decimal places.
-.sp
-The minimum value size is 1 bytes; the maximum value size is 1M bytes. The
-precision of proportion is 0.001. The proportion of distribution will be
-rounded to 3 decimal places.
-Currently, memslap only supports set and get commands. And it
-supports 100% set and 100% get. For 100% get, it will preset some objects to
-the server.
-.SS Multi\-thread and concurrency
-.sp
-The high performance of memslap benefits from the special
-schedule of thread and concurrency. It’s important to specify the proper
-number of them. The default number of threads is 1; the default number of
-concurrency is 16. The user can use “—threads” and “\-\-concurrency” to
-specify these variables.
-.sp
-If the system supports setting CPU affinity and the number of threads
-specified by the user is greater than 1, memslap will try to
-bind each thread to a different CPU core. So if you want to get the best
-performance memslap, it is better to specify the number of
-thread equal to the number of CPU cores. The number of threads specified by
-the user can also be less or greater than the number of CPU cores. Because
-of the limitation of implementation, the number of concurrencies could be
-the multiple of the number of threads.
-.INDENT 0.0
-.IP 1. 3
-.
-For 8 CPU cores system
-.UNINDENT
-.sp
-For example:
-.sp
-\-\-threads=2 \-\-concurrency=128
-.sp
-\-\-threads=8 \-\-concurrency=128
-.sp
-\-\-threads=8 \-\-concurrency=256
-.sp
-\-\-threads=12 \-\-concurrency=144
-.INDENT 0.0
-.IP 2. 3
-.
-For 16 CPU cores system
-.UNINDENT
-.sp
-For example:
-.sp
-\-\-threads=8 \-\-concurrency=128
-.sp
-\-\-threads=16 \-\-concurrency=256
-.sp
-\-\-threads=16 \-\-concurrency=512
-.sp
-\-\-threads=24 \-\-concurrency=288
-.sp
-The memslap performs very well, when
-used to test the performance of memcached servers.
-Most of the time, the bottleneck is the network or
-the server. If for some reason the user wants to
-limit the performance of memslap, there
-are two ways to do this:
-.sp
-Decrease the number of threads and concurrencies.
-Use the option “\-\-tps” that memslap
-provides to limit the throughput. This option allows
-the user to get the expected throughput. For
-example, assume that the maximum throughput is 50
-kops/s for a specific configuration, you can specify
-the throughput equal to or less than the maximum
-throughput using “\-\-tps” option.
-.SS Window size
-.sp
-Most of the time, the user does not need to specify the window size. The
-default window size is 10k. For Schooner Memcached, the user can specify
-different window sizes to get different cache miss rates based on the test
-case. Memslap supports cache miss rate between 0% and 100%.
-If you use this utility to test the performance of Schooner Memcached, you
-can specify a proper window size to get the expected cache miss rate. The
-formula for calculating window size is as follows:
-.sp
-Assume that the key size is 128 bytes, and the value size is 2048 bytes, and
-concurrency=128.
-.sp
-1. Small cache cache_size=1M, 100% cache miss (all data get from SSD).
-win_size=10k
-.INDENT 0.0
-.IP 2. 3
-.
-cache_size=4G
-.UNINDENT
-.sp
-(1). cache miss rate 0%
-.sp
-win_size=8k
-.sp
-(2). cache miss rate 5%
-.sp
-win_size=11k
-.INDENT 0.0
-.IP 3. 3
-.
-cache_size=16G
-.UNINDENT
-.sp
-(1). cache miss rate 0%
-.sp
-win_size=32k
-.sp
-(2). cache miss
-.sp
-rate 5%
-.sp
-win_size=46k
-.sp
-The formula for calculating window size for cache miss rate 0%:
-.sp
-cache_size / concurrency / (key_size + value_size) * 0.5
-.sp
-The formula for calculating window size for cache miss rate 5%:
-.sp
-cache_size / concurrency / (key_size + value_size) * 0.7
-.SS Verification
-.sp
-Memslap supports both data verification and expire\-time
-verification. The user can use "\-\-verify=" or "\-v" to specify the proportion
-of data verification. In theory, it supports 100% data verification. The
-user can use "\-\-exp_verify=" or "\-e" to specify the proportion of
-expire\-time verification. In theory, it supports 100% expire\-time
-verification. Specify the "\-\-verbose" options to get more detailed error
-information.
-.sp
-For example: \-\-exp_verify=0.01 –verify=0.1 , it means that 1% of the objects
-set with expire\-time, 10% of the objects gotten will be verified. If the
-objects are gotten, memslap will verify the expire\-time and
-value.
-.SS multi\-servers and multi\-clients
-.sp
-Memslap supports multi\-servers based on self\-governed thread.
-There is a limitation that the number of servers cannot be greater than the
-number of threads. Memslap assigns one thread to handle one
-server at least. The user can use the "\-\-servers=" or "\-s" option to specify
-multi\-servers.
-.sp
-For example:
-.sp
-\-\-servers=10.1.1.1:11211,10.1.1.2:11212,10.1.1.3:11213 \-\-threads=6 \-\-concurrency=36
-.sp
-The above command means that there are 6 threads, with each thread having 6
-concurrencies and that threads 0 and 3 handle server 0 (10.1.1.1); threads 1
-and 4 handle server 1 (10.1.1.2); and thread 2 and 5 handle server 2
-(10.1.1.3).
-.sp
-All the threads and concurrencies in memslap are self\-governed.
-.sp
-So is memslap. The user can start up several
-memslap instances. The user can run memslap on different client
-machines to communicate with the same memcached server at the same. It is
-recommended that the user start different memslap on different
-machines using the same configuration.
-.SS Run with execute number mode or time mode
-.sp
-The default memslap runs with time mode. The default run time
-is 10 minutes. If it times out, memslap will exit. Do not
-specify both execute number mode and time mode at the same time; just
-specify one instead.
-.sp
-For example:
-.sp
-\-\-time=30s (It means the test will run 30 seconds.)
-.sp
-\-\-execute_number=100000 (It means that after running 100000 commands, the test will exit.)
-.SS Dump statistic information periodically.
-.sp
-The user can use "\-\-stat_freq=" or "\-S" to specify the frequency.
-.sp
-For example:
-.sp
-\-\-stat_freq=20s
-.sp
-Memslap will dump the statistics of the commands (get and set) at the frequency of every 20
-seconds.
-.sp
-For more information on the format of dumping statistic information, refer to “Format of Output” section.
-.SS Multi\-get
-.sp
-The user can use "\-\-division=" or "\-d" to specify multi\-get keys count.
-Memslap by default does single get with TCP. Memslap also supports data
-verification and expire\-time verification for multi\-get.
-.sp
-Memslap supports multi\-get with both TCP and UDP. Because of
-the different implementation of the ASCII protocol and binary protocol,
-there are some differences between the two. For the ASCII protocol,
-memslap sends one “multi\-get” to the server once. For the
-binary protocol, memslap sends several single get commands
-together as “multi\-get” to the server.
-.SS UDP and TCP
-.sp
-Memslap supports both UDP and TCP. For TCP,
-memslap does not reconnect the memcached server if socket connections are
-lost. If all the socket connections are lost or memcached server crashes,
-memslap will exit. If the user specifies the “\-\-reconnect”
-option when socket connections are lost, it will reconnect them.
-.sp
-User can use “\-\-udp” to enable the UDP feature, but UDP comes with some
-limitations:
-.sp
-UDP cannot set data more than 1400 bytes.
-.sp
-UDP is not supported by the binary protocol because the binary protocol of
-memcached does not support that.
-.sp
-UDP doesn’t support reconnection.
-.SS Facebook test
-.sp
-Set data with TCP and multi\-get with UDP. Specify the following options:
-.sp
-"\-\-facebook \-\-division=50"
-.sp
-If you want to create thousands of TCP connections, specify the
-.sp
-"\-\-conn_sock=" option.
-.sp
-For example: \-\-facebook \-\-division=50 \-\-conn_sock=200
-.sp
-The above command means that memslap will do facebook test,
-each concurrency has 200 socket TCP connections and one UDP socket.
-.sp
-Memslap sets objects with the TCP socket, and multi\-gets 50
-objects once with the UDP socket.
-.sp
-If you specify "\-\-division=50", the key size must be less that 25 bytes
-because the UDP packet size is 1400 bytes.
-.SS Replication test
-.sp
-For replication test, the user must specify at least two memcached servers.
-The user can use “—rep_write=” option to enable feature.
-.sp
-For example:
-.sp
-\-\-servers=10.1.1.1:11211,10.1.1.2:11212 –rep_write=2
-.sp
-The above command means that there are 2 replication memcached servers,
-memslap will set objects to both server 0 and server 1, get
-objects which are set to server 0 before from server 1, and also get objects
-which are set to server 1 before from server 0. If server 0 crashes,
-memslap will only get objects from server 1. If server 0 comes
-back to life again, memslap will reconnect server 0. If both
-server 0 and server 1 crash, memslap will exit.
-.SS Supports thousands of TCP connections
-.sp
-Start memslap with "\-\-conn_sock=" or "\-n" to enable this
-feature. Make sure that your system can support opening thousands of files
-and creating thousands of sockets. However, this feature does not support
-reconnection if sockets disconnect.
-.sp
-For example:
-.sp
-\-\-threads=8 \-\-concurrency=128 \-\-conn_sock=128
-.sp
-The above command means that memslap starts up 8 threads, each
-thread has 16 concurrencies, each concurrency has 128 TCP socket
-connections, and the total number of TCP socket connections is 128 * 128 =
-16384.
-.SS Supports binary protocol
-.sp
-Start memslap with "\-\-binary" or "\-B" options to enable this
-feature. It supports all the above features except UDP, because the latest
-memcached 1.3.3 does not implement binary UDP protocol.
-.sp
-For example:
-.sp
-\-\-binary
-.sp
-Since memcached 1.3.3 doesn\(aqt implement binary UDP protocol,
-memslap does not support UDP. In addition, memcached 1.3.3 does not support
-multi\-get. If you specify "\-\-division=50" option, it just sends 50 get
-commands together as “mulit\-get” to the server.
-.SH CONFIGURATION FILE
-.sp
-This section describes the format of the configuration file.  By default
-when no configuration file is specified memslap reads the default
-one located at ~/.memslap.cnf.
-.sp
-Below is a sample configuration file:
-.sp
-.nf
-.ft C
-***************************************************************************
-#comments should start with \(aq#\(aq
-#key
-#start_len end_len proportion
-#
-#key length range from start_len to end_len
-#start_len must be equal to or greater than 16
-#end_len must be equal to or less than 250
-#start_len must be equal to or greater than end_len
-#memslap will generate keys according to the key range
-#proportion: indicates keys generated from one range accounts for the total
-generated keys
-#
-#example1: key range 16~100 accounts for 80%
-#          key range 101~200 accounts for 10%
-#          key range 201~250 accounts for 10%
-#          total should be 1 (0.8+0.1+0.1 = 1)
-#
-#          16 100 0.8
-#          101 200 0.1
-#          201 249 0.1
-#
-#example2: all keys length are 128 bytes
-#
-#          128 128 1
-key
-128 128 1
-#value
-#start_len end_len proportion
-#
-#value length range from start_len to end_len
-#start_len must be equal to or greater than 1
-#end_len must be equal to or less than 1M
-#start_len must be equal to or greater than end_len
-#memslap will generate values according to the value range
-#proportion: indicates values generated from one range accounts for the
-total generated values
-#
-#example1: value range 1~1000 accounts for 80%
-#          value range 1001~10000 accounts for 10%
-#          value range 10001~100000 accounts for 10%
-#          total should be 1 (0.8+0.1+0.1 = 1)
-#
-#          1 1000 0.8
-#          1001 10000 0.1
-#          10001 100000 0.1
-#
-#example2: all value length are 128 bytes
-#
-#          128 128 1
-value
-2048 2048 1
-#cmd
-#cmd_type cmd_proportion
-#
-#currently memslap only supports get and set command.
-#
-#cmd_type
-#set     0
-#get     1
-#
-#example: set command accounts for 50%
-#         get command accounts for 50%
-#         total should be 1 (0.5+0.5 = 1)
-#
-#         cmd
-#         0    0.5
-#         1    0.5
-cmd
-0    0.1
-1.0 0.9
-.ft P
-.fi
-.SH FORMAT OF OUTPUT
-.sp
-At the beginning, memslap displays some configuration information as follows:
-.sp
-servers : 127.0.0.1:11211
-.sp
-threads count: 1
-.sp
-concurrency: 16
-.sp
-run time: 20s
-.sp
-windows size: 10k
-.sp
-set proportion: set_prop=0.10
-.sp
-get proportion: get_prop=0.90
-.SS Where
-.sp
-servers : "servers"
-.INDENT 0.0
-.INDENT 3.5
-.sp
-The servers used by memslap.
-.UNINDENT
-.UNINDENT
-.sp
-threads count
-.INDENT 0.0
-.INDENT 3.5
-.sp
-The number of threads memslap runs with.
-.UNINDENT
-.UNINDENT
-.sp
-concurrency
-.INDENT 0.0
-.INDENT 3.5
-.sp
-The number of concurrencies memslap runs with.
-.UNINDENT
-.UNINDENT
-.sp
-run time
-.INDENT 0.0
-.INDENT 3.5
-.sp
-How long to run memslap.
-.UNINDENT
-.UNINDENT
-.sp
-windows size
-.INDENT 0.0
-.INDENT 3.5
-.sp
-The task window size of each concurrency.
-.UNINDENT
-.UNINDENT
-.sp
-set proportion
-.INDENT 0.0
-.INDENT 3.5
-.sp
-The proportion of set command.
-.UNINDENT
-.UNINDENT
-.sp
-get proportion
-.INDENT 0.0
-.INDENT 3.5
-.sp
-The proportion of get command.
-.UNINDENT
-.UNINDENT
-.sp
-The output of dynamic statistics is something like this:
-.sp
-.nf
-.ft C
-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-
-Get Statistics
-Type  Time(s)  Ops   TPS(ops/s)  Net(M/s)  Get_miss  Min(us)  Max(us)
-Avg(us)  Std_dev    Geo_dist
-Period   5   345826  69165     65.3      0         27      2198     203
-95.43      177.29
-Global  20  1257935  62896     71.8      0         26      3791     224
-117.79     192.60
-
-
-Set Statistics
-Type  Time(s)  Ops   TPS(ops/s)  Net(M/s)  Get_miss  Min(us)  Max(us)
-Avg(us)  Std_dev    Geo_dist
-Period   5    38425   7685      7.3       0         42      628     240
-88.05      220.21
-Global   20   139780  6989      8.0       0         37      3790    253
-117.93     224.83
-
-
-Total Statistics
-Type  Time(s)  Ops   TPS(ops/s)  Net(M/s)  Get_miss  Min(us)  Max(us)
-Avg(us)  Std_dev    Geo_dist
-Period   5   384252   76850     72.5      0        27      2198     207
-94.72      181.18
-Global  20  1397720   69886     79.7      0        26      3791     227
-117.93     195.60
-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-
-.ft P
-.fi
-.SS Where
-.sp
-Get Statistics
-.INDENT 0.0
-.INDENT 3.5
-.sp
-Statistics information of get command
-.UNINDENT
-.UNINDENT
-.sp
-Set Statistics
-.INDENT 0.0
-.INDENT 3.5
-.sp
-Statistics information of set command
-.UNINDENT
-.UNINDENT
-.sp
-Total Statistics
-.INDENT 0.0
-.INDENT 3.5
-.sp
-Statistics information of both get and set command
-.UNINDENT
-.UNINDENT
-.sp
-Period
-.INDENT 0.0
-.INDENT 3.5
-.sp
-Result within a period
-.UNINDENT
-.UNINDENT
-.sp
-Global
-.INDENT 0.0
-.INDENT 3.5
-.sp
-Accumulated results
-.UNINDENT
-.UNINDENT
-.sp
-Ops
-.INDENT 0.0
-.INDENT 3.5
-.sp
-Total operations
-.UNINDENT
-.UNINDENT
-.sp
-TPS
-.INDENT 0.0
-.INDENT 3.5
-.sp
-Throughput, operations/second
-.UNINDENT
-.UNINDENT
-.sp
-Net
-.INDENT 0.0
-.INDENT 3.5
-.sp
-The rate of network
-.UNINDENT
-.UNINDENT
-.sp
-Get_miss
-.INDENT 0.0
-.INDENT 3.5
-.sp
-How many objects can’t be gotten
-.UNINDENT
-.UNINDENT
-.sp
-Min
-.INDENT 0.0
-.INDENT 3.5
-.sp
-The minimum response time
-.UNINDENT
-.UNINDENT
-.sp
-Max
-.INDENT 0.0
-.INDENT 3.5
-.sp
-The maximum response time
-.UNINDENT
-.UNINDENT
-.sp
-Avg:
-.INDENT 0.0
-.INDENT 3.5
-.sp
-The average response time
-.UNINDENT
-.UNINDENT
-.sp
-Std_dev
-.INDENT 0.0
-.INDENT 3.5
-.sp
-Standard deviation of response time
-.UNINDENT
-.UNINDENT
-.sp
-Geo_dist
-.INDENT 0.0
-.INDENT 3.5
-.sp
-Geometric distribution based on natural exponential function
-.UNINDENT
-.UNINDENT
-.sp
-At the end, memslap will output something like this:
-.sp
-.nf
-.ft C
-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-
-Get Statistics (1257956 events)
-  Min:        26
-  Max:      3791
-  Avg:       224
-  Geo:    192.60
-  Std:    116.23
-                  Log2 Dist:
-                    4:        0       10    84490   215345
-                    8:   484890   459823    12543      824
-                   12:       31
-
- Set Statistics (139782 events)
-    Min:        37
-    Max:      3790
-    Avg:       253
-    Geo:    224.84
-    Std:    116.83
-    Log2 Dist:
-      4:        0        0     4200 16988
-      8:    50784    65574 2064      167
-      12:        5
-
-  Total Statistics (1397738 events)
-      Min:        26
-      Max:      3791
-      Avg:       227
-      Geo:    195.60
-      Std:    116.60
-      Log2 Dist:
-        4:        0       10    88690   232333
-        8:   535674   525397    14607      991
-        12:       36
-
-cmd_get: 1257969
-cmd_set: 139785
-get_misses: 0
-verify_misses: 0
-verify_failed: 0
-expired_get: 0
-unexpired_unget: 0
-written_bytes: 242516030
-read_bytes: 1003702556
-object_bytes: 152086080
-packet_disorder: 0
-packet_drop: 0
-udp_timeout: 0
-
-Run time: 20.0s Ops: 1397754 TPS: 69817 Net_rate: 59.4M/s
-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-
-.ft P
-.fi
-.SS Where
-.sp
-Get Statistics
-.INDENT 0.0
-.INDENT 3.5
-.sp
-Get statistics of response time
-.UNINDENT
-.UNINDENT
-.sp
-Set Statistics
-.INDENT 0.0
-.INDENT 3.5
-.sp
-Set statistics of response time
-.UNINDENT
-.UNINDENT
-.sp
-Total Statistics
-.INDENT 0.0
-.INDENT 3.5
-.sp
-Both get and set statistics of response time
-.UNINDENT
-.UNINDENT
-.sp
-Min
-.INDENT 0.0
-.INDENT 3.5
-.sp
-The accumulated and minimum response time
-.UNINDENT
-.UNINDENT
-.sp
-Max
-.INDENT 0.0
-.INDENT 3.5
-.sp
-The accumulated and maximum response time
-.UNINDENT
-.UNINDENT
-.sp
-Avg
-.INDENT 0.0
-.INDENT 3.5
-.sp
-The accumulated and average response time
-.UNINDENT
-.UNINDENT
-.sp
-Std
-.INDENT 0.0
-.INDENT 3.5
-.sp
-Standard deviation of response time
-.UNINDENT
-.UNINDENT
-.sp
-Log2 Dist
-.INDENT 0.0
-.INDENT 3.5
-.sp
-Geometric distribution based on logarithm 2
-.UNINDENT
-.UNINDENT
-.sp
-cmd_get
-.INDENT 0.0
-.INDENT 3.5
-.sp
-Total get commands done
-.UNINDENT
-.UNINDENT
-.sp
-cmd_set
-.INDENT 0.0
-.INDENT 3.5
-.sp
-Total set commands done
-.UNINDENT
-.UNINDENT
-.sp
-get_misses
-.INDENT 0.0
-.INDENT 3.5
-.sp
-How many objects can’t be gotten from server
-.UNINDENT
-.UNINDENT
-.sp
-verify_misses
-.INDENT 0.0
-.INDENT 3.5
-.sp
-How many objects need to verify but can’t get them
-.UNINDENT
-.UNINDENT
-.sp
-verify_failed
-.INDENT 0.0
-.INDENT 3.5
-.sp
-How many objects with insistent value
-.UNINDENT
-.UNINDENT
-.sp
-expired_get
-.INDENT 0.0
-.INDENT 3.5
-.sp
-How many objects are expired but we get them
-.UNINDENT
-.UNINDENT
-.sp
-unexpired_unget
-.INDENT 0.0
-.INDENT 3.5
-.sp
-How many objects are unexpired but we can’t get them
-.UNINDENT
-.UNINDENT
-.sp
-written_bytes
-.INDENT 0.0
-.INDENT 3.5
-.sp
-Total written bytes
-.UNINDENT
-.UNINDENT
-.sp
-read_bytes
-.INDENT 0.0
-.INDENT 3.5
-.sp
-Total read bytes
-.UNINDENT
-.UNINDENT
-.sp
-object_bytes
-.INDENT 0.0
-.INDENT 3.5
-.sp
-Total object bytes
-.UNINDENT
-.UNINDENT
-.sp
-packet_disorder
-.INDENT 0.0
-.INDENT 3.5
-.sp
-How many UDP packages are disorder
-.UNINDENT
-.UNINDENT
-.sp
-packet_drop
-.INDENT 0.0
-.INDENT 3.5
-.sp
-How many UDP packages are lost
-.UNINDENT
-.UNINDENT
-.sp
-udp_timeout
-.INDENT 0.0
-.INDENT 3.5
-.sp
-How many times UDP time out happen
-.UNINDENT
-.UNINDENT
-.sp
-Run time
-.INDENT 0.0
-.INDENT 3.5
-.sp
-Total run time
-.UNINDENT
-.UNINDENT
-.sp
-Ops
-.INDENT 0.0
-.INDENT 3.5
-.sp
-Total operations
-.UNINDENT
-.UNINDENT
-.sp
-TPS
-.INDENT 0.0
-.INDENT 3.5
-.sp
-Throughput, operations/second
-.UNINDENT
-.UNINDENT
-.sp
-Net_rate
-.INDENT 0.0
-.INDENT 3.5
-.sp
-The average rate of network
-.UNINDENT
-.UNINDENT
+servers. It generates configurable workload such as threads, concurrencies, connections, run time, overwrite, miss rate, key size, value size, get/set proportion, expected throughput, and so on.
 .SH OPTIONS
+.sp
+You can specify servers via the option:
 .INDENT 0.0
 .TP
-.B \-s, \-\-servers=
-.
-List one or more servers to connect. Servers count must be less than
-threads count. e.g.: \-\-servers=localhost:1234,localhost:11211
-.TP
-.B \-T, \-\-threads=
-.
-Number of threads to startup, better equal to CPU numbers. Default 8.
-.TP
-.B \-c, \-\-concurrency=
-.
-Number of concurrency to simulate with load. Default 128.
-.TP
-.B \-n, \-\-conn_sock=
-.
-Number of TCP socks per concurrency. Default 1.
-.TP
-.B \-x, \-\-execute_number=
-.
-Number of operations(get and set) to execute for the
-given test. Default 1000000.
-.TP
-.B \-t, \-\-time=
-.
-How long the test to run, suffix: s\-seconds, m\-minutes, h\-hours,
-d\-days e.g.: \-\-time=2h.
-.TP
-.B \-F, \-\-cfg_cmd=
-.
-Load the configure file to get command,key and value distribution list.
-.TP
-.B \-w, \-\-win_size=
-.
-Task window size of each concurrency, suffix: K, M e.g.: \-\-win_size=10k.
-Default 10k.
-.TP
-.B \-X, \-\-fixed_size=
-.
-Fixed length of value.
-.TP
-.B \-v, \-\-verify=
-.
-The proportion of date verification, e.g.: \-\-verify=0.01
-.TP
-.B \-d, \-\-division=
-.
-Number of keys to multi\-get once. Default 1, means single get.
-.TP
-.B \-S, \-\-stat_freq=
-.
-Frequency of dumping statistic information. suffix: s\-seconds,
-m\-minutes, e.g.: \-\-resp_freq=10s.
-.TP
-.B \-e, \-\-exp_verify=
-.
-The proportion of objects with expire time, e.g.: \-\-exp_verify=0.01.
-Default no object with expire time
-.TP
-.B \-o, \-\-overwrite=
-.
-The proportion of objects need overwrite, e.g.: \-\-overwrite=0.01.
-Default never overwrite object.
-.UNINDENT
-.INDENT 0.0
-.TP
-.B \-R,  \-\-reconnect
-.
-Reconnect support, when connection is closed it will be reconnected.
-.TP
-.B \-U,  \-\-udp
-.
-UDP support, default memslap uses TCP, TCP port and UDP port of
-server must be same.
-.TP
-.B \-a,  \-\-facebook
-.
-Whether it enables facebook test feature, set with TCP and multi\-get with UDP.
-.TP
-.B \-B,  \-\-binary
-.
-Whether it enables binary protocol. Default with ASCII protocol.
+.B \-\-servers
 .UNINDENT
+.sp
+or via the environment variable:
 .INDENT 0.0
 .TP
-.B \-P, \-\-tps=
-.
-Expected throughput, suffix: K, e.g.: \-\-tps=10k.
-.TP
-.B \-p, \-\-rep_write=
-.
-The first nth servers can write data, e.g.: \-\-rep_write=2.
+.B \(gaMEMCACHED_SERVERS\(ga
 .UNINDENT
+.sp
+For a full list of operations run the tool with:
 .INDENT 0.0
 .TP
-.B \-b,  \-\-verbose
-.
-Whether it outputs detailed information when verification fails.
-.TP
-.B \-h,  \-\-help
-.
-Display this message and then exit.
-.TP
-.B \-V,  \-\-version
-.
-Display the version of the application and then exit.
+.B \-\-help
 .UNINDENT
-.SH EXAMPLES
-.sp
-memslap \-s 127.0.0.1:11211 \-S 5s
-.sp
-memslap \-s 127.0.0.1:11211 \-t 2m \-v 0.2 \-e 0.05 \-b
-.sp
-memslap \-s 127.0.0.1:11211 \-F config \-t 2m \-w 40k \-S 20s \-o 0.2
-.sp
-memslap \-s 127.0.0.1:11211 \-F config \-t 2m \-T 4 \-c 128 \-d 20 \-P 40k
-.sp
-memslap \-s 127.0.0.1:11211 \-F config \-t 2m \-d 50 \-a \-n 40
-.sp
-memslap \-s 127.0.0.1:11211,127.0.0.1:11212 \-F config \-t 2m
-.sp
-memslap \-s 127.0.0.1:11211,127.0.0.1:11212 \-F config \-t 2m \-p 2
 .SH HOME
 .sp
 To find out more information please check:
-\fI\%http://launchpad.org/libmemcached\fP
-.SH AUTHORS
+\(aq\fI\%http://libmemcached.org/\fP <\fI\%http://libmemcached.org/\fP>\(aq_
+.SH AUTHOR
 .sp
-Mingqiang Zhuang <\fI\%mingqiangzhuang@hengtiansoft.com\fP> (Schooner Technolgy)
 Brian Aker, <\fI\%brian@tangent.org\fP>
 .SH SEE ALSO
 .sp
-memcached(1) libmemcached(3)
+\fImemcached(1)\fP \fIlibmemcached(3)\fP
 .SH AUTHOR
 Brian Aker
 .SH COPYRIGHT
-2011, Brian Aker
+2011, Brian Aker DataDifferential, http://datadifferential.com/
 .\" Generated by docutils manpage writer.
 .\" 
 .