X-Git-Url: https://git.m6w6.name/?a=blobdiff_plain;f=docs%2Fman%2Fmemslap.1;h=b4e016d010576e9b9968ca099e31f59f0b061f2e;hb=bb79afb7484c21ee590a15399e2e8a39cca7b627;hp=522bfb5d5db6373763843e5d31c873cdcb788a6d;hpb=1c5912a525fe2b06a185f97bb078ca6f782da3a4;p=m6w6%2Flibmemcached diff --git a/docs/man/memslap.1 b/docs/man/memslap.1 index 522bfb5d..d5ddb7f4 100644 --- a/docs/man/memslap.1 +++ b/docs/man/memslap.1 @@ -1,4 +1,4 @@ -.TH "MEMSLAP" "1" "April 08, 2011" "0.47" "libmemcached" +.TH "MEMSLAP" "1" "April 21, 2012" "1.0.6" "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. .\" .