couchbase-memcached 1.2.8

Sign up to get free protection for your applications and to get access to all the features.
Files changed (539) hide show
  1. data.tar.gz.sig +2 -0
  2. data/BENCHMARKS +134 -0
  3. data/CHANGELOG +127 -0
  4. data/LICENSE +184 -0
  5. data/Manifest +535 -0
  6. data/README +118 -0
  7. data/Rakefile +83 -0
  8. data/TODO +4 -0
  9. data/couchbase-memcached.gemspec +33 -0
  10. data/ext/extconf-make.rb +25 -0
  11. data/ext/extconf.rb +91 -0
  12. data/ext/libmemcached-0.50/AUTHORS +11 -0
  13. data/ext/libmemcached-0.50/COPYING +33 -0
  14. data/ext/libmemcached-0.50/ChangeLog +392 -0
  15. data/ext/libmemcached-0.50/Makefile.am +114 -0
  16. data/ext/libmemcached-0.50/Makefile.in +4232 -0
  17. data/ext/libmemcached-0.50/NEWS +1 -0
  18. data/ext/libmemcached-0.50/README +43 -0
  19. data/ext/libmemcached-0.50/README.FIRST +31 -0
  20. data/ext/libmemcached-0.50/README.win32 +25 -0
  21. data/ext/libmemcached-0.50/THANKS +14 -0
  22. data/ext/libmemcached-0.50/TODO +11 -0
  23. data/ext/libmemcached-0.50/aclocal.m4 +1077 -0
  24. data/ext/libmemcached-0.50/clients/client_options.h +45 -0
  25. data/ext/libmemcached-0.50/clients/execute.cc +131 -0
  26. data/ext/libmemcached-0.50/clients/execute.h +30 -0
  27. data/ext/libmemcached-0.50/clients/generator.cc +96 -0
  28. data/ext/libmemcached-0.50/clients/generator.h +36 -0
  29. data/ext/libmemcached-0.50/clients/include.am +116 -0
  30. data/ext/libmemcached-0.50/clients/memaslap.c +908 -0
  31. data/ext/libmemcached-0.50/clients/memcapable.cc +2094 -0
  32. data/ext/libmemcached-0.50/clients/memcat.cc +242 -0
  33. data/ext/libmemcached-0.50/clients/memcp.cc +317 -0
  34. data/ext/libmemcached-0.50/clients/memdump.cc +183 -0
  35. data/ext/libmemcached-0.50/clients/memerror.cc +102 -0
  36. data/ext/libmemcached-0.50/clients/memflush.cc +154 -0
  37. data/ext/libmemcached-0.50/clients/memparse.cc +68 -0
  38. data/ext/libmemcached-0.50/clients/memrm.cc +177 -0
  39. data/ext/libmemcached-0.50/clients/memslap.cc +495 -0
  40. data/ext/libmemcached-0.50/clients/memstat.cc +349 -0
  41. data/ext/libmemcached-0.50/clients/ms_atomic.h +69 -0
  42. data/ext/libmemcached-0.50/clients/ms_conn.c +3413 -0
  43. data/ext/libmemcached-0.50/clients/ms_conn.h +241 -0
  44. data/ext/libmemcached-0.50/clients/ms_memslap.h +132 -0
  45. data/ext/libmemcached-0.50/clients/ms_setting.c +1068 -0
  46. data/ext/libmemcached-0.50/clients/ms_setting.h +181 -0
  47. data/ext/libmemcached-0.50/clients/ms_sigsegv.c +126 -0
  48. data/ext/libmemcached-0.50/clients/ms_sigsegv.h +34 -0
  49. data/ext/libmemcached-0.50/clients/ms_stats.c +307 -0
  50. data/ext/libmemcached-0.50/clients/ms_stats.h +69 -0
  51. data/ext/libmemcached-0.50/clients/ms_task.c +1114 -0
  52. data/ext/libmemcached-0.50/clients/ms_task.h +94 -0
  53. data/ext/libmemcached-0.50/clients/ms_thread.c +351 -0
  54. data/ext/libmemcached-0.50/clients/ms_thread.h +78 -0
  55. data/ext/libmemcached-0.50/clients/utilities.cc +231 -0
  56. data/ext/libmemcached-0.50/clients/utilities.h +64 -0
  57. data/ext/libmemcached-0.50/config.h.in +647 -0
  58. data/ext/libmemcached-0.50/config/autorun.sh +126 -0
  59. data/ext/libmemcached-0.50/config/compile +143 -0
  60. data/ext/libmemcached-0.50/config/config.guess +1517 -0
  61. data/ext/libmemcached-0.50/config/config.rpath +666 -0
  62. data/ext/libmemcached-0.50/config/config.sub +1760 -0
  63. data/ext/libmemcached-0.50/config/depcomp +630 -0
  64. data/ext/libmemcached-0.50/config/install-sh +520 -0
  65. data/ext/libmemcached-0.50/config/ltmain.sh +9642 -0
  66. data/ext/libmemcached-0.50/config/missing +376 -0
  67. data/ext/libmemcached-0.50/config/pandora-plugin +752 -0
  68. data/ext/libmemcached-0.50/config/uncrustify.cfg +1112 -0
  69. data/ext/libmemcached-0.50/configure +27103 -0
  70. data/ext/libmemcached-0.50/configure.ac +186 -0
  71. data/ext/libmemcached-0.50/docs/conf.py.in +354 -0
  72. data/ext/libmemcached-0.50/docs/include.am +240 -0
  73. data/ext/libmemcached-0.50/docs/man/hashkit_clone.3 +88 -0
  74. data/ext/libmemcached-0.50/docs/man/hashkit_crc32.3 +105 -0
  75. data/ext/libmemcached-0.50/docs/man/hashkit_create.3 +88 -0
  76. data/ext/libmemcached-0.50/docs/man/hashkit_fnv1_32.3 +105 -0
  77. data/ext/libmemcached-0.50/docs/man/hashkit_fnv1_64.3 +105 -0
  78. data/ext/libmemcached-0.50/docs/man/hashkit_fnv1a_32.3 +105 -0
  79. data/ext/libmemcached-0.50/docs/man/hashkit_fnv1a_64.3 +105 -0
  80. data/ext/libmemcached-0.50/docs/man/hashkit_free.3 +88 -0
  81. data/ext/libmemcached-0.50/docs/man/hashkit_functions.3 +105 -0
  82. data/ext/libmemcached-0.50/docs/man/hashkit_hsieh.3 +105 -0
  83. data/ext/libmemcached-0.50/docs/man/hashkit_is_allocated.3 +88 -0
  84. data/ext/libmemcached-0.50/docs/man/hashkit_jenkins.3 +105 -0
  85. data/ext/libmemcached-0.50/docs/man/hashkit_md5.3 +105 -0
  86. data/ext/libmemcached-0.50/docs/man/hashkit_murmur.3 +105 -0
  87. data/ext/libmemcached-0.50/docs/man/hashkit_value.3 +66 -0
  88. data/ext/libmemcached-0.50/docs/man/libhashkit.3 +57 -0
  89. data/ext/libmemcached-0.50/docs/man/libmemcached.3 +208 -0
  90. data/ext/libmemcached-0.50/docs/man/libmemcached_check_configuration.3 +293 -0
  91. data/ext/libmemcached-0.50/docs/man/libmemcached_configuration.3 +293 -0
  92. data/ext/libmemcached-0.50/docs/man/libmemcached_examples.3 +144 -0
  93. data/ext/libmemcached-0.50/docs/man/libmemcachedutil.3 +68 -0
  94. data/ext/libmemcached-0.50/docs/man/memaslap.1 +1222 -0
  95. data/ext/libmemcached-0.50/docs/man/memcached.3 +293 -0
  96. data/ext/libmemcached-0.50/docs/man/memcached_add.3 +132 -0
  97. data/ext/libmemcached-0.50/docs/man/memcached_add_by_key.3 +132 -0
  98. data/ext/libmemcached-0.50/docs/man/memcached_analyze.3 +77 -0
  99. data/ext/libmemcached-0.50/docs/man/memcached_append.3 +111 -0
  100. data/ext/libmemcached-0.50/docs/man/memcached_append_by_key.3 +111 -0
  101. data/ext/libmemcached-0.50/docs/man/memcached_behavior_get.3 +333 -0
  102. data/ext/libmemcached-0.50/docs/man/memcached_behavior_set.3 +333 -0
  103. data/ext/libmemcached-0.50/docs/man/memcached_callback_get.3 +159 -0
  104. data/ext/libmemcached-0.50/docs/man/memcached_callback_set.3 +159 -0
  105. data/ext/libmemcached-0.50/docs/man/memcached_cas.3 +91 -0
  106. data/ext/libmemcached-0.50/docs/man/memcached_cas_by_key.3 +91 -0
  107. data/ext/libmemcached-0.50/docs/man/memcached_clone.3 +99 -0
  108. data/ext/libmemcached-0.50/docs/man/memcached_create.3 +99 -0
  109. data/ext/libmemcached-0.50/docs/man/memcached_decrement.3 +124 -0
  110. data/ext/libmemcached-0.50/docs/man/memcached_decrement_with_initial.3 +124 -0
  111. data/ext/libmemcached-0.50/docs/man/memcached_delete.3 +83 -0
  112. data/ext/libmemcached-0.50/docs/man/memcached_delete_by_key.3 +83 -0
  113. data/ext/libmemcached-0.50/docs/man/memcached_destroy_sasl_auth_data.3 +95 -0
  114. data/ext/libmemcached-0.50/docs/man/memcached_dump.3 +77 -0
  115. data/ext/libmemcached-0.50/docs/man/memcached_fetch.3 +174 -0
  116. data/ext/libmemcached-0.50/docs/man/memcached_fetch_execute.3 +174 -0
  117. data/ext/libmemcached-0.50/docs/man/memcached_fetch_result.3 +174 -0
  118. data/ext/libmemcached-0.50/docs/man/memcached_flush_buffers.3 +72 -0
  119. data/ext/libmemcached-0.50/docs/man/memcached_free.3 +99 -0
  120. data/ext/libmemcached-0.50/docs/man/memcached_generate_hash.3 +85 -0
  121. data/ext/libmemcached-0.50/docs/man/memcached_generate_hash_value.3 +85 -0
  122. data/ext/libmemcached-0.50/docs/man/memcached_get.3 +174 -0
  123. data/ext/libmemcached-0.50/docs/man/memcached_get_by_key.3 +174 -0
  124. data/ext/libmemcached-0.50/docs/man/memcached_get_memory_allocators.3 +111 -0
  125. data/ext/libmemcached-0.50/docs/man/memcached_get_sasl_callbacks.3 +95 -0
  126. data/ext/libmemcached-0.50/docs/man/memcached_get_user_data.3 +79 -0
  127. data/ext/libmemcached-0.50/docs/man/memcached_increment.3 +124 -0
  128. data/ext/libmemcached-0.50/docs/man/memcached_increment_with_initial.3 +124 -0
  129. data/ext/libmemcached-0.50/docs/man/memcached_lib_version.3 +76 -0
  130. data/ext/libmemcached-0.50/docs/man/memcached_mget.3 +174 -0
  131. data/ext/libmemcached-0.50/docs/man/memcached_mget_by_key.3 +174 -0
  132. data/ext/libmemcached-0.50/docs/man/memcached_mget_execute.3 +174 -0
  133. data/ext/libmemcached-0.50/docs/man/memcached_mget_execute_by_key.3 +174 -0
  134. data/ext/libmemcached-0.50/docs/man/memcached_pool_behavior_get.3 +139 -0
  135. data/ext/libmemcached-0.50/docs/man/memcached_pool_behavior_set.3 +139 -0
  136. data/ext/libmemcached-0.50/docs/man/memcached_pool_create.3 +139 -0
  137. data/ext/libmemcached-0.50/docs/man/memcached_pool_destroy.3 +139 -0
  138. data/ext/libmemcached-0.50/docs/man/memcached_pool_pop.3 +139 -0
  139. data/ext/libmemcached-0.50/docs/man/memcached_pool_push.3 +139 -0
  140. data/ext/libmemcached-0.50/docs/man/memcached_pool_st.3 +139 -0
  141. data/ext/libmemcached-0.50/docs/man/memcached_prepend.3 +111 -0
  142. data/ext/libmemcached-0.50/docs/man/memcached_prepend_by_key.3 +111 -0
  143. data/ext/libmemcached-0.50/docs/man/memcached_quit.3 +74 -0
  144. data/ext/libmemcached-0.50/docs/man/memcached_replace.3 +132 -0
  145. data/ext/libmemcached-0.50/docs/man/memcached_replace_by_key.3 +132 -0
  146. data/ext/libmemcached-0.50/docs/man/memcached_sasl_set_auth_data.3 +95 -0
  147. data/ext/libmemcached-0.50/docs/man/memcached_server_add.3 +141 -0
  148. data/ext/libmemcached-0.50/docs/man/memcached_server_count.3 +141 -0
  149. data/ext/libmemcached-0.50/docs/man/memcached_server_cursor.3 +141 -0
  150. data/ext/libmemcached-0.50/docs/man/memcached_server_list.3 +141 -0
  151. data/ext/libmemcached-0.50/docs/man/memcached_server_list_append.3 +111 -0
  152. data/ext/libmemcached-0.50/docs/man/memcached_server_list_count.3 +111 -0
  153. data/ext/libmemcached-0.50/docs/man/memcached_server_list_free.3 +111 -0
  154. data/ext/libmemcached-0.50/docs/man/memcached_server_push.3 +141 -0
  155. data/ext/libmemcached-0.50/docs/man/memcached_servers_parse.3 +111 -0
  156. data/ext/libmemcached-0.50/docs/man/memcached_set.3 +132 -0
  157. data/ext/libmemcached-0.50/docs/man/memcached_set_by_key.3 +132 -0
  158. data/ext/libmemcached-0.50/docs/man/memcached_set_memory_allocators.3 +111 -0
  159. data/ext/libmemcached-0.50/docs/man/memcached_set_sasl_callbacks.3 +95 -0
  160. data/ext/libmemcached-0.50/docs/man/memcached_set_user_data.3 +79 -0
  161. data/ext/libmemcached-0.50/docs/man/memcached_stat.3 +116 -0
  162. data/ext/libmemcached-0.50/docs/man/memcached_stat_execute.3 +116 -0
  163. data/ext/libmemcached-0.50/docs/man/memcached_stat_get_keys.3 +116 -0
  164. data/ext/libmemcached-0.50/docs/man/memcached_stat_get_value.3 +116 -0
  165. data/ext/libmemcached-0.50/docs/man/memcached_stat_servername.3 +116 -0
  166. data/ext/libmemcached-0.50/docs/man/memcached_strerror.3 +69 -0
  167. data/ext/libmemcached-0.50/docs/man/memcached_verbosity.3 +66 -0
  168. data/ext/libmemcached-0.50/docs/man/memcached_version.3 +76 -0
  169. data/ext/libmemcached-0.50/docs/man/memcapable.1 +92 -0
  170. data/ext/libmemcached-0.50/docs/man/memcat.1 +71 -0
  171. data/ext/libmemcached-0.50/docs/man/memcp.1 +77 -0
  172. data/ext/libmemcached-0.50/docs/man/memdump.1 +66 -0
  173. data/ext/libmemcached-0.50/docs/man/memerror.1 +65 -0
  174. data/ext/libmemcached-0.50/docs/man/memflush.1 +73 -0
  175. data/ext/libmemcached-0.50/docs/man/memrm.1 +72 -0
  176. data/ext/libmemcached-0.50/docs/man/memslap.1 +59 -0
  177. data/ext/libmemcached-0.50/docs/man/memstat.1 +70 -0
  178. data/ext/libmemcached-0.50/example/include.am +24 -0
  179. data/ext/libmemcached-0.50/example/interface_v0.c +594 -0
  180. data/ext/libmemcached-0.50/example/interface_v1.c +411 -0
  181. data/ext/libmemcached-0.50/example/memcached_light.c +474 -0
  182. data/ext/libmemcached-0.50/example/memcached_light.h +7 -0
  183. data/ext/libmemcached-0.50/example/storage.c +172 -0
  184. data/ext/libmemcached-0.50/example/storage.h +27 -0
  185. data/ext/libmemcached-0.50/example/storage_innodb.c +535 -0
  186. data/ext/libmemcached-0.50/libhashkit/algorithm.cc +69 -0
  187. data/ext/libmemcached-0.50/libhashkit/algorithm.h +96 -0
  188. data/ext/libmemcached-0.50/libhashkit/behavior.cc +9 -0
  189. data/ext/libmemcached-0.50/libhashkit/behavior.h +26 -0
  190. data/ext/libmemcached-0.50/libhashkit/common.h +33 -0
  191. data/ext/libmemcached-0.50/libhashkit/configure.h.in +19 -0
  192. data/ext/libmemcached-0.50/libhashkit/crc32.cc +86 -0
  193. data/ext/libmemcached-0.50/libhashkit/digest.cc +62 -0
  194. data/ext/libmemcached-0.50/libhashkit/digest.h +30 -0
  195. data/ext/libmemcached-0.50/libhashkit/fnv.cc +75 -0
  196. data/ext/libmemcached-0.50/libhashkit/function.cc +156 -0
  197. data/ext/libmemcached-0.50/libhashkit/function.h +44 -0
  198. data/ext/libmemcached-0.50/libhashkit/hashkit.cc +100 -0
  199. data/ext/libmemcached-0.50/libhashkit/hashkit.h +95 -0
  200. data/ext/libmemcached-0.50/libhashkit/hashkit.hpp +97 -0
  201. data/ext/libmemcached-0.50/libhashkit/hsieh.cc +70 -0
  202. data/ext/libmemcached-0.50/libhashkit/include.am +69 -0
  203. data/ext/libmemcached-0.50/libhashkit/jenkins.cc +214 -0
  204. data/ext/libmemcached-0.50/libhashkit/ketama.cc +164 -0
  205. data/ext/libmemcached-0.50/libhashkit/md5.cc +367 -0
  206. data/ext/libmemcached-0.50/libhashkit/murmur.cc +77 -0
  207. data/ext/libmemcached-0.50/libhashkit/one_at_a_time.cc +34 -0
  208. data/ext/libmemcached-0.50/libhashkit/str_algorithm.cc +58 -0
  209. data/ext/libmemcached-0.50/libhashkit/str_algorithm.h +48 -0
  210. data/ext/libmemcached-0.50/libhashkit/strerror.cc +25 -0
  211. data/ext/libmemcached-0.50/libhashkit/strerror.h +23 -0
  212. data/ext/libmemcached-0.50/libhashkit/types.h +90 -0
  213. data/ext/libmemcached-0.50/libhashkit/visibility.h +48 -0
  214. data/ext/libmemcached-0.50/libmemcached/allocators.cc +119 -0
  215. data/ext/libmemcached-0.50/libmemcached/allocators.h +87 -0
  216. data/ext/libmemcached-0.50/libmemcached/analyze.cc +110 -0
  217. data/ext/libmemcached-0.50/libmemcached/analyze.h +66 -0
  218. data/ext/libmemcached-0.50/libmemcached/array.c +128 -0
  219. data/ext/libmemcached-0.50/libmemcached/array.h +75 -0
  220. data/ext/libmemcached-0.50/libmemcached/auto.cc +383 -0
  221. data/ext/libmemcached-0.50/libmemcached/auto.h +111 -0
  222. data/ext/libmemcached-0.50/libmemcached/basic_string.h +55 -0
  223. data/ext/libmemcached-0.50/libmemcached/behavior.cc +590 -0
  224. data/ext/libmemcached-0.50/libmemcached/behavior.h +86 -0
  225. data/ext/libmemcached-0.50/libmemcached/byteorder.cc +90 -0
  226. data/ext/libmemcached-0.50/libmemcached/byteorder.h +52 -0
  227. data/ext/libmemcached-0.50/libmemcached/callback.cc +160 -0
  228. data/ext/libmemcached-0.50/libmemcached/callback.h +61 -0
  229. data/ext/libmemcached-0.50/libmemcached/common.h +182 -0
  230. data/ext/libmemcached-0.50/libmemcached/configure.h.in +52 -0
  231. data/ext/libmemcached-0.50/libmemcached/connect.cc +626 -0
  232. data/ext/libmemcached-0.50/libmemcached/constants.h +167 -0
  233. data/ext/libmemcached-0.50/libmemcached/delete.cc +266 -0
  234. data/ext/libmemcached-0.50/libmemcached/delete.h +57 -0
  235. data/ext/libmemcached-0.50/libmemcached/do.cc +100 -0
  236. data/ext/libmemcached-0.50/libmemcached/do.hpp +49 -0
  237. data/ext/libmemcached-0.50/libmemcached/dump.cc +107 -0
  238. data/ext/libmemcached-0.50/libmemcached/dump.h +51 -0
  239. data/ext/libmemcached-0.50/libmemcached/error.cc +419 -0
  240. data/ext/libmemcached-0.50/libmemcached/error.h +61 -0
  241. data/ext/libmemcached-0.50/libmemcached/error.hpp +87 -0
  242. data/ext/libmemcached-0.50/libmemcached/exception.hpp +63 -0
  243. data/ext/libmemcached-0.50/libmemcached/fetch.cc +267 -0
  244. data/ext/libmemcached-0.50/libmemcached/fetch.h +53 -0
  245. data/ext/libmemcached-0.50/libmemcached/flush.cc +149 -0
  246. data/ext/libmemcached-0.50/libmemcached/flush.h +49 -0
  247. data/ext/libmemcached-0.50/libmemcached/flush_buffers.cc +66 -0
  248. data/ext/libmemcached-0.50/libmemcached/flush_buffers.h +49 -0
  249. data/ext/libmemcached-0.50/libmemcached/get.cc +842 -0
  250. data/ext/libmemcached-0.50/libmemcached/get.h +135 -0
  251. data/ext/libmemcached-0.50/libmemcached/hash.cc +178 -0
  252. data/ext/libmemcached-0.50/libmemcached/hash.h +68 -0
  253. data/ext/libmemcached-0.50/libmemcached/hosts.cc +516 -0
  254. data/ext/libmemcached-0.50/libmemcached/include.am +183 -0
  255. data/ext/libmemcached-0.50/libmemcached/initialize_query.cc +70 -0
  256. data/ext/libmemcached-0.50/libmemcached/initialize_query.h +51 -0
  257. data/ext/libmemcached-0.50/libmemcached/internal.h +46 -0
  258. data/ext/libmemcached-0.50/libmemcached/io.cc +920 -0
  259. data/ext/libmemcached-0.50/libmemcached/io.h +119 -0
  260. data/ext/libmemcached-0.50/libmemcached/is.h +48 -0
  261. data/ext/libmemcached-0.50/libmemcached/key.cc +23 -0
  262. data/ext/libmemcached-0.50/libmemcached/libmemcached_probes.d +30 -0
  263. data/ext/libmemcached-0.50/libmemcached/libmemcached_probes.h +118 -0
  264. data/ext/libmemcached-0.50/libmemcached/memcached.cc +437 -0
  265. data/ext/libmemcached-0.50/libmemcached/memcached.h +214 -0
  266. data/ext/libmemcached-0.50/libmemcached/memcached.hpp +799 -0
  267. data/ext/libmemcached-0.50/libmemcached/memcached/README.txt +7 -0
  268. data/ext/libmemcached-0.50/libmemcached/memcached/protocol_binary.h +726 -0
  269. data/ext/libmemcached-0.50/libmemcached/memcached/vbucket.h +26 -0
  270. data/ext/libmemcached-0.50/libmemcached/memcached_util.h +44 -0
  271. data/ext/libmemcached-0.50/libmemcached/memory.h +79 -0
  272. data/ext/libmemcached-0.50/libmemcached/options.cc +178 -0
  273. data/ext/libmemcached-0.50/libmemcached/options.h +49 -0
  274. data/ext/libmemcached-0.50/libmemcached/options.hpp +56 -0
  275. data/ext/libmemcached-0.50/libmemcached/options/context.h +151 -0
  276. data/ext/libmemcached-0.50/libmemcached/options/include.am +19 -0
  277. data/ext/libmemcached-0.50/libmemcached/options/parser.am +0 -0
  278. data/ext/libmemcached-0.50/libmemcached/options/parser.cc +2324 -0
  279. data/ext/libmemcached-0.50/libmemcached/options/parser.h +122 -0
  280. data/ext/libmemcached-0.50/libmemcached/options/scanner.cc +3203 -0
  281. data/ext/libmemcached-0.50/libmemcached/options/scanner.h +479 -0
  282. data/ext/libmemcached-0.50/libmemcached/options/server.h +60 -0
  283. data/ext/libmemcached-0.50/libmemcached/options/symbol.h +57 -0
  284. data/ext/libmemcached-0.50/libmemcached/parse.cc +110 -0
  285. data/ext/libmemcached-0.50/libmemcached/parse.h +23 -0
  286. data/ext/libmemcached-0.50/libmemcached/platform.h +56 -0
  287. data/ext/libmemcached-0.50/libmemcached/prefix_key.cc +65 -0
  288. data/ext/libmemcached-0.50/libmemcached/prefix_key.h +49 -0
  289. data/ext/libmemcached-0.50/libmemcached/protocol/ascii_handler.c +963 -0
  290. data/ext/libmemcached-0.50/libmemcached/protocol/ascii_handler.h +40 -0
  291. data/ext/libmemcached-0.50/libmemcached/protocol/binary_handler.c +1121 -0
  292. data/ext/libmemcached-0.50/libmemcached/protocol/binary_handler.h +47 -0
  293. data/ext/libmemcached-0.50/libmemcached/protocol/cache.c +149 -0
  294. data/ext/libmemcached-0.50/libmemcached/protocol/cache.h +116 -0
  295. data/ext/libmemcached-0.50/libmemcached/protocol/callback.h +418 -0
  296. data/ext/libmemcached-0.50/libmemcached/protocol/common.h +163 -0
  297. data/ext/libmemcached-0.50/libmemcached/protocol/include.am +26 -0
  298. data/ext/libmemcached-0.50/libmemcached/protocol/pedantic.c +202 -0
  299. data/ext/libmemcached-0.50/libmemcached/protocol/protocol_handler.c +365 -0
  300. data/ext/libmemcached-0.50/libmemcached/protocol_handler.h +215 -0
  301. data/ext/libmemcached-0.50/libmemcached/purge.cc +90 -0
  302. data/ext/libmemcached-0.50/libmemcached/quit.cc +139 -0
  303. data/ext/libmemcached-0.50/libmemcached/quit.h +55 -0
  304. data/ext/libmemcached-0.50/libmemcached/response.cc +619 -0
  305. data/ext/libmemcached-0.50/libmemcached/response.h +57 -0
  306. data/ext/libmemcached-0.50/libmemcached/result.cc +173 -0
  307. data/ext/libmemcached-0.50/libmemcached/result.h +100 -0
  308. data/ext/libmemcached-0.50/libmemcached/return.h +98 -0
  309. data/ext/libmemcached-0.50/libmemcached/sasl.c +408 -0
  310. data/ext/libmemcached-0.50/libmemcached/sasl.h +86 -0
  311. data/ext/libmemcached-0.50/libmemcached/server.cc +351 -0
  312. data/ext/libmemcached-0.50/libmemcached/server.h +169 -0
  313. data/ext/libmemcached-0.50/libmemcached/server_list.cc +88 -0
  314. data/ext/libmemcached-0.50/libmemcached/server_list.h +77 -0
  315. data/ext/libmemcached-0.50/libmemcached/stats.cc +623 -0
  316. data/ext/libmemcached-0.50/libmemcached/stats.h +96 -0
  317. data/ext/libmemcached-0.50/libmemcached/storage.cc +567 -0
  318. data/ext/libmemcached-0.50/libmemcached/storage.h +133 -0
  319. data/ext/libmemcached-0.50/libmemcached/strerror.cc +189 -0
  320. data/ext/libmemcached-0.50/libmemcached/strerror.h +50 -0
  321. data/ext/libmemcached-0.50/libmemcached/string.cc +253 -0
  322. data/ext/libmemcached-0.50/libmemcached/string.h +121 -0
  323. data/ext/libmemcached-0.50/libmemcached/touch.cc +106 -0
  324. data/ext/libmemcached-0.50/libmemcached/touch.h +59 -0
  325. data/ext/libmemcached-0.50/libmemcached/types.h +117 -0
  326. data/ext/libmemcached-0.50/libmemcached/util.h +40 -0
  327. data/ext/libmemcached-0.50/libmemcached/util/flush.cc +61 -0
  328. data/ext/libmemcached-0.50/libmemcached/util/flush.h +50 -0
  329. data/ext/libmemcached-0.50/libmemcached/util/include.am +34 -0
  330. data/ext/libmemcached-0.50/libmemcached/util/ping.cc +62 -0
  331. data/ext/libmemcached-0.50/libmemcached/util/ping.h +49 -0
  332. data/ext/libmemcached-0.50/libmemcached/util/pool.cc +392 -0
  333. data/ext/libmemcached-0.50/libmemcached/util/pool.h +78 -0
  334. data/ext/libmemcached-0.50/libmemcached/util/version.cc +87 -0
  335. data/ext/libmemcached-0.50/libmemcached/util/version.h +53 -0
  336. data/ext/libmemcached-0.50/libmemcached/verbosity.cc +97 -0
  337. data/ext/libmemcached-0.50/libmemcached/verbosity.h +50 -0
  338. data/ext/libmemcached-0.50/libmemcached/version.cc +214 -0
  339. data/ext/libmemcached-0.50/libmemcached/version.h +52 -0
  340. data/ext/libmemcached-0.50/libmemcached/virtual_bucket.c +118 -0
  341. data/ext/libmemcached-0.50/libmemcached/virtual_bucket.h +59 -0
  342. data/ext/libmemcached-0.50/libmemcached/visibility.h +51 -0
  343. data/ext/libmemcached-0.50/libmemcached/watchpoint.h +110 -0
  344. data/ext/libmemcached-0.50/libtest/callbacks.h +21 -0
  345. data/ext/libmemcached-0.50/libtest/collection.h +19 -0
  346. data/ext/libmemcached-0.50/libtest/common.h +50 -0
  347. data/ext/libmemcached-0.50/libtest/core.h +11 -0
  348. data/ext/libmemcached-0.50/libtest/error.h +18 -0
  349. data/ext/libmemcached-0.50/libtest/failed.h +52 -0
  350. data/ext/libmemcached-0.50/libtest/framework.cc +57 -0
  351. data/ext/libmemcached-0.50/libtest/framework.h +137 -0
  352. data/ext/libmemcached-0.50/libtest/get.h +22 -0
  353. data/ext/libmemcached-0.50/libtest/include.am +52 -0
  354. data/ext/libmemcached-0.50/libtest/runner.h +19 -0
  355. data/ext/libmemcached-0.50/libtest/server.c +355 -0
  356. data/ext/libmemcached-0.50/libtest/server.h +43 -0
  357. data/ext/libmemcached-0.50/libtest/stats.h +30 -0
  358. data/ext/libmemcached-0.50/libtest/strerror.h +14 -0
  359. data/ext/libmemcached-0.50/libtest/test.cc +319 -0
  360. data/ext/libmemcached-0.50/libtest/test.h +162 -0
  361. data/ext/libmemcached-0.50/libtest/test.hpp +46 -0
  362. data/ext/libmemcached-0.50/libtest/visibility.h +69 -0
  363. data/ext/libmemcached-0.50/m4/ac_cxx_header_stdcxx_98.m4 +83 -0
  364. data/ext/libmemcached-0.50/m4/acx_pthread.m4 +271 -0
  365. data/ext/libmemcached-0.50/m4/byteorder.m4 +19 -0
  366. data/ext/libmemcached-0.50/m4/deprecated.m4 +17 -0
  367. data/ext/libmemcached-0.50/m4/eagain.m4 +28 -0
  368. data/ext/libmemcached-0.50/m4/enable_utillib.m4 +16 -0
  369. data/ext/libmemcached-0.50/m4/gettext.m4 +379 -0
  370. data/ext/libmemcached-0.50/m4/hsieh.m4 +18 -0
  371. data/ext/libmemcached-0.50/m4/iconv.m4 +214 -0
  372. data/ext/libmemcached-0.50/m4/lib-ld.m4 +110 -0
  373. data/ext/libmemcached-0.50/m4/lib-link.m4 +767 -0
  374. data/ext/libmemcached-0.50/m4/lib-prefix.m4 +221 -0
  375. data/ext/libmemcached-0.50/m4/libtool.m4 +7851 -0
  376. data/ext/libmemcached-0.50/m4/ltoptions.m4 +369 -0
  377. data/ext/libmemcached-0.50/m4/ltsugar.m4 +123 -0
  378. data/ext/libmemcached-0.50/m4/ltversion.m4 +23 -0
  379. data/ext/libmemcached-0.50/m4/lt~obsolete.m4 +98 -0
  380. data/ext/libmemcached-0.50/m4/memaslap.m4 +9 -0
  381. data/ext/libmemcached-0.50/m4/memcached.m4 +31 -0
  382. data/ext/libmemcached-0.50/m4/murmur.m4 +18 -0
  383. data/ext/libmemcached-0.50/m4/pandora_64bit.m4 +60 -0
  384. data/ext/libmemcached-0.50/m4/pandora_bison.m4 +33 -0
  385. data/ext/libmemcached-0.50/m4/pandora_canonical.m4 +418 -0
  386. data/ext/libmemcached-0.50/m4/pandora_check_compiler_version.m4 +37 -0
  387. data/ext/libmemcached-0.50/m4/pandora_check_cxx_standard.m4 +23 -0
  388. data/ext/libmemcached-0.50/m4/pandora_cinttypes.m4 +39 -0
  389. data/ext/libmemcached-0.50/m4/pandora_clock_gettime.m4 +15 -0
  390. data/ext/libmemcached-0.50/m4/pandora_compile_stdcxx_0x.m4 +103 -0
  391. data/ext/libmemcached-0.50/m4/pandora_cstdint.m4 +38 -0
  392. data/ext/libmemcached-0.50/m4/pandora_cxx_demangle.m4 +27 -0
  393. data/ext/libmemcached-0.50/m4/pandora_enable_dtrace.m4 +60 -0
  394. data/ext/libmemcached-0.50/m4/pandora_ensure_gcc_version.m4 +62 -0
  395. data/ext/libmemcached-0.50/m4/pandora_extensions.m4 +16 -0
  396. data/ext/libmemcached-0.50/m4/pandora_fdatasync.m4 +25 -0
  397. data/ext/libmemcached-0.50/m4/pandora_flex.m4 +33 -0
  398. data/ext/libmemcached-0.50/m4/pandora_have_better_malloc.m4 +66 -0
  399. data/ext/libmemcached-0.50/m4/pandora_have_boost.m4 +93 -0
  400. data/ext/libmemcached-0.50/m4/pandora_have_gcc_atomics.m4 +37 -0
  401. data/ext/libmemcached-0.50/m4/pandora_have_innodb.m4 +41 -0
  402. data/ext/libmemcached-0.50/m4/pandora_have_libaio.m4 +56 -0
  403. data/ext/libmemcached-0.50/m4/pandora_have_libavahi.m4 +41 -0
  404. data/ext/libmemcached-0.50/m4/pandora_have_libbdb.m4 +40 -0
  405. data/ext/libmemcached-0.50/m4/pandora_have_libboost_date_time.m4 +46 -0
  406. data/ext/libmemcached-0.50/m4/pandora_have_libboost_filesystem.m4 +47 -0
  407. data/ext/libmemcached-0.50/m4/pandora_have_libboost_iostreams.m4 +49 -0
  408. data/ext/libmemcached-0.50/m4/pandora_have_libboost_options.m4 +47 -0
  409. data/ext/libmemcached-0.50/m4/pandora_have_libboost_regex.m4 +54 -0
  410. data/ext/libmemcached-0.50/m4/pandora_have_libboost_test.m4 +45 -0
  411. data/ext/libmemcached-0.50/m4/pandora_have_libboost_thread.m4 +54 -0
  412. data/ext/libmemcached-0.50/m4/pandora_have_libcassandra.m4 +44 -0
  413. data/ext/libmemcached-0.50/m4/pandora_have_libcurl.m4 +62 -0
  414. data/ext/libmemcached-0.50/m4/pandora_have_libdl.m4 +51 -0
  415. data/ext/libmemcached-0.50/m4/pandora_have_libdrizzle.m4 +61 -0
  416. data/ext/libmemcached-0.50/m4/pandora_have_libevent.m4 +66 -0
  417. data/ext/libmemcached-0.50/m4/pandora_have_libgearman.m4 +41 -0
  418. data/ext/libmemcached-0.50/m4/pandora_have_libgtest.m4 +47 -0
  419. data/ext/libmemcached-0.50/m4/pandora_have_libhaildb.m4 +43 -0
  420. data/ext/libmemcached-0.50/m4/pandora_have_libhashkit.m4 +42 -0
  421. data/ext/libmemcached-0.50/m4/pandora_have_libinnodb.m4 +64 -0
  422. data/ext/libmemcached-0.50/m4/pandora_have_libldap.m4 +73 -0
  423. data/ext/libmemcached-0.50/m4/pandora_have_libmemcached.m4 +106 -0
  424. data/ext/libmemcached-0.50/m4/pandora_have_libmysqlclient.m4 +146 -0
  425. data/ext/libmemcached-0.50/m4/pandora_have_libndbclient.m4 +80 -0
  426. data/ext/libmemcached-0.50/m4/pandora_have_libpcre.m4 +73 -0
  427. data/ext/libmemcached-0.50/m4/pandora_have_libpq.m4 +46 -0
  428. data/ext/libmemcached-0.50/m4/pandora_have_libpqxx.m4 +44 -0
  429. data/ext/libmemcached-0.50/m4/pandora_have_libsqlite3.m4 +42 -0
  430. data/ext/libmemcached-0.50/m4/pandora_have_libtokyocabinet.m4 +54 -0
  431. data/ext/libmemcached-0.50/m4/pandora_have_libuuid.m4 +55 -0
  432. data/ext/libmemcached-0.50/m4/pandora_have_libvbucket.m4 +40 -0
  433. data/ext/libmemcached-0.50/m4/pandora_have_libxml2.m4 +52 -0
  434. data/ext/libmemcached-0.50/m4/pandora_have_libz.m4 +51 -0
  435. data/ext/libmemcached-0.50/m4/pandora_have_protobuf.m4 +82 -0
  436. data/ext/libmemcached-0.50/m4/pandora_have_sasl.m4 +133 -0
  437. data/ext/libmemcached-0.50/m4/pandora_have_thrift.m4 +45 -0
  438. data/ext/libmemcached-0.50/m4/pandora_header_assert.m4 +23 -0
  439. data/ext/libmemcached-0.50/m4/pandora_header_stdcxx_98.m4 +83 -0
  440. data/ext/libmemcached-0.50/m4/pandora_intltool.m4 +225 -0
  441. data/ext/libmemcached-0.50/m4/pandora_libtool.m4 +25 -0
  442. data/ext/libmemcached-0.50/m4/pandora_optimize.m4 +75 -0
  443. data/ext/libmemcached-0.50/m4/pandora_platform.m4 +117 -0
  444. data/ext/libmemcached-0.50/m4/pandora_plugins.m4 +62 -0
  445. data/ext/libmemcached-0.50/m4/pandora_print_callstack.m4 +61 -0
  446. data/ext/libmemcached-0.50/m4/pandora_pthread.m4 +258 -0
  447. data/ext/libmemcached-0.50/m4/pandora_python3_devel.m4 +236 -0
  448. data/ext/libmemcached-0.50/m4/pandora_run_cpplint.m4 +8 -0
  449. data/ext/libmemcached-0.50/m4/pandora_sasl.m4 +133 -0
  450. data/ext/libmemcached-0.50/m4/pandora_shared_ptr.m4 +59 -0
  451. data/ext/libmemcached-0.50/m4/pandora_stack_direction.m4 +39 -0
  452. data/ext/libmemcached-0.50/m4/pandora_stl_hash.m4 +94 -0
  453. data/ext/libmemcached-0.50/m4/pandora_swig.m4 +39 -0
  454. data/ext/libmemcached-0.50/m4/pandora_use_pipe.m4 +36 -0
  455. data/ext/libmemcached-0.50/m4/pandora_vc_build.m4 +168 -0
  456. data/ext/libmemcached-0.50/m4/pandora_version.m4 +11 -0
  457. data/ext/libmemcached-0.50/m4/pandora_visibility.m4 +75 -0
  458. data/ext/libmemcached-0.50/m4/pandora_warnings.m4 +447 -0
  459. data/ext/libmemcached-0.50/m4/pandora_with_gettext.m4 +44 -0
  460. data/ext/libmemcached-0.50/m4/pandora_with_lua.m4 +55 -0
  461. data/ext/libmemcached-0.50/m4/pandora_with_memcached.m4 +41 -0
  462. data/ext/libmemcached-0.50/m4/pandora_with_perl.m4 +81 -0
  463. data/ext/libmemcached-0.50/m4/pandora_with_php.m4 +56 -0
  464. data/ext/libmemcached-0.50/m4/pandora_with_python.m4 +37 -0
  465. data/ext/libmemcached-0.50/m4/pandora_with_python3.m4 +44 -0
  466. data/ext/libmemcached-0.50/m4/pandora_with_r.m4 +33 -0
  467. data/ext/libmemcached-0.50/m4/pandora_with_ruby.m4 +79 -0
  468. data/ext/libmemcached-0.50/m4/pandora_with_valgrind.m4 +17 -0
  469. data/ext/libmemcached-0.50/m4/pkg.m4 +157 -0
  470. data/ext/libmemcached-0.50/m4/po.m4 +449 -0
  471. data/ext/libmemcached-0.50/m4/progtest.m4 +92 -0
  472. data/ext/libmemcached-0.50/m4/protocol_binary.m4 +36 -0
  473. data/ext/libmemcached-0.50/m4/setsockopt.m4 +73 -0
  474. data/ext/libmemcached-0.50/m4/socket_send_flags.m4 +66 -0
  475. data/ext/libmemcached-0.50/poll/include.am +8 -0
  476. data/ext/libmemcached-0.50/poll/poll.c +77 -0
  477. data/ext/libmemcached-0.50/poll/poll.h +45 -0
  478. data/ext/libmemcached-0.50/support/include.am +11 -0
  479. data/ext/libmemcached-0.50/support/libmemcached-fc.spec.in +105 -0
  480. data/ext/libmemcached-0.50/support/libmemcached.pc.in +10 -0
  481. data/ext/libmemcached-0.50/support/libmemcached.spec.in +281 -0
  482. data/ext/libmemcached-0.50/support/set_benchmark.sh +5 -0
  483. data/ext/libmemcached-0.50/tests/atomsmasher.cc +295 -0
  484. data/ext/libmemcached-0.50/tests/basic.cc +134 -0
  485. data/ext/libmemcached-0.50/tests/basic.h +66 -0
  486. data/ext/libmemcached-0.50/tests/cpp_example.cc +195 -0
  487. data/ext/libmemcached-0.50/tests/deprecated.cc +72 -0
  488. data/ext/libmemcached-0.50/tests/deprecated.h +49 -0
  489. data/ext/libmemcached-0.50/tests/error_conditions.cc +63 -0
  490. data/ext/libmemcached-0.50/tests/error_conditions.h +48 -0
  491. data/ext/libmemcached-0.50/tests/hash_plus.cc +225 -0
  492. data/ext/libmemcached-0.50/tests/hash_results.h +127 -0
  493. data/ext/libmemcached-0.50/tests/hashkit_functions.cc +619 -0
  494. data/ext/libmemcached-0.50/tests/include.am +342 -0
  495. data/ext/libmemcached-0.50/tests/ketama_test_cases.h +121 -0
  496. data/ext/libmemcached-0.50/tests/ketama_test_cases_spy.h +118 -0
  497. data/ext/libmemcached-0.50/tests/libmemcached_world.h +205 -0
  498. data/ext/libmemcached-0.50/tests/mem_functions.cc +6648 -0
  499. data/ext/libmemcached-0.50/tests/mem_udp.cc +510 -0
  500. data/ext/libmemcached-0.50/tests/output_plus.res +5 -0
  501. data/ext/libmemcached-0.50/tests/parser.cc +599 -0
  502. data/ext/libmemcached-0.50/tests/parser.h +109 -0
  503. data/ext/libmemcached-0.50/tests/plus.cpp +240 -0
  504. data/ext/libmemcached-0.50/tests/pool.cc +78 -0
  505. data/ext/libmemcached-0.50/tests/pool.h +49 -0
  506. data/ext/libmemcached-0.50/tests/print.cc +58 -0
  507. data/ext/libmemcached-0.50/tests/print.h +51 -0
  508. data/ext/libmemcached-0.50/tests/replication.cc +333 -0
  509. data/ext/libmemcached-0.50/tests/replication.h +64 -0
  510. data/ext/libmemcached-0.50/tests/start.cc +29 -0
  511. data/ext/libmemcached-0.50/tests/string.cc +174 -0
  512. data/ext/libmemcached-0.50/tests/string.h +67 -0
  513. data/ext/libmemcached-0.50/tests/virtual_buckets.cc +143 -0
  514. data/ext/libmemcached-0.50/tests/virtual_buckets.h +51 -0
  515. data/ext/libmemcached-0.50/win32/include.am +11 -0
  516. data/ext/libmemcached-0.50/win32/wrappers.h +55 -0
  517. data/ext/rlibmemcached.i +263 -0
  518. data/ext/rlibmemcached_wrap.c +16732 -0
  519. data/lib/memcached.rb +32 -0
  520. data/lib/memcached/auth.rb +16 -0
  521. data/lib/memcached/behaviors.rb +77 -0
  522. data/lib/memcached/exceptions.rb +84 -0
  523. data/lib/memcached/experimental.rb +48 -0
  524. data/lib/memcached/memcached.rb +660 -0
  525. data/lib/memcached/rails.rb +133 -0
  526. data/test/profile/benchmark.rb +245 -0
  527. data/test/profile/c_profiler.rb +14 -0
  528. data/test/profile/exercise.rb +185 -0
  529. data/test/profile/rb_profiler.rb +21 -0
  530. data/test/profile/valgrind.rb +10 -0
  531. data/test/setup.rb +30 -0
  532. data/test/teardown.rb +0 -0
  533. data/test/test_helper.rb +19 -0
  534. data/test/unit/binding_test.rb +8 -0
  535. data/test/unit/memcached_experimental_test.rb +274 -0
  536. data/test/unit/memcached_test.rb +1293 -0
  537. data/test/unit/rails_test.rb +122 -0
  538. metadata +650 -0
  539. metadata.gz.sig +0 -0
@@ -0,0 +1,1222 @@
1
+ .TH "MEMASLAP" "1" "June 17, 2011" "0.49" "libmemcached"
2
+ .SH NAME
3
+ memaslap \- libmemcached Documentation
4
+ .
5
+ .nr rst2man-indent-level 0
6
+ .
7
+ .de1 rstReportMargin
8
+ \\$1 \\n[an-margin]
9
+ level \\n[rst2man-indent-level]
10
+ level margin: \\n[rst2man-indent\\n[rst2man-indent-level]]
11
+ -
12
+ \\n[rst2man-indent0]
13
+ \\n[rst2man-indent1]
14
+ \\n[rst2man-indent2]
15
+ ..
16
+ .de1 INDENT
17
+ .\" .rstReportMargin pre:
18
+ . RS \\$1
19
+ . nr rst2man-indent\\n[rst2man-indent-level] \\n[an-margin]
20
+ . nr rst2man-indent-level +1
21
+ .\" .rstReportMargin post:
22
+ ..
23
+ .de UNINDENT
24
+ . RE
25
+ .\" indent \\n[an-margin]
26
+ .\" old: \\n[rst2man-indent\\n[rst2man-indent-level]]
27
+ .nr rst2man-indent-level -1
28
+ .\" new: \\n[rst2man-indent\\n[rst2man-indent-level]]
29
+ .in \\n[rst2man-indent\\n[rst2man-indent-level]]u
30
+ ..
31
+ .\" Man page generated from reStructeredText.
32
+ .
33
+ .SH SYNOPSIS
34
+ .sp
35
+ :program:: \fImemaslap\fP
36
+ .INDENT 0.0
37
+ .TP
38
+ .B \-\-help
39
+ .UNINDENT
40
+ .SH DESCRIPTION
41
+ .sp
42
+ \fBmemaslap\fP is a load generation and benchmark tool for memcached(1)
43
+ servers. It generates configurable workload such as threads, concurrencies, connections,
44
+ run time, overwrite, miss rate, key size, value size, get/set proportion,
45
+ expected throughput, and so on. Furthermore, it also testss data
46
+ verification, expire\-time verification, UDP, binary protocol, facebook test,
47
+ replication test, multi\-get and reconnection, etc.
48
+ .sp
49
+ Memslap manages network connections like memcached with
50
+ libevent. Each thread of memaslap is bound with a CPU core, all
51
+ the threads don\(aqt communicate with each other, and there are several socket
52
+ connections in each thread. Each connection keeps key size distribution,
53
+ value size distribution, and command distribution by itself.
54
+ .sp
55
+ You can specify servers via the \fB\-\-servers\fP option or via the
56
+ environment variable \fBMEMCACHED_SERVERS\fP.
57
+ .SH FEATURES
58
+ .sp
59
+ Memslap is developed to for the following purposes:
60
+ .sp
61
+ Manages network connections with libevent asynchronously.
62
+ .sp
63
+ Set both TCP and UDP up to use non\-blocking IO.
64
+ .sp
65
+ Improves parallelism: higher performance in multi\-threads environments.
66
+ .sp
67
+ Improves time efficiency: faster processing speed.
68
+ .sp
69
+ Generates key and value more efficiently; key size distribution and value size distribution are configurable.
70
+ .sp
71
+ Supports get, multi\-get, and set commands; command distribution is configurable.
72
+ .sp
73
+ Supports controllable miss rate and overwrite rate.
74
+ .sp
75
+ Supports data and expire\-time verification.
76
+ .sp
77
+ Supports dumping statistic information periodically.
78
+ .sp
79
+ Supports thousands of TCP connections.
80
+ .sp
81
+ Supports binary protocol.
82
+ .sp
83
+ Supports facebook test (set with TCP and multi\-get with UDP) and replication test.
84
+ .SH DETAILS
85
+ .SS Effective implementation of network.
86
+ .sp
87
+ For memaslap, both TCP and UDP use non\-blocking network IO. All
88
+ the network events are managed by libevent as memcached. The network module
89
+ of memaslap is similar to memcached. Libevent can ensure
90
+ memaslap can handle network very efficiently.
91
+ .SS Effective implementation of multi\-threads and concurrency
92
+ .sp
93
+ Memslap has the similar implementation of multi\-threads to
94
+ memcached. Memslap creates one or more self\-governed threads;
95
+ each thread is bound with one CPU core if the system testss setting CPU
96
+ core affinity.
97
+ .sp
98
+ In addition, each thread has a libevent to manage the events of the network;
99
+ each thread has one or more self\-governed concurrencies; and each
100
+ concurrency has one or more socket connections. All the concurrencies don’t
101
+ communicate with each other even though they are in the same thread.
102
+ .sp
103
+ Memslap can create thousands of socket connections, and each
104
+ concurrency has tens of socket connections. Each concurrency randomly or
105
+ sequentially selects one socket connection from its socket connection pool
106
+ to run, so memaslap can ensure each concurrency handles one
107
+ socket connection at any given time. Users can specify the number of
108
+ concurrency and socket connections of each concurrency according to their
109
+ expected workload.
110
+ .SS Effective implementation of generating key and value
111
+ .sp
112
+ In order to improve time efficiency and space efficiency,
113
+ memaslap creates a random characters table with 10M characters. All the
114
+ suffixes of keys and values are generated from this random characters table.
115
+ .sp
116
+ Memslap uses the offset in the character table and the length
117
+ of the string to identify a string. It can save much memory.
118
+ Each key contains two parts, a prefix and a suffix. The prefix is an
119
+ uint64_t, 8 bytes. In order to verify the data set before,
120
+ memaslap need to ensure each key is unique, so it uses the prefix to identify
121
+ a key. The prefix cannot include illegal characters, such as ‘r’, ‘n’,
122
+ ‘0’ and ‘ ‘. And memaslap has an algorithm to ensure that.
123
+ .sp
124
+ Memslap doesn’t generate all the objects (key\-value pairs) at
125
+ the beginning. It only generates enough objects to fill the task window
126
+ (default 10K objects) of each concurrency. Each object has the following
127
+ basic information, key prefix, key suffix offset in the character table, key
128
+ length, value offset in the character table, and value length.
129
+ .sp
130
+ In the work process, each concurrency sequentially or randomly selects an
131
+ object from the window to do set operation or get operation. At the same
132
+ time, each concurrency kicks objects out of its window and adds new object
133
+ into it.
134
+ .SS Simple but useful task scheduling
135
+ .sp
136
+ Memslap uses libevent to schedule all the concurrencies of
137
+ threads, and each concurrency schedules tasks based on the local task
138
+ window. Memslap assumes that if each concurrency keeps the same
139
+ key distribution, value distribution and commands distribution, from
140
+ outside, memaslap keeps all the distribution as a whole.
141
+ Each task window includes a lot of objects, each object stores its basic
142
+ information, such as key, value, expire time, and so on. At any time, all
143
+ the objects in the window keep the same and fixed key and value
144
+ distribution. If an object is overwritten, the value of the object will be
145
+ updated. Memslap verifies the data or expire\-time according to
146
+ the object information stored in the task window.
147
+ .sp
148
+ Libevent selects which concurrency to handle based on a specific network
149
+ event. Then the concurrency selects which command (get or set) to operate
150
+ based on the command distribution. If it needs to kick out an old object and
151
+ add a new object, in order to keep the same key and value distribution, the
152
+ new object must have the same key length and value length.
153
+ .sp
154
+ If memcached server has two cache layers (memory and SSD), running
155
+ memaslap with different window sizes can get different cache
156
+ miss rates. If memaslap adds enough objects into the windows at
157
+ the beginning, and the cache of memcached cannot store all the objects
158
+ initialized, then memaslap will get some objects from the second
159
+ cache layer. It causes the first cache layer to miss. So the user can
160
+ specify the window size to get the expected miss rate of the first cache
161
+ layer.
162
+ .SS Useful implementation of multi\-servers , UDP, TCP, multi\-get and binary protocol
163
+ .sp
164
+ Because each thread is self\-governed, memaslap can assign
165
+ different threads to handle different memcached servers. This is just one of
166
+ the ways in which memaslap testss multiple servers. The only
167
+ limitation is that the number of servers cannot be greater than the number
168
+ of threads. The other way to tests multiple servers is for replication
169
+ test. Each concurrency has one socket connection to each memcached server.
170
+ For the implementation, memaslap can set some objects to one
171
+ memcached server, and get these objects from the other servers.
172
+ .sp
173
+ By default, Memslap does single get. If the user specifies
174
+ multi\-get option, memaslap will collect enough get commands and
175
+ pack and send the commands together.
176
+ .sp
177
+ Memslap testss both the ASCII protocol and binary protocol,
178
+ but it runs on the ASCII protocol by default.
179
+ Memslap by default runs on the TCP protocol, but it also
180
+ testss UDP. Because UDP is unreliable, dropped packages and out\-of\-order
181
+ packages may occur. Memslap creates a memory buffer to handle
182
+ these problems. Memslap tries to read all the response data of
183
+ one command from the server and reorders the response data. If some packages
184
+ get lost, the waiting timeout mechanism can ensure half\-baked packages will
185
+ be discarded and the next command will be sent.
186
+ .SH USAGE
187
+ .sp
188
+ Below are some usage samples:
189
+ .sp
190
+ memaslap \-s 127.0.0.1:11211 \-S 5s
191
+ .sp
192
+ memaslap \-s 127.0.0.1:11211 \-t 2m \-v 0.2 \-e 0.05 \-b
193
+ .sp
194
+ memaslap \-s 127.0.0.1:11211 \-F config \-t 2m \-w 40k \-S 20s \-o 0.2
195
+ .sp
196
+ memaslap \-s 127.0.0.1:11211 \-F config \-t 2m \-T 4 \-c 128 \-d 20 \-P 40k
197
+ .sp
198
+ memaslap \-s 127.0.0.1:11211 \-F config \-t 2m \-d 50 \-a \-n 40
199
+ .sp
200
+ memaslap \-s 127.0.0.1:11211,127.0.0.1:11212 \-F config \-t 2m
201
+ .sp
202
+ memaslap \-s 127.0.0.1:11211,127.0.0.1:11212 \-F config \-t 2m \-p 2
203
+ .sp
204
+ The user must specify one server at least to run memaslap. The
205
+ rest of the parameters have default values, as shown below:
206
+ .sp
207
+ Thread number = 1 Concurrency = 16
208
+ .sp
209
+ Run time = 600 seconds Configuration file = NULL
210
+ .sp
211
+ Key size = 64 Value size = 1024
212
+ .sp
213
+ Get/set = 9:1 Window size = 10k
214
+ .sp
215
+ Execute number = 0 Single get = true
216
+ .sp
217
+ Multi\-get = false Number of sockets of each concurrency = 1
218
+ .sp
219
+ Reconnect = false Data verification = false
220
+ .sp
221
+ Expire\-time verification = false ASCII protocol = true
222
+ .sp
223
+ Binary protocol = false Dumping statistic information
224
+ .sp
225
+ periodically = false
226
+ .sp
227
+ Overwrite proportion = 0% UDP = false
228
+ .sp
229
+ TCP = true Limit throughput = false
230
+ .sp
231
+ Facebook test = false Replication test = false
232
+ .SS Key size, value size and command distribution.
233
+ .sp
234
+ All the distributions are read from the configuration file specified by user
235
+ with “—cfg_cmd” option. If the user does not specify a configuration file,
236
+ memaslap will run with the default distribution (key size = 64,
237
+ value size = 1024, get/set = 9:1). For information on how to edit the
238
+ configuration file, refer to the “Configuration File” section.
239
+ .sp
240
+ The minimum key size is 16 bytes; the maximum key size is 250 bytes. The
241
+ precision of proportion is 0.001. The proportion of distribution will be
242
+ rounded to 3 decimal places.
243
+ .sp
244
+ The minimum value size is 1 bytes; the maximum value size is 1M bytes. The
245
+ precision of proportion is 0.001. The proportion of distribution will be
246
+ rounded to 3 decimal places.
247
+ Currently, memaslap only testss set and get commands. And it
248
+ testss 100% set and 100% get. For 100% get, it will preset some objects to
249
+ the server.
250
+ .SS Multi\-thread and concurrency
251
+ .sp
252
+ The high performance of memaslap benefits from the special
253
+ schedule of thread and concurrency. It’s important to specify the proper
254
+ number of them. The default number of threads is 1; the default number of
255
+ concurrency is 16. The user can use “—threads” and “\-\-concurrency” to
256
+ specify these variables.
257
+ .sp
258
+ If the system testss setting CPU affinity and the number of threads
259
+ specified by the user is greater than 1, memaslap will try to
260
+ bind each thread to a different CPU core. So if you want to get the best
261
+ performance memaslap, it is better to specify the number of
262
+ thread equal to the number of CPU cores. The number of threads specified by
263
+ the user can also be less or greater than the number of CPU cores. Because
264
+ of the limitation of implementation, the number of concurrencies could be
265
+ the multiple of the number of threads.
266
+ .INDENT 0.0
267
+ .IP 1. 3
268
+ .
269
+ For 8 CPU cores system
270
+ .UNINDENT
271
+ .sp
272
+ For example:
273
+ .sp
274
+ \-\-threads=2 \-\-concurrency=128
275
+ .sp
276
+ \-\-threads=8 \-\-concurrency=128
277
+ .sp
278
+ \-\-threads=8 \-\-concurrency=256
279
+ .sp
280
+ \-\-threads=12 \-\-concurrency=144
281
+ .INDENT 0.0
282
+ .IP 2. 3
283
+ .
284
+ For 16 CPU cores system
285
+ .UNINDENT
286
+ .sp
287
+ For example:
288
+ .sp
289
+ \-\-threads=8 \-\-concurrency=128
290
+ .sp
291
+ \-\-threads=16 \-\-concurrency=256
292
+ .sp
293
+ \-\-threads=16 \-\-concurrency=512
294
+ .sp
295
+ \-\-threads=24 \-\-concurrency=288
296
+ .sp
297
+ The memaslap performs very well, when
298
+ used to test the performance of memcached servers.
299
+ Most of the time, the bottleneck is the network or
300
+ the server. If for some reason the user wants to
301
+ limit the performance of memaslap, there
302
+ are two ways to do this:
303
+ .sp
304
+ Decrease the number of threads and concurrencies.
305
+ Use the option “\-\-tps” that memaslap
306
+ provides to limit the throughput. This option allows
307
+ the user to get the expected throughput. For
308
+ example, assume that the maximum throughput is 50
309
+ kops/s for a specific configuration, you can specify
310
+ the throughput equal to or less than the maximum
311
+ throughput using “\-\-tps” option.
312
+ .SS Window size
313
+ .sp
314
+ Most of the time, the user does not need to specify the window size. The
315
+ default window size is 10k. For Schooner Memcached, the user can specify
316
+ different window sizes to get different cache miss rates based on the test
317
+ case. Memslap testss cache miss rate between 0% and 100%.
318
+ If you use this utility to test the performance of Schooner Memcached, you
319
+ can specify a proper window size to get the expected cache miss rate. The
320
+ formula for calculating window size is as follows:
321
+ .sp
322
+ Assume that the key size is 128 bytes, and the value size is 2048 bytes, and
323
+ concurrency=128.
324
+ .sp
325
+ 1. Small cache cache_size=1M, 100% cache miss (all data get from SSD).
326
+ win_size=10k
327
+ .INDENT 0.0
328
+ .IP 2. 3
329
+ .
330
+ cache_size=4G
331
+ .UNINDENT
332
+ .sp
333
+ (1). cache miss rate 0%
334
+ .sp
335
+ win_size=8k
336
+ .sp
337
+ (2). cache miss rate 5%
338
+ .sp
339
+ win_size=11k
340
+ .INDENT 0.0
341
+ .IP 3. 3
342
+ .
343
+ cache_size=16G
344
+ .UNINDENT
345
+ .sp
346
+ (1). cache miss rate 0%
347
+ .sp
348
+ win_size=32k
349
+ .sp
350
+ (2). cache miss
351
+ .sp
352
+ rate 5%
353
+ .sp
354
+ win_size=46k
355
+ .sp
356
+ The formula for calculating window size for cache miss rate 0%:
357
+ .sp
358
+ cache_size / concurrency / (key_size + value_size) * 0.5
359
+ .sp
360
+ The formula for calculating window size for cache miss rate 5%:
361
+ .sp
362
+ cache_size / concurrency / (key_size + value_size) * 0.7
363
+ .SS Verification
364
+ .sp
365
+ Memslap testss both data verification and expire\-time
366
+ verification. The user can use "\-\-verify=" or "\-v" to specify the proportion
367
+ of data verification. In theory, it testss 100% data verification. The
368
+ user can use "\-\-exp_verify=" or "\-e" to specify the proportion of
369
+ expire\-time verification. In theory, it testss 100% expire\-time
370
+ verification. Specify the "\-\-verbose" options to get more detailed error
371
+ information.
372
+ .sp
373
+ For example: \-\-exp_verify=0.01 –verify=0.1 , it means that 1% of the objects
374
+ set with expire\-time, 10% of the objects gotten will be verified. If the
375
+ objects are gotten, memaslap will verify the expire\-time and
376
+ value.
377
+ .SS multi\-servers and multi\-config
378
+ .sp
379
+ Memslap testss multi\-servers based on self\-governed thread.
380
+ There is a limitation that the number of servers cannot be greater than the
381
+ number of threads. Memslap assigns one thread to handle one
382
+ server at least. The user can use the "\-\-servers=" or "\-s" option to specify
383
+ multi\-servers.
384
+ .sp
385
+ For example:
386
+ .sp
387
+ \-\-servers=10.1.1.1:11211,10.1.1.2:11212,10.1.1.3:11213 \-\-threads=6 \-\-concurrency=36
388
+ .sp
389
+ The above command means that there are 6 threads, with each thread having 6
390
+ concurrencies and that threads 0 and 3 handle server 0 (10.1.1.1); threads 1
391
+ and 4 handle server 1 (10.1.1.2); and thread 2 and 5 handle server 2
392
+ (10.1.1.3).
393
+ .sp
394
+ All the threads and concurrencies in memaslap are self\-governed.
395
+ .sp
396
+ So is memaslap. The user can start up several
397
+ memaslap instances. The user can run memaslap on different client
398
+ machines to communicate with the same memcached server at the same. It is
399
+ recommended that the user start different memaslap on different
400
+ machines using the same configuration.
401
+ .SS Run with execute number mode or time mode
402
+ .sp
403
+ The default memaslap runs with time mode. The default run time
404
+ is 10 minutes. If it times out, memaslap will exit. Do not
405
+ specify both execute number mode and time mode at the same time; just
406
+ specify one instead.
407
+ .sp
408
+ For example:
409
+ .sp
410
+ \-\-time=30s (It means the test will run 30 seconds.)
411
+ .sp
412
+ \-\-execute_number=100000 (It means that after running 100000 commands, the test will exit.)
413
+ .SS Dump statistic information periodically.
414
+ .sp
415
+ The user can use "\-\-stat_freq=" or "\-S" to specify the frequency.
416
+ .sp
417
+ For example:
418
+ .sp
419
+ \-\-stat_freq=20s
420
+ .sp
421
+ Memslap will dump the statistics of the commands (get and set) at the frequency of every 20
422
+ seconds.
423
+ .sp
424
+ For more information on the format of dumping statistic information, refer to “Format of Output” section.
425
+ .SS Multi\-get
426
+ .sp
427
+ The user can use "\-\-division=" or "\-d" to specify multi\-get keys count.
428
+ Memslap by default does single get with TCP. Memslap also testss data
429
+ verification and expire\-time verification for multi\-get.
430
+ .sp
431
+ Memslap testss multi\-get with both TCP and UDP. Because of
432
+ the different implementation of the ASCII protocol and binary protocol,
433
+ there are some differences between the two. For the ASCII protocol,
434
+ memaslap sends one “multi\-get” to the server once. For the
435
+ binary protocol, memaslap sends several single get commands
436
+ together as “multi\-get” to the server.
437
+ .SS UDP and TCP
438
+ .sp
439
+ Memslap testss both UDP and TCP. For TCP,
440
+ memaslap does not reconnect the memcached server if socket connections are
441
+ lost. If all the socket connections are lost or memcached server crashes,
442
+ memaslap will exit. If the user specifies the “\-\-reconnect”
443
+ option when socket connections are lost, it will reconnect them.
444
+ .sp
445
+ User can use “\-\-udp” to enable the UDP feature, but UDP comes with some
446
+ limitations:
447
+ .sp
448
+ UDP cannot set data more than 1400 bytes.
449
+ .sp
450
+ UDP is not testsed by the binary protocol because the binary protocol of
451
+ memcached does not tests that.
452
+ .sp
453
+ UDP doesn’t tests reconnection.
454
+ .SS Facebook test
455
+ .sp
456
+ Set data with TCP and multi\-get with UDP. Specify the following options:
457
+ .sp
458
+ "\-\-facebook \-\-division=50"
459
+ .sp
460
+ If you want to create thousands of TCP connections, specify the
461
+ .sp
462
+ "\-\-conn_sock=" option.
463
+ .sp
464
+ For example: \-\-facebook \-\-division=50 \-\-conn_sock=200
465
+ .sp
466
+ The above command means that memaslap will do facebook test,
467
+ each concurrency has 200 socket TCP connections and one UDP socket.
468
+ .sp
469
+ Memslap sets objects with the TCP socket, and multi\-gets 50
470
+ objects once with the UDP socket.
471
+ .sp
472
+ If you specify "\-\-division=50", the key size must be less that 25 bytes
473
+ because the UDP packet size is 1400 bytes.
474
+ .SS Replication test
475
+ .sp
476
+ For replication test, the user must specify at least two memcached servers.
477
+ The user can use “—rep_write=” option to enable feature.
478
+ .sp
479
+ For example:
480
+ .sp
481
+ \-\-servers=10.1.1.1:11211,10.1.1.2:11212 –rep_write=2
482
+ .sp
483
+ The above command means that there are 2 replication memcached servers,
484
+ memaslap will set objects to both server 0 and server 1, get
485
+ objects which are set to server 0 before from server 1, and also get objects
486
+ which are set to server 1 before from server 0. If server 0 crashes,
487
+ memaslap will only get objects from server 1. If server 0 comes
488
+ back to life again, memaslap will reconnect server 0. If both
489
+ server 0 and server 1 crash, memaslap will exit.
490
+ .SS Supports thousands of TCP connections
491
+ .sp
492
+ Start memaslap with "\-\-conn_sock=" or "\-n" to enable this
493
+ feature. Make sure that your system can tests opening thousands of files
494
+ and creating thousands of sockets. However, this feature does not tests
495
+ reconnection if sockets disconnect.
496
+ .sp
497
+ For example:
498
+ .sp
499
+ \-\-threads=8 \-\-concurrency=128 \-\-conn_sock=128
500
+ .sp
501
+ The above command means that memaslap starts up 8 threads, each
502
+ thread has 16 concurrencies, each concurrency has 128 TCP socket
503
+ connections, and the total number of TCP socket connections is 128 * 128 =
504
+ 16384.
505
+ .SS Supports binary protocol
506
+ .sp
507
+ Start memaslap with "\-\-binary" or "\-B" options to enable this
508
+ feature. It testss all the above features except UDP, because the latest
509
+ memcached 1.3.3 does not implement binary UDP protocol.
510
+ .sp
511
+ For example:
512
+ .sp
513
+ \-\-binary
514
+ .sp
515
+ Since memcached 1.3.3 doesn\(aqt implement binary UDP protocol,
516
+ memaslap does not tests UDP. In addition, memcached 1.3.3 does not tests
517
+ multi\-get. If you specify "\-\-division=50" option, it just sends 50 get
518
+ commands together as “mulit\-get” to the server.
519
+ .SH CONFIGURATION FILE
520
+ .sp
521
+ This section describes the format of the configuration file. By default
522
+ when no configuration file is specified memaslap reads the default
523
+ one located at ~/.memaslap.cnf.
524
+ .sp
525
+ Below is a sample configuration file:
526
+ .sp
527
+ .nf
528
+ .ft C
529
+ \-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-
530
+ #comments should start with \(aq#\(aq
531
+ #key
532
+ #start_len end_len proportion
533
+ #
534
+ #key length range from start_len to end_len
535
+ #start_len must be equal to or greater than 16
536
+ #end_len must be equal to or less than 250
537
+ #start_len must be equal to or greater than end_len
538
+ #memaslap will generate keys according to the key range
539
+ #proportion: indicates keys generated from one range accounts for the total
540
+ generated keys
541
+ #
542
+ #example1: key range 16~100 accounts for 80%
543
+ # key range 101~200 accounts for 10%
544
+ # key range 201~250 accounts for 10%
545
+ # total should be 1 (0.8+0.1+0.1 = 1)
546
+ #
547
+ # 16 100 0.8
548
+ # 101 200 0.1
549
+ # 201 249 0.1
550
+ #
551
+ #example2: all keys length are 128 bytes
552
+ #
553
+ # 128 128 1
554
+ key
555
+ 128 128 1
556
+ #value
557
+ #start_len end_len proportion
558
+ #
559
+ #value length range from start_len to end_len
560
+ #start_len must be equal to or greater than 1
561
+ #end_len must be equal to or less than 1M
562
+ #start_len must be equal to or greater than end_len
563
+ #memaslap will generate values according to the value range
564
+ #proportion: indicates values generated from one range accounts for the
565
+ total generated values
566
+ #
567
+ #example1: value range 1~1000 accounts for 80%
568
+ # value range 1001~10000 accounts for 10%
569
+ # value range 10001~100000 accounts for 10%
570
+ # total should be 1 (0.8+0.1+0.1 = 1)
571
+ #
572
+ # 1 1000 0.8
573
+ # 1001 10000 0.1
574
+ # 10001 100000 0.1
575
+ #
576
+ #example2: all value length are 128 bytes
577
+ #
578
+ # 128 128 1
579
+ value
580
+ 2048 2048 1
581
+ #cmd
582
+ #cmd_type cmd_proportion
583
+ #
584
+ #currently memaslap only testss get and set command.
585
+ #
586
+ #cmd_type
587
+ #set 0
588
+ #get 1
589
+ #
590
+ #example: set command accounts for 50%
591
+ # get command accounts for 50%
592
+ # total should be 1 (0.5+0.5 = 1)
593
+ #
594
+ # cmd
595
+ # 0 0.5
596
+ # 1 0.5
597
+ cmd
598
+ 0 0.1
599
+ 1.0 0.9
600
+ .ft P
601
+ .fi
602
+ .SH FORMAT OF OUTPUT
603
+ .sp
604
+ At the beginning, memaslap displays some configuration information as follows:
605
+ .sp
606
+ servers : 127.0.0.1:11211
607
+ .sp
608
+ threads count: 1
609
+ .sp
610
+ concurrency: 16
611
+ .sp
612
+ run time: 20s
613
+ .sp
614
+ windows size: 10k
615
+ .sp
616
+ set proportion: set_prop=0.10
617
+ .sp
618
+ get proportion: get_prop=0.90
619
+ .SS Where
620
+ .sp
621
+ servers : "servers"
622
+ .INDENT 0.0
623
+ .INDENT 3.5
624
+ .sp
625
+ The servers used by memaslap.
626
+ .UNINDENT
627
+ .UNINDENT
628
+ .sp
629
+ threads count
630
+ .INDENT 0.0
631
+ .INDENT 3.5
632
+ .sp
633
+ The number of threads memaslap runs with.
634
+ .UNINDENT
635
+ .UNINDENT
636
+ .sp
637
+ concurrency
638
+ .INDENT 0.0
639
+ .INDENT 3.5
640
+ .sp
641
+ The number of concurrencies memaslap runs with.
642
+ .UNINDENT
643
+ .UNINDENT
644
+ .sp
645
+ run time
646
+ .INDENT 0.0
647
+ .INDENT 3.5
648
+ .sp
649
+ How long to run memaslap.
650
+ .UNINDENT
651
+ .UNINDENT
652
+ .sp
653
+ windows size
654
+ .INDENT 0.0
655
+ .INDENT 3.5
656
+ .sp
657
+ The task window size of each concurrency.
658
+ .UNINDENT
659
+ .UNINDENT
660
+ .sp
661
+ set proportion
662
+ .INDENT 0.0
663
+ .INDENT 3.5
664
+ .sp
665
+ The proportion of set command.
666
+ .UNINDENT
667
+ .UNINDENT
668
+ .sp
669
+ get proportion
670
+ .INDENT 0.0
671
+ .INDENT 3.5
672
+ .sp
673
+ The proportion of get command.
674
+ .UNINDENT
675
+ .UNINDENT
676
+ .sp
677
+ The output of dynamic statistics is something like this:
678
+ .sp
679
+ .nf
680
+ .ft C
681
+ \-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-
682
+ Get Statistics
683
+ Type Time(s) Ops TPS(ops/s) Net(M/s) Get_miss Min(us) Max(us)
684
+ Avg(us) Std_dev Geo_dist
685
+ Period 5 345826 69165 65.3 0 27 2198 203
686
+ 95.43 177.29
687
+ Global 20 1257935 62896 71.8 0 26 3791 224
688
+ 117.79 192.60
689
+
690
+
691
+ Set Statistics
692
+ Type Time(s) Ops TPS(ops/s) Net(M/s) Get_miss Min(us) Max(us)
693
+ Avg(us) Std_dev Geo_dist
694
+ Period 5 38425 7685 7.3 0 42 628 240
695
+ 88.05 220.21
696
+ Global 20 139780 6989 8.0 0 37 3790 253
697
+ 117.93 224.83
698
+
699
+
700
+ Total Statistics
701
+ Type Time(s) Ops TPS(ops/s) Net(M/s) Get_miss Min(us) Max(us)
702
+ Avg(us) Std_dev Geo_dist
703
+ Period 5 384252 76850 72.5 0 27 2198 207
704
+ 94.72 181.18
705
+ Global 20 1397720 69886 79.7 0 26 3791 227
706
+ 117.93 195.60
707
+ \-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-
708
+ .ft P
709
+ .fi
710
+ .SS Where
711
+ .sp
712
+ Get Statistics
713
+ .INDENT 0.0
714
+ .INDENT 3.5
715
+ .sp
716
+ Statistics information of get command
717
+ .UNINDENT
718
+ .UNINDENT
719
+ .sp
720
+ Set Statistics
721
+ .INDENT 0.0
722
+ .INDENT 3.5
723
+ .sp
724
+ Statistics information of set command
725
+ .UNINDENT
726
+ .UNINDENT
727
+ .sp
728
+ Total Statistics
729
+ .INDENT 0.0
730
+ .INDENT 3.5
731
+ .sp
732
+ Statistics information of both get and set command
733
+ .UNINDENT
734
+ .UNINDENT
735
+ .sp
736
+ Period
737
+ .INDENT 0.0
738
+ .INDENT 3.5
739
+ .sp
740
+ Result within a period
741
+ .UNINDENT
742
+ .UNINDENT
743
+ .sp
744
+ Global
745
+ .INDENT 0.0
746
+ .INDENT 3.5
747
+ .sp
748
+ Accumulated results
749
+ .UNINDENT
750
+ .UNINDENT
751
+ .sp
752
+ Ops
753
+ .INDENT 0.0
754
+ .INDENT 3.5
755
+ .sp
756
+ Total operations
757
+ .UNINDENT
758
+ .UNINDENT
759
+ .sp
760
+ TPS
761
+ .INDENT 0.0
762
+ .INDENT 3.5
763
+ .sp
764
+ Throughput, operations/second
765
+ .UNINDENT
766
+ .UNINDENT
767
+ .sp
768
+ Net
769
+ .INDENT 0.0
770
+ .INDENT 3.5
771
+ .sp
772
+ The rate of network
773
+ .UNINDENT
774
+ .UNINDENT
775
+ .sp
776
+ Get_miss
777
+ .INDENT 0.0
778
+ .INDENT 3.5
779
+ .sp
780
+ How many objects can’t be gotten
781
+ .UNINDENT
782
+ .UNINDENT
783
+ .sp
784
+ Min
785
+ .INDENT 0.0
786
+ .INDENT 3.5
787
+ .sp
788
+ The minimum response time
789
+ .UNINDENT
790
+ .UNINDENT
791
+ .sp
792
+ Max
793
+ .INDENT 0.0
794
+ .INDENT 3.5
795
+ .sp
796
+ The maximum response time
797
+ .UNINDENT
798
+ .UNINDENT
799
+ .sp
800
+ Avg:
801
+ .INDENT 0.0
802
+ .INDENT 3.5
803
+ .sp
804
+ The average response time
805
+ .UNINDENT
806
+ .UNINDENT
807
+ .sp
808
+ Std_dev
809
+ .INDENT 0.0
810
+ .INDENT 3.5
811
+ .sp
812
+ Standard deviation of response time
813
+ .UNINDENT
814
+ .UNINDENT
815
+ .sp
816
+ Geo_dist
817
+ .INDENT 0.0
818
+ .INDENT 3.5
819
+ .sp
820
+ Geometric distribution based on natural exponential function
821
+ .UNINDENT
822
+ .UNINDENT
823
+ .sp
824
+ At the end, memaslap will output something like this:
825
+ .sp
826
+ .nf
827
+ .ft C
828
+ \-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-
829
+ Get Statistics (1257956 events)
830
+ Min: 26
831
+ Max: 3791
832
+ Avg: 224
833
+ Geo: 192.60
834
+ Std: 116.23
835
+ Log2 Dist:
836
+ 4: 0 10 84490 215345
837
+ 8: 484890 459823 12543 824
838
+ 12: 31
839
+
840
+ Set Statistics (139782 events)
841
+ Min: 37
842
+ Max: 3790
843
+ Avg: 253
844
+ Geo: 224.84
845
+ Std: 116.83
846
+ Log2 Dist:
847
+ 4: 0 0 4200 16988
848
+ 8: 50784 65574 2064 167
849
+ 12: 5
850
+
851
+ Total Statistics (1397738 events)
852
+ Min: 26
853
+ Max: 3791
854
+ Avg: 227
855
+ Geo: 195.60
856
+ Std: 116.60
857
+ Log2 Dist:
858
+ 4: 0 10 88690 232333
859
+ 8: 535674 525397 14607 991
860
+ 12: 36
861
+
862
+ cmd_get: 1257969
863
+ cmd_set: 139785
864
+ get_misses: 0
865
+ verify_misses: 0
866
+ verify_failed: 0
867
+ expired_get: 0
868
+ unexpired_unget: 0
869
+ written_bytes: 242516030
870
+ read_bytes: 1003702556
871
+ object_bytes: 152086080
872
+ packet_disorder: 0
873
+ packet_drop: 0
874
+ udp_timeout: 0
875
+
876
+ Run time: 20.0s Ops: 1397754 TPS: 69817 Net_rate: 59.4M/s
877
+ \-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-
878
+ .ft P
879
+ .fi
880
+ .SS Where
881
+ .sp
882
+ Get Statistics
883
+ .INDENT 0.0
884
+ .INDENT 3.5
885
+ .sp
886
+ Get statistics of response time
887
+ .UNINDENT
888
+ .UNINDENT
889
+ .sp
890
+ Set Statistics
891
+ .INDENT 0.0
892
+ .INDENT 3.5
893
+ .sp
894
+ Set statistics of response time
895
+ .UNINDENT
896
+ .UNINDENT
897
+ .sp
898
+ Total Statistics
899
+ .INDENT 0.0
900
+ .INDENT 3.5
901
+ .sp
902
+ Both get and set statistics of response time
903
+ .UNINDENT
904
+ .UNINDENT
905
+ .sp
906
+ Min
907
+ .INDENT 0.0
908
+ .INDENT 3.5
909
+ .sp
910
+ The accumulated and minimum response time
911
+ .UNINDENT
912
+ .UNINDENT
913
+ .sp
914
+ Max
915
+ .INDENT 0.0
916
+ .INDENT 3.5
917
+ .sp
918
+ The accumulated and maximum response time
919
+ .UNINDENT
920
+ .UNINDENT
921
+ .sp
922
+ Avg
923
+ .INDENT 0.0
924
+ .INDENT 3.5
925
+ .sp
926
+ The accumulated and average response time
927
+ .UNINDENT
928
+ .UNINDENT
929
+ .sp
930
+ Std
931
+ .INDENT 0.0
932
+ .INDENT 3.5
933
+ .sp
934
+ Standard deviation of response time
935
+ .UNINDENT
936
+ .UNINDENT
937
+ .sp
938
+ Log2 Dist
939
+ .INDENT 0.0
940
+ .INDENT 3.5
941
+ .sp
942
+ Geometric distribution based on logarithm 2
943
+ .UNINDENT
944
+ .UNINDENT
945
+ .sp
946
+ cmd_get
947
+ .INDENT 0.0
948
+ .INDENT 3.5
949
+ .sp
950
+ Total get commands done
951
+ .UNINDENT
952
+ .UNINDENT
953
+ .sp
954
+ cmd_set
955
+ .INDENT 0.0
956
+ .INDENT 3.5
957
+ .sp
958
+ Total set commands done
959
+ .UNINDENT
960
+ .UNINDENT
961
+ .sp
962
+ get_misses
963
+ .INDENT 0.0
964
+ .INDENT 3.5
965
+ .sp
966
+ How many objects can’t be gotten from server
967
+ .UNINDENT
968
+ .UNINDENT
969
+ .sp
970
+ verify_misses
971
+ .INDENT 0.0
972
+ .INDENT 3.5
973
+ .sp
974
+ How many objects need to verify but can’t get them
975
+ .UNINDENT
976
+ .UNINDENT
977
+ .sp
978
+ verify_failed
979
+ .INDENT 0.0
980
+ .INDENT 3.5
981
+ .sp
982
+ How many objects with insistent value
983
+ .UNINDENT
984
+ .UNINDENT
985
+ .sp
986
+ expired_get
987
+ .INDENT 0.0
988
+ .INDENT 3.5
989
+ .sp
990
+ How many objects are expired but we get them
991
+ .UNINDENT
992
+ .UNINDENT
993
+ .sp
994
+ unexpired_unget
995
+ .INDENT 0.0
996
+ .INDENT 3.5
997
+ .sp
998
+ How many objects are unexpired but we can’t get them
999
+ .UNINDENT
1000
+ .UNINDENT
1001
+ .sp
1002
+ written_bytes
1003
+ .INDENT 0.0
1004
+ .INDENT 3.5
1005
+ .sp
1006
+ Total written bytes
1007
+ .UNINDENT
1008
+ .UNINDENT
1009
+ .sp
1010
+ read_bytes
1011
+ .INDENT 0.0
1012
+ .INDENT 3.5
1013
+ .sp
1014
+ Total read bytes
1015
+ .UNINDENT
1016
+ .UNINDENT
1017
+ .sp
1018
+ object_bytes
1019
+ .INDENT 0.0
1020
+ .INDENT 3.5
1021
+ .sp
1022
+ Total object bytes
1023
+ .UNINDENT
1024
+ .UNINDENT
1025
+ .sp
1026
+ packet_disorder
1027
+ .INDENT 0.0
1028
+ .INDENT 3.5
1029
+ .sp
1030
+ How many UDP packages are disorder
1031
+ .UNINDENT
1032
+ .UNINDENT
1033
+ .sp
1034
+ packet_drop
1035
+ .INDENT 0.0
1036
+ .INDENT 3.5
1037
+ .sp
1038
+ How many UDP packages are lost
1039
+ .UNINDENT
1040
+ .UNINDENT
1041
+ .sp
1042
+ udp_timeout
1043
+ .INDENT 0.0
1044
+ .INDENT 3.5
1045
+ .sp
1046
+ How many times UDP time out happen
1047
+ .UNINDENT
1048
+ .UNINDENT
1049
+ .sp
1050
+ Run time
1051
+ .INDENT 0.0
1052
+ .INDENT 3.5
1053
+ .sp
1054
+ Total run time
1055
+ .UNINDENT
1056
+ .UNINDENT
1057
+ .sp
1058
+ Ops
1059
+ .INDENT 0.0
1060
+ .INDENT 3.5
1061
+ .sp
1062
+ Total operations
1063
+ .UNINDENT
1064
+ .UNINDENT
1065
+ .sp
1066
+ TPS
1067
+ .INDENT 0.0
1068
+ .INDENT 3.5
1069
+ .sp
1070
+ Throughput, operations/second
1071
+ .UNINDENT
1072
+ .UNINDENT
1073
+ .sp
1074
+ Net_rate
1075
+ .INDENT 0.0
1076
+ .INDENT 3.5
1077
+ .sp
1078
+ The average rate of network
1079
+ .UNINDENT
1080
+ .UNINDENT
1081
+ .SH OPTIONS
1082
+ .INDENT 0.0
1083
+ .TP
1084
+ .B \-s, \-\-servers=
1085
+ .
1086
+ List one or more servers to connect. Servers count must be less than
1087
+ threads count. e.g.: \-\-servers=localhost:1234,localhost:11211
1088
+ .TP
1089
+ .B \-T, \-\-threads=
1090
+ .
1091
+ Number of threads to startup, better equal to CPU numbers. Default 8.
1092
+ .TP
1093
+ .B \-c, \-\-concurrency=
1094
+ .
1095
+ Number of concurrency to simulate with load. Default 128.
1096
+ .TP
1097
+ .B \-n, \-\-conn_sock=
1098
+ .
1099
+ Number of TCP socks per concurrency. Default 1.
1100
+ .TP
1101
+ .B \-x, \-\-execute_number=
1102
+ .
1103
+ Number of operations(get and set) to execute for the
1104
+ given test. Default 1000000.
1105
+ .TP
1106
+ .B \-t, \-\-time=
1107
+ .
1108
+ How long the test to run, suffix: s\-seconds, m\-minutes, h\-hours,
1109
+ d\-days e.g.: \-\-time=2h.
1110
+ .TP
1111
+ .B \-F, \-\-cfg_cmd=
1112
+ .
1113
+ Load the configure file to get command,key and value distribution list.
1114
+ .TP
1115
+ .B \-w, \-\-win_size=
1116
+ .
1117
+ Task window size of each concurrency, suffix: K, M e.g.: \-\-win_size=10k.
1118
+ Default 10k.
1119
+ .TP
1120
+ .B \-X, \-\-fixed_size=
1121
+ .
1122
+ Fixed length of value.
1123
+ .TP
1124
+ .B \-v, \-\-verify=
1125
+ .
1126
+ The proportion of date verification, e.g.: \-\-verify=0.01
1127
+ .TP
1128
+ .B \-d, \-\-division=
1129
+ .
1130
+ Number of keys to multi\-get once. Default 1, means single get.
1131
+ .TP
1132
+ .B \-S, \-\-stat_freq=
1133
+ .
1134
+ Frequency of dumping statistic information. suffix: s\-seconds,
1135
+ m\-minutes, e.g.: \-\-resp_freq=10s.
1136
+ .TP
1137
+ .B \-e, \-\-exp_verify=
1138
+ .
1139
+ The proportion of objects with expire time, e.g.: \-\-exp_verify=0.01.
1140
+ Default no object with expire time
1141
+ .TP
1142
+ .B \-o, \-\-overwrite=
1143
+ .
1144
+ The proportion of objects need overwrite, e.g.: \-\-overwrite=0.01.
1145
+ Default never overwrite object.
1146
+ .UNINDENT
1147
+ .INDENT 0.0
1148
+ .TP
1149
+ .B \-R, \-\-reconnect
1150
+ .
1151
+ Reconnect tests, when connection is closed it will be reconnected.
1152
+ .TP
1153
+ .B \-U, \-\-udp
1154
+ .
1155
+ UDP tests, default memaslap uses TCP, TCP port and UDP port of
1156
+ server must be same.
1157
+ .TP
1158
+ .B \-a, \-\-facebook
1159
+ .
1160
+ Whether it enables facebook test feature, set with TCP and multi\-get with UDP.
1161
+ .TP
1162
+ .B \-B, \-\-binary
1163
+ .
1164
+ Whether it enables binary protocol. Default with ASCII protocol.
1165
+ .UNINDENT
1166
+ .INDENT 0.0
1167
+ .TP
1168
+ .B \-P, \-\-tps=
1169
+ .
1170
+ Expected throughput, suffix: K, e.g.: \-\-tps=10k.
1171
+ .TP
1172
+ .B \-p, \-\-rep_write=
1173
+ .
1174
+ The first nth servers can write data, e.g.: \-\-rep_write=2.
1175
+ .UNINDENT
1176
+ .INDENT 0.0
1177
+ .TP
1178
+ .B \-b, \-\-verbose
1179
+ .
1180
+ Whether it outputs detailed information when verification fails.
1181
+ .TP
1182
+ .B \-h, \-\-help
1183
+ .
1184
+ Display this message and then exit.
1185
+ .TP
1186
+ .B \-V, \-\-version
1187
+ .
1188
+ Display the version of the application and then exit.
1189
+ .UNINDENT
1190
+ .SH EXAMPLES
1191
+ .sp
1192
+ memaslap \-s 127.0.0.1:11211 \-S 5s
1193
+ .sp
1194
+ memaslap \-s 127.0.0.1:11211 \-t 2m \-v 0.2 \-e 0.05 \-b
1195
+ .sp
1196
+ memaslap \-s 127.0.0.1:11211 \-F config \-t 2m \-w 40k \-S 20s \-o 0.2
1197
+ .sp
1198
+ memaslap \-s 127.0.0.1:11211 \-F config \-t 2m \-T 4 \-c 128 \-d 20 \-P 40k
1199
+ .sp
1200
+ memaslap \-s 127.0.0.1:11211 \-F config \-t 2m \-d 50 \-a \-n 40
1201
+ .sp
1202
+ memaslap \-s 127.0.0.1:11211,127.0.0.1:11212 \-F config \-t 2m
1203
+ .sp
1204
+ memaslap \-s 127.0.0.1:11211,127.0.0.1:11212 \-F config \-t 2m \-p 2
1205
+ .SH HOME
1206
+ .sp
1207
+ To find out more information please check:
1208
+ \fI\%http://libmemcached.org/\fP
1209
+ .SH AUTHORS
1210
+ .sp
1211
+ Mingqiang Zhuang <\fI\%mingqiangzhuang@hengtiansoft.com\fP> (Schooner Technolgy)
1212
+ Brian Aker, <\fI\%brian@tangent.org\fP>
1213
+ .SH SEE ALSO
1214
+ .sp
1215
+ \fImemcached(1)\fP \fIlibmemcached(3)\fP
1216
+ .SH AUTHOR
1217
+ Brian Aker
1218
+ .SH COPYRIGHT
1219
+ 2011, Brian Aker DataDifferential, http://datadifferential.com/
1220
+ .\" Generated by docutils manpage writer.
1221
+ .\"
1222
+ .