From: Brian Aker Date: Thu, 7 Apr 2011 22:01:42 +0000 (-0700) Subject: Merge in removal of memaslap docs X-Git-Tag: 0.51~17^2~7 X-Git-Url: https://git.m6w6.name/?a=commitdiff_plain;h=c772b2baff0fde1eec5e541521ce9c3a1daddedb;hp=4cecee6a68d9fb0d2ae0f24c0b16fbe17c3e9b06;p=awesomized%2Flibmemcached Merge in removal of memaslap docs --- diff --git a/.bzrignore b/.bzrignore index 5014439a..ff0c0bb2 100644 --- a/.bzrignore +++ b/.bzrignore @@ -50,109 +50,7 @@ docs/*.[13] docs/*.html docs/doctest/ docs/doctrees/ -docs/hashkit_clone.rst -docs/hashkit_crc32.rst -docs/hashkit_fnv1_32.rst -docs/hashkit_fnv1_64.rst -docs/hashkit_fnv1a_32.rst -docs/hashkit_fnv1a_64.rst -docs/hashkit_free.rst -docs/hashkit_hsieh.rst -docs/hashkit_is_allocated.rst -docs/hashkit_jenkins.rst -docs/hashkit_md5.rst -docs/hashkit_murmur.rst -docs/html/ -docs/linkcheck -docs/man/ -docs/memcached_add.rst -docs/memcached_add_by_key.rst -docs/memcached_append.rst -docs/memcached_append_by_key.rst -docs/memcached_behavior_get.rst -docs/memcached_behavior_set.rst -docs/memcached_callback_get.rst -docs/memcached_callback_set.rst -docs/memcached_cas.rst -docs/memcached_cas_by_key.rst -docs/memcached_clone.rst -docs/memcached_decrement.rst -docs/memcached_decrement_with_initial.rst -docs/memcached_delete_by_key.rst -docs/memcached_destroy_sasl_auth_data.rst -docs/memcached_fetch.rst -docs/memcached_fetch_execute.rst -docs/memcached_fetch_result.rst -docs/memcached_free.rst -docs/memcached_get_by_key.rst -docs/memcached_get_memory_allocators.rst -docs/memcached_get_sasl_callbacks.rst -docs/memcached_get_user_data.rst -docs/memcached_increment.rst -docs/memcached_increment_with_initial.rst -docs/memcached_lib_version.rst -docs/memcached_mget.rst -docs/memcached_mget_by_key.rst -docs/memcached_mget_execute.rst -docs/memcached_mget_execute_by_key.rst -docs/memcached_pool_behavior_get.rst -docs/memcached_pool_behavior_set.rst -docs/memcached_pool_create.rst -docs/memcached_pool_destroy.rst -docs/memcached_pool_push.rst -docs/memcached_pool_rst.rst -docs/memcached_prepend.rst -docs/memcached_prepend_by_key.rst -docs/memcached_replace.rst -docs/memcached_replace_by_key.rst -docs/memcached_result_cas.rst -docs/memcached_result_create.rst -docs/memcached_result_flags.rst -docs/memcached_result_free.rst -docs/memcached_result_key_length.rst -docs/memcached_result_key_value.rst -docs/memcached_result_length.rst -docs/memcached_result_value.rst -docs/memcached_sasl_set_auth_data.rst -docs/memcached_server_add.rst -docs/memcached_server_add_unix_socket.rst -docs/memcached_server_count.rst -docs/memcached_server_cursor.rst -docs/memcached_server_list.rst -docs/memcached_server_list_append.rst -docs/memcached_server_list_count.rst -docs/memcached_server_list_free.rst -docs/memcached_server_push.rst -docs/memcached_servers_parse.rst -docs/memcached_servers_reset.rst -docs/memcached_set_by_key.rst -docs/memcached_set_memory_allocators.rst -docs/memcached_set_memory_allocators_context.rst -docs/memcached_set_sasl_callbacks.rst -docs/memcached_set_user_data.rst -docs/memcached_stat.rst -docs/memcached_stat_execute.rst -docs/memcached_stat_get_keys.rst -docs/memcached_stat_get_value.rst -docs/memcached_stat_servername.rst -docs/pod2htmd.tmp -docs/pod2htmi.tmp example/memcached_light -hashkit_clone.pop -hashkit_crc32.pop -hashkit_create.pop -hashkit_fnv1_32.pop -hashkit_fnv1_64.pop -hashkit_fnv1a_32.pop -hashkit_fnv1a_64.pop -hashkit_free.pop -hashkit_functions.pop -hashkit_hsieh.pop -hashkit_is_allocated.pop -hashkit_jenkins.pop -hashkit_md5.pop -hashkit_murmur.pop -hashkit_value.pop libhashkit/configure.h libmemcached-*.tar.gz libmemcached-0.30-1.src.rpm @@ -162,106 +60,20 @@ libmemcached-0.31-1.x86_64.rpm libmemcached-0.37-1.src.rpm libmemcached-0.37-1.x86_64.rpm libmemcached-?.??/ -libmemcached.pop libmemcached/configure.h libmemcached/dtrace_probes.h libmemcached/generated_probes.h libmemcached/memcached_configure.h -libmemcached_examples.pop -libmemcachedutil.pop libtool libtool.m4 ltoptions.m4 ltsugar.m4 ltversion.m4 lt~obsolete.m4 -memcached_add.pop -memcached_add_by_key.pop -memcached_analyze.pop -memcached_append.pop -memcached_append_by_key.pop -memcached_behavior_get.pop -memcached_behavior_set.pop -memcached_callback_get.pop -memcached_callback_set.pop -memcached_cas.pop -memcached_cas_by_key.pop -memcached_clone.pop -memcached_create.pop -memcached_decrement.pop -memcached_decrement_with_initial.pop -memcached_delete.pop -memcached_delete_by_key.pop -memcached_dump.pop -memcached_fetch.pop -memcached_fetch_execute.pop -memcached_fetch_result.pop -memcached_flush.pop -memcached_flush_buffers.pop -memcached_free.pop -memcached_generate_hash_value.pop -memcached_get.pop -memcached_get_by_key.pop -memcached_get_memory_allocators.pop -memcached_get_user_data.pop -memcached_increment.pop -memcached_increment_with_initial.pop -memcached_lib_version.pop -memcached_mget.pop -memcached_mget_by_key.pop -memcached_mget_execute.pop -memcached_mget_execute_by_key.pop -memcached_pool_behavior_get.pop -memcached_pool_behavior_set.pop -memcached_pool_create.pop -memcached_pool_destroy.pop -memcached_pool_pop.pop -memcached_pool_push.pop -memcached_prepend.pop -memcached_prepend_by_key.pop -memcached_quit.pop -memcached_replace.pop -memcached_replace_by_key.pop -memcached_result_cas.pop -memcached_result_create.pop -memcached_result_flags.pop -memcached_result_free.pop -memcached_result_key_length.pop -memcached_result_key_value.pop -memcached_result_length.pop -memcached_result_st.pop -memcached_result_value.pop -memcached_server_add.pop -memcached_server_add_unix_socket.pop -memcached_server_count.pop -memcached_server_list.pop -memcached_server_list_append.pop -memcached_server_list_count.pop -memcached_server_list_free.pop -memcached_server_push.pop -memcached_servers_parse.pop -memcached_set.pop -memcached_set_by_key.pop -memcached_set_memory_allocators.pop -memcached_set_user_data.pop -memcached_stat.pop -memcached_stat_get_keys.pop -memcached_stat_get_value.pop -memcached_stat_servername.pop -memcached_strerror.pop -memcached_verbosity.pop -memcached_version.pop -memcapable.pop -memcat.pop -memcp.pop -memdump.pop -memerror.pop -memflush.pop -memrm.pop -memslap.pop -memstat.pop -out patch +docs/html/ +docs/linkcheck/ +docs/man/ patch2 stamp-h1 support/Makefile @@ -281,3 +93,4 @@ tests/testplus tests/testudp tests/var/ unittests/unittests +.deps diff --git a/docs/conf.py b/docs/conf.py index 0b49f517..c13fee63 100644 --- a/docs/conf.py +++ b/docs/conf.py @@ -211,117 +211,117 @@ latex_documents = [ # One entry per manual page. List of tuples # (source start file, name, description, authors, manual section). man_pages = [ - ('hashkit_clone', 'hashkit_clone', u'libhashkit Documentation', [u'Brian Aker'], 3), - ('hashkit_crc32', 'hashkit_crc32', u'libhashkit Documentation', [u'Brian Aker'], 3), + ('hashkit_create', 'hashkit_clone', u'libhashkit Documentation', [u'Brian Aker'], 3), ('hashkit_create', 'hashkit_create', u'libhashkit Documentation', [u'Brian Aker'], 3), - ('hashkit_fnv1_32', 'hashkit_fnv1_32', u'libhashkit Documentation', [u'Brian Aker'], 3), - ('hashkit_fnv1_64', 'hashkit_fnv1_64', u'libhashkit Documentation', [u'Brian Aker'], 3), - ('hashkit_fnv1a_32', 'hashkit_fnv1a_32', u'libhashkit Documentation', [u'Brian Aker'], 3), - ('hashkit_fnv1a_64', 'hashkit_fnv1a_64', u'libhashkit Documentation', [u'Brian Aker'], 3), - ('hashkit_free', 'hashkit_free', u'libhashkit Documentation', [u'Brian Aker'], 3), + ('hashkit_create', 'hashkit_free', u'libhashkit Documentation', [u'Brian Aker'], 3), + ('hashkit_create', 'hashkit_is_allocated', u'libhashkit Documentation', [u'Brian Aker'], 3), + ('hashkit_functions', 'hashkit_crc32', u'libhashkit Documentation', [u'Brian Aker'], 3), + ('hashkit_functions', 'hashkit_fnv1_32', u'libhashkit Documentation', [u'Brian Aker'], 3), + ('hashkit_functions', 'hashkit_fnv1_64', u'libhashkit Documentation', [u'Brian Aker'], 3), + ('hashkit_functions', 'hashkit_fnv1a_32', u'libhashkit Documentation', [u'Brian Aker'], 3), + ('hashkit_functions', 'hashkit_fnv1a_64', u'libhashkit Documentation', [u'Brian Aker'], 3), ('hashkit_functions', 'hashkit_functions', u'libhashkit Documentation', [u'Brian Aker'], 3), + ('hashkit_functions', 'hashkit_jenkins', u'libhashkit Documentation', [u'Brian Aker'], 3), + ('hashkit_functions', 'hashkit_md5', u'libhashkit Documentation', [u'Brian Aker'], 3), + ('hashkit_functions', 'hashkit_murmur', u'libhashkit Documentation', [u'Brian Aker'], 3), ('hashkit_hsieh', 'hashkit_hsieh', u'libhashkit Documentation', [u'Brian Aker'], 3), - ('hashkit_is_allocated', 'hashkit_is_allocated', u'libhashkit Documentation', [u'Brian Aker'], 3), - ('hashkit_jenkins', 'hashkit_jenkins', u'libhashkit Documentation', [u'Brian Aker'], 3), - ('hashkit_md5', 'hashkit_md5', u'libhashkit Documentation', [u'Brian Aker'], 3), - ('hashkit_murmur', 'hashkit_murmur', u'libhashkit Documentation', [u'Brian Aker'], 3), ('hashkit_value', 'hashkit_value', u'libhashkit Documentation', [u'Brian Aker'], 3), ('libmemcached', 'libmemcached', u'libmemcached Documentation', [u'Brian Aker'], 3), ('libmemcached_examples', 'libmemcached_examples', u'libmemcached Documentation', [u'Brian Aker'], 3), ('libmemcachedutil', 'libmemcachedutil', u'libmemcached Documentation', [u'Brian Aker'], 3), - ('memcached_add', 'memcached_add', u'libmemcached Documentation', [u'Brian Aker'], 3), - ('memcached_add_by_key', 'memcached_add_by_key', u'libmemcached Documentation', [u'Brian Aker'], 3), ('memcached_analyze', 'memcached_analyze', u'libmemcached Documentation', [u'Brian Aker'], 3), - ('memcached_append', 'memcached_append', u'libmemcached Documentation', [u'Brian Aker'], 3), - ('memcached_append_by_key', 'memcached_append_by_key', u'libmemcached Documentation', [u'Brian Aker'], 3), ('memcached_auto', 'memcached_auto', u'libmemcached Documentation', [u'Brian Aker'], 3), + ('memcached_auto', 'memcached_decrement', u'libmemcached Documentation', [u'Brian Aker'], 3), + ('memcached_auto', 'memcached_decrement_with_initial', u'libmemcached Documentation', [u'Brian Aker'], 3), + ('memcached_auto', 'memcached_increment', u'libmemcached Documentation', [u'Brian Aker'], 3), + ('memcached_auto', 'memcached_increment_with_initial', u'libmemcached Documentation', [u'Brian Aker'], 3), ('memcached_behavior', 'memcached_behavior', u'libmemcached Documentation', [u'Brian Aker'], 3), - ('memcached_behavior_get', 'memcached_behavior_get', u'libmemcached Documentation', [u'Brian Aker'], 3), - ('memcached_behavior_set', 'memcached_behavior_set', u'libmemcached Documentation', [u'Brian Aker'], 3), + ('memcached_behavior', 'memcached_behavior_get', u'libmemcached Documentation', [u'Brian Aker'], 3), + ('memcached_behavior', 'memcached_behavior_set', u'libmemcached Documentation', [u'Brian Aker'], 3), ('memcached_callback', 'memcached_callback', u'libmemcached Documentation', [u'Brian Aker'], 3), - ('memcached_callback_get', 'memcached_callback_get', u'libmemcached Documentation', [u'Brian Aker'], 3), - ('memcached_callback_set', 'memcached_callback_set', u'libmemcached Documentation', [u'Brian Aker'], 3), - ('memcached_cas', 'memcached_cas', u'libmemcached Documentation', [u'Brian Aker'], 3), - ('memcached_cas_by_key', 'memcached_cas_by_key', u'libmemcached Documentation', [u'Brian Aker'], 3), - ('memcached_clone', 'memcached_clone', u'libmemcached Documentation', [u'Brian Aker'], 3), + ('memcached_callback', 'memcached_callback_get', u'libmemcached Documentation', [u'Brian Aker'], 3), + ('memcached_callback', 'memcached_callback_set', u'libmemcached Documentation', [u'Brian Aker'], 3), + ('memcached_create', 'memcached_clone', u'libmemcached Documentation', [u'Brian Aker'], 3), ('memcached_create', 'memcached_create', u'libmemcached Documentation', [u'Brian Aker'], 3), - ('memcached_decrement', 'memcached_decrement', u'libmemcached Documentation', [u'Brian Aker'], 3), - ('memcached_decrement_with_initial', 'memcached_decrement_with_initial', u'libmemcached Documentation', [u'Brian Aker'], 3), + ('memcached_create', 'memcached_free', u'libmemcached Documentation', [u'Brian Aker'], 3), + ('memcached_create', 'memcached_servers_reset', u'libmemcached Documentation', [u'Brian Aker'], 3), ('memcached_delete', 'memcached_delete', u'libmemcached Documentation', [u'Brian Aker'], 3), - ('memcached_delete_by_key', 'memcached_delete_by_key', u'libmemcached Documentation', [u'Brian Aker'], 3), - ('memcached_destroy_sasl_auth_data', 'memcached_destroy_sasl_auth_data', u'libmemcached Documentation', [u'Brian Aker'], 3), + ('memcached_delete', 'memcached_delete_by_key', u'libmemcached Documentation', [u'Brian Aker'], 3), ('memcached_dump', 'memcached_dump', u'libmemcached Documentation', [u'Brian Aker'], 3), - ('memcached_fetch', 'memcached_fetch', u'libmemcached Documentation', [u'Brian Aker'], 3), - ('memcached_fetch_execute', 'memcached_fetch_execute', u'libmemcached Documentation', [u'Brian Aker'], 3), - ('memcached_fetch_result', 'memcached_fetch_result', u'libmemcached Documentation', [u'Brian Aker'], 3), ('memcached_flush', 'memcached_flush', u'libmemcached Documentation', [u'Brian Aker'], 3), ('memcached_flush_buffers', 'memcached_flush_buffers', u'libmemcached Documentation', [u'Brian Aker'], 3), - ('memcached_free', 'memcached_free', u'libmemcached Documentation', [u'Brian Aker'], 3), ('memcached_generate_hash_value', 'memcached_generate_hash_value', u'libmemcached Documentation', [u'Brian Aker'], 3), + ('memcached_get', 'memcached_fetch', u'libmemcached Documentation', [u'Brian Aker'], 3), + ('memcached_get', 'memcached_fetch_execute', u'libmemcached Documentation', [u'Brian Aker'], 3), + ('memcached_get', 'memcached_fetch_result', u'libmemcached Documentation', [u'Brian Aker'], 3), ('memcached_get', 'memcached_get', u'libmemcached Documentation', [u'Brian Aker'], 3), - ('memcached_get_by_key', 'memcached_get_by_key', u'libmemcached Documentation', [u'Brian Aker'], 3), - ('memcached_get_memory_allocators', 'memcached_get_memory_allocators', u'libmemcached Documentation', [u'Brian Aker'], 3), - ('memcached_get_sasl_callbacks', 'memcached_get_sasl_callbacks', u'libmemcached Documentation', [u'Brian Aker'], 3), - ('memcached_get_user_data', 'memcached_get_user_data', u'libmemcached Documentation', [u'Brian Aker'], 3), - ('memcached_increment', 'memcached_increment', u'libmemcached Documentation', [u'Brian Aker'], 3), - ('memcached_increment_with_initial', 'memcached_increment_with_initial', u'libmemcached Documentation', [u'Brian Aker'], 3), - ('memcached_lib_version', 'memcached_lib_version', u'libmemcached Documentation', [u'Brian Aker'], 3), + ('memcached_get', 'memcached_get_by_key', u'libmemcached Documentation', [u'Brian Aker'], 3), + ('memcached_get', 'memcached_mget', u'libmemcached Documentation', [u'Brian Aker'], 3), + ('memcached_get', 'memcached_mget_by_key', u'libmemcached Documentation', [u'Brian Aker'], 3), + ('memcached_get', 'memcached_mget_execute', u'libmemcached Documentation', [u'Brian Aker'], 3), + ('memcached_get', 'memcached_mget_execute_by_key', u'libmemcached Documentation', [u'Brian Aker'], 3), + ('memcached_memory_allocators', 'memcached_get_memory_allocators', u'libmemcached Documentation', [u'Brian Aker'], 3), ('memcached_memory_allocators', 'memcached_memory_allocators', u'libmemcached Documentation', [u'Brian Aker'], 3), - ('memcached_mget', 'memcached_mget', u'libmemcached Documentation', [u'Brian Aker'], 3), - ('memcached_mget_by_key', 'memcached_mget_by_key', u'libmemcached Documentation', [u'Brian Aker'], 3), - ('memcached_mget_execute', 'memcached_mget_execute', u'libmemcached Documentation', [u'Brian Aker'], 3), - ('memcached_mget_execute_by_key', 'memcached_mget_execute_by_key', u'libmemcached Documentation', [u'Brian Aker'], 3), + ('memcached_memory_allocators', 'memcached_set_memory_allocators', u'libmemcached Documentation', [u'Brian Aker'], 3), + ('memcached_memory_allocators', 'memcached_set_memory_allocators_context', u'libmemcached Documentation', [u'Brian Aker'], 3), ('memcached_pool', 'memcached_pool', u'libmemcached Documentation', [u'Brian Aker'], 3), - ('memcached_pool_behavior_get', 'memcached_pool_behavior_get', u'libmemcached Documentation', [u'Brian Aker'], 3), - ('memcached_pool_behavior_set', 'memcached_pool_behavior_set', u'libmemcached Documentation', [u'Brian Aker'], 3), - ('memcached_pool_create', 'memcached_pool_create', u'libmemcached Documentation', [u'Brian Aker'], 3), - ('memcached_pool_destroy', 'memcached_pool_destroy', u'libmemcached Documentation', [u'Brian Aker'], 3), - ('memcached_pool_push', 'memcached_pool_push', u'libmemcached Documentation', [u'Brian Aker'], 3), - ('memcached_pool_rst', 'memcached_pool_rst', u'libmemcached Documentation', [u'Brian Aker'], 3), - ('memcached_prepend', 'memcached_prepend', u'libmemcached Documentation', [u'Brian Aker'], 3), - ('memcached_prepend_by_key', 'memcached_prepend_by_key', u'libmemcached Documentation', [u'Brian Aker'], 3), + ('memcached_pool', 'memcached_pool_behavior_get', u'libmemcached Documentation', [u'Brian Aker'], 3), + ('memcached_pool', 'memcached_pool_behavior_set', u'libmemcached Documentation', [u'Brian Aker'], 3), + ('memcached_pool', 'memcached_pool_create', u'libmemcached Documentation', [u'Brian Aker'], 3), + ('memcached_pool', 'memcached_pool_destroy', u'libmemcached Documentation', [u'Brian Aker'], 3), + ('memcached_pool', 'memcached_pool_push', u'libmemcached Documentation', [u'Brian Aker'], 3), + ('memcached_pool', 'memcached_pool_rst', u'libmemcached Documentation', [u'Brian Aker'], 3), ('memcached_quit', 'memcached_quit', u'libmemcached Documentation', [u'Brian Aker'], 3), - ('memcached_replace', 'memcached_replace', u'libmemcached Documentation', [u'Brian Aker'], 3), - ('memcached_replace_by_key', 'memcached_replace_by_key', u'libmemcached Documentation', [u'Brian Aker'], 3), - ('memcached_result_cas', 'memcached_result_cas', u'libmemcached Documentation', [u'Brian Aker'], 3), - ('memcached_result_create', 'memcached_result_create', u'libmemcached Documentation', [u'Brian Aker'], 3), - ('memcached_result_flags', 'memcached_result_flags', u'libmemcached Documentation', [u'Brian Aker'], 3), - ('memcached_result_free', 'memcached_result_free', u'libmemcached Documentation', [u'Brian Aker'], 3), - ('memcached_result_key_length', 'memcached_result_key_length', u'libmemcached Documentation', [u'Brian Aker'], 3), - ('memcached_result_key_value', 'memcached_result_key_value', u'libmemcached Documentation', [u'Brian Aker'], 3), - ('memcached_result_length', 'memcached_result_length', u'libmemcached Documentation', [u'Brian Aker'], 3), + ('memcached_result_st', 'memcached_result_cas', u'libmemcached Documentation', [u'Brian Aker'], 3), + ('memcached_result_st', 'memcached_result_create', u'libmemcached Documentation', [u'Brian Aker'], 3), + ('memcached_result_st', 'memcached_result_flags', u'libmemcached Documentation', [u'Brian Aker'], 3), + ('memcached_result_st', 'memcached_result_free', u'libmemcached Documentation', [u'Brian Aker'], 3), + ('memcached_result_st', 'memcached_result_key_length', u'libmemcached Documentation', [u'Brian Aker'], 3), + ('memcached_result_st', 'memcached_result_key_value', u'libmemcached Documentation', [u'Brian Aker'], 3), + ('memcached_result_st', 'memcached_result_length', u'libmemcached Documentation', [u'Brian Aker'], 3), ('memcached_result_st', 'memcached_result_st', u'libmemcached Documentation', [u'Brian Aker'], 3), - ('memcached_result_value', 'memcached_result_value', u'libmemcached Documentation', [u'Brian Aker'], 3), + ('memcached_result_st', 'memcached_result_value', u'libmemcached Documentation', [u'Brian Aker'], 3), + ('memcached_sasl', 'memcached_destroy_sasl_auth_data', u'libmemcached Documentation', [u'Brian Aker'], 3), + ('memcached_sasl', 'memcached_get_sasl_callbacks', u'libmemcached Documentation', [u'Brian Aker'], 3), ('memcached_sasl', 'memcached_sasl', u'libmemcached Documentation', [u'Brian Aker'], 3), - ('memcached_sasl_set_auth_data', 'memcached_sasl_set_auth_data', u'libmemcached Documentation', [u'Brian Aker'], 3), - ('memcached_server_add', 'memcached_server_add', u'libmemcached Documentation', [u'Brian Aker'], 3), - ('memcached_server_add_unix_socket', 'memcached_server_add_unix_socket', u'libmemcached Documentation', [u'Brian Aker'], 3), - ('memcached_server_count', 'memcached_server_count', u'libmemcached Documentation', [u'Brian Aker'], 3), - ('memcached_server_cursor', 'memcached_server_cursor', u'libmemcached Documentation', [u'Brian Aker'], 3), - ('memcached_server_list', 'memcached_server_list', u'libmemcached Documentation', [u'Brian Aker'], 3), - ('memcached_server_list_append', 'memcached_server_list_append', u'libmemcached Documentation', [u'Brian Aker'], 3), - ('memcached_server_list_count', 'memcached_server_list_count', u'libmemcached Documentation', [u'Brian Aker'], 3), - ('memcached_server_list_free', 'memcached_server_list_free', u'libmemcached Documentation', [u'Brian Aker'], 3), - ('memcached_server_push', 'memcached_server_push', u'libmemcached Documentation', [u'Brian Aker'], 3), - ('memcached_server_st', 'memcached_server_st', u'libmemcached Documentation', [u'Brian Aker'], 3), + ('memcached_sasl', 'memcached_set_sasl_callbacks', u'libmemcached Documentation', [u'Brian Aker'], 3), + ('memcached_sasl', 'memcached_sasl_set_auth_data', u'libmemcached Documentation', [u'Brian Aker'], 3), + ('memcached_server_st', 'memcached_server_list_append', u'libmemcached Documentation', [u'Brian Aker'], 3), + ('memcached_server_st', 'memcached_server_list_count', u'libmemcached Documentation', [u'Brian Aker'], 3), + ('memcached_server_st', 'memcached_server_list_free', u'libmemcached Documentation', [u'Brian Aker'], 3), + ('memcached_server_st', 'memcached_servers_parse', u'libmemcached Documentation', [u'Brian Aker'], 3), + ('memcached_servers', 'memcached_server_add', u'libmemcached Documentation', [u'Brian Aker'], 3), + ('memcached_servers', 'memcached_server_add_unix_socket', u'libmemcached Documentation', [u'Brian Aker'], 3), + ('memcached_servers', 'memcached_server_count', u'libmemcached Documentation', [u'Brian Aker'], 3), + ('memcached_servers', 'memcached_server_cursor', u'libmemcached Documentation', [u'Brian Aker'], 3), + ('memcached_servers', 'memcached_server_list', u'libmemcached Documentation', [u'Brian Aker'], 3), + ('memcached_servers', 'memcached_server_push', u'libmemcached Documentation', [u'Brian Aker'], 3), + ('memcached_servers', 'memcached_server_st', u'libmemcached Documentation', [u'Brian Aker'], 3), ('memcached_servers', 'memcached_servers', u'libmemcached Documentation', [u'Brian Aker'], 3), - ('memcached_servers_parse', 'memcached_servers_parse', u'libmemcached Documentation', [u'Brian Aker'], 3), - ('memcached_servers_reset', 'memcached_servers_reset', u'libmemcached Documentation', [u'Brian Aker'], 3), + ('memcached_set', 'memcached_add', u'libmemcached Documentation', [u'Brian Aker'], 3), + ('memcached_set', 'memcached_add_by_key', u'libmemcached Documentation', [u'Brian Aker'], 3), + ('memcached_set', 'memcached_append', u'libmemcached Documentation', [u'Brian Aker'], 3), + ('memcached_set', 'memcached_append_by_key', u'libmemcached Documentation', [u'Brian Aker'], 3), + ('memcached_set', 'memcached_cas', u'libmemcached Documentation', [u'Brian Aker'], 3), + ('memcached_set', 'memcached_cas_by_key', u'libmemcached Documentation', [u'Brian Aker'], 3), + ('memcached_set', 'memcached_prepend', u'libmemcached Documentation', [u'Brian Aker'], 3), + ('memcached_set', 'memcached_prepend_by_key', u'libmemcached Documentation', [u'Brian Aker'], 3), + ('memcached_set', 'memcached_replace', u'libmemcached Documentation', [u'Brian Aker'], 3), + ('memcached_set', 'memcached_replace_by_key', u'libmemcached Documentation', [u'Brian Aker'], 3), ('memcached_set', 'memcached_set', u'libmemcached Documentation', [u'Brian Aker'], 3), - ('memcached_set_by_key', 'memcached_set_by_key', u'libmemcached Documentation', [u'Brian Aker'], 3), - ('memcached_set_memory_allocators', 'memcached_set_memory_allocators', u'libmemcached Documentation', [u'Brian Aker'], 3), - ('memcached_set_memory_allocators_context', 'memcached_set_memory_allocators_context', u'libmemcached Documentation', [u'Brian Aker'], 3), - ('memcached_set_sasl_callbacks', 'memcached_set_sasl_callbacks', u'libmemcached Documentation', [u'Brian Aker'], 3), - ('memcached_set_user_data', 'memcached_set_user_data', u'libmemcached Documentation', [u'Brian Aker'], 3), - ('memcached_stat', 'memcached_stat', u'libmemcached Documentation', [u'Brian Aker'], 3), - ('memcached_stat_execute', 'memcached_stat_execute', u'libmemcached Documentation', [u'Brian Aker'], 3), - ('memcached_stat_get_keys', 'memcached_stat_get_keys', u'libmemcached Documentation', [u'Brian Aker'], 3), - ('memcached_stat_get_value', 'memcached_stat_get_value', u'libmemcached Documentation', [u'Brian Aker'], 3), - ('memcached_stat_servername', 'memcached_stat_servername', u'libmemcached Documentation', [u'Brian Aker'], 3), + ('memcached_set', 'memcached_set_by_key', u'libmemcached Documentation', [u'Brian Aker'], 3), + ('memcached_stats', 'memcached_stat', u'libmemcached Documentation', [u'Brian Aker'], 3), + ('memcached_stats', 'memcached_stat_execute', u'libmemcached Documentation', [u'Brian Aker'], 3), + ('memcached_stats', 'memcached_stat_get_keys', u'libmemcached Documentation', [u'Brian Aker'], 3), + ('memcached_stats', 'memcached_stat_get_value', u'libmemcached Documentation', [u'Brian Aker'], 3), + ('memcached_stats', 'memcached_stat_servername', u'libmemcached Documentation', [u'Brian Aker'], 3), ('memcached_stats', 'memcached_stats', u'libmemcached Documentation', [u'Brian Aker'], 3), ('memcached_strerror', 'memcached_strerror', u'libmemcached Documentation', [u'Brian Aker'], 3), + ('memcached_user_data', 'memcached_get_user_data', u'libmemcached Documentation', [u'Brian Aker'], 3), + ('memcached_user_data', 'memcached_set_user_data', u'libmemcached Documentation', [u'Brian Aker'], 3), ('memcached_user_data', 'memcached_user_data', u'libmemcached Documentation', [u'Brian Aker'], 3), ('memcached_verbosity', 'memcached_verbosity', u'libmemcached Documentation', [u'Brian Aker'], 3), + ('memcached_version', 'memcached_lib_version', u'libmemcached Documentation', [u'Brian Aker'], 3), ('memcached_version', 'memcached_version', u'libmemcached Documentation', [u'Brian Aker'], 3), ('memcapable', 'memcapable', u'libmemcached Documentation', [u'Brian Aker'], 1), ('memcat', 'memcat', u'libmemcached Documentation', [u'Brian Aker'], 1), diff --git a/docs/include.am b/docs/include.am index dad7b57f..fc3cd5c5 100644 --- a/docs/include.am +++ b/docs/include.am @@ -10,7 +10,6 @@ EXTRA_DIST+= \ docs/libmemcached.rst \ docs/libmemcached_examples.rst \ docs/libmemcachedutil.rst \ - docs/memaslap.rst \ docs/memcached_analyze.rst \ docs/memcached_dump.rst \ docs/memcached_flush.rst \ @@ -29,152 +28,6 @@ EXTRA_DIST+= \ docs/memslap.rst \ docs/memstat.rst -AUTO_PAGES= \ - memcached_increment.rst \ - memcached_increment_with_initial.rst \ - memcached_decrement.rst \ - memcached_decrement_with_initial.rst -BUILT_SOURCES += ${AUTO_PAGES} - -BEHAVIOR_PAGES= \ - memcached_behavior_get.rst \ - memcached_behavior_set.rst -BUILT_SOURCES += ${BEHAVIOR_PAGES} - -CALLBACK_PAGES= \ - memcached_callback_get.rst \ - memcached_callback_set.rst -BUILT_SOURCES += ${CALLBACK_PAGES} - -CREATE_PAGES= \ - memcached_clone.rst \ - memcached_free.rst \ - memcached_servers_reset.rst -BUILT_SOURCES += ${CREATE_PAGES} - -DELETE_PAGES= \ - memcached_delete_by_key.rst -BUILT_SOURCES += ${DELETE_PAGES} - -GET_PAGES= \ - memcached_get_by_key.rst \ - memcached_fetch_result.rst \ - memcached_fetch_execute.rst \ - memcached_mget.rst \ - memcached_mget_by_key.rst \ - memcached_mget_execute.rst \ - memcached_mget_execute_by_key.rst \ - memcached_fetch.rst -BUILT_SOURCES += ${GET_PAGES} - -MEMORY_ALLOCATORS_PAGES= \ - memcached_get_memory_allocators.rst \ - memcached_set_memory_allocators.rst \ - memcached_set_memory_allocators_context.rst -BUILT_SOURCES += ${MEMORY_ALLOCATORS_PAGES} - -POOL_PAGES= \ - memcached_pool_behavior_get.rst \ - memcached_pool_behavior_set.rst \ - memcached_pool_create.rst \ - memcached_pool_destroy.rst \ - memcached_pool_rst.rst \ - memcached_pool_push.rst -BUILT_SOURCES += ${POOL_PAGES} - -RESULT_PAGES= \ - memcached_result_cas.rst \ - memcached_result_create.rst \ - memcached_result_flags.rst \ - memcached_result_free.rst \ - memcached_result_key_length.rst \ - memcached_result_key_value.rst \ - memcached_result_length.rst \ - memcached_result_value.rst -BUILT_SOURCES += ${RESULT_PAGES} - - -SERVER_PAGES= \ - memcached_server_count.rst \ - memcached_server_cursor.rst \ - memcached_server_list.rst \ - memcached_server_add.rst \ - memcached_server_add_unix_socket.rst \ - memcached_server_push.rst -BUILT_SOURCES += ${SERVER_PAGES} - -SERVER_ST_PAGES= \ - memcached_server_list_free.rst \ - memcached_server_list_count.rst \ - memcached_server_list_append.rst \ - memcached_servers_parse.rst -BUILT_SOURCES += ${SERVER_ST_PAGES} - -SET_PAGES= \ - memcached_set_by_key.rst \ - memcached_cas.rst \ - memcached_cas_by_key.rst \ - memcached_replace.rst \ - memcached_replace_by_key.rst \ - memcached_add.rst \ - memcached_add_by_key.rst \ - memcached_prepend.rst \ - memcached_prepend_by_key.rst \ - memcached_append.rst \ - memcached_append_by_key.rst -BUILT_SOURCES += ${SET_PAGES} - -STATS_PAGES= \ - memcached_stat.rst \ - memcached_stat_execute.rst\ - memcached_stat_get_keys.rst\ - memcached_stat_get_value.rst \ - memcached_stat_servername.rst -BUILT_SOURCES += ${STATS_PAGES} - -USER_DATA_PAGES= \ - memcached_get_user_data.rst \ - memcached_set_user_data.rst -BUILT_SOURCES += ${USER_DATA_PAGES} - -VERSION_PAGES= \ - memcached_lib_version.rst -BUILT_SOURCES += ${VERSION_PAGES} - - -# -# These are for libhashkit -# -HASHKIT_CREATE_PAGES= \ - hashkit_is_allocated.rst \ - hashkit_clone.rst \ - hashkit_free.rst -BUILT_SOURCES += ${HASHKIT_CREATE_PAGES} - -HASHKIT_FUNCTIONS_PAGES= \ - hashkit_crc32.rst \ - hashkit_fnv1_32.rst \ - hashkit_fnv1_64.rst \ - hashkit_fnv1a_32.rst \ - hashkit_fnv1a_64.rst \ - hashkit_hsieh.rst \ - hashkit_jenkins.rst \ - hashkit_md5.rst \ - hashkit_murmur.rst -BUILT_SOURCES += ${HASHKIT_FUNCTIONS_PAGES} - -HASHKIT_ST_PAGES= \ - docs/hashkit_value.rst -BUILT_SOURCES += ${HASHKIT_ST_PAGES} - -SASL_PAGES= \ - memcached_destroy_sasl_auth_data.rst \ - memcached_get_sasl_callbacks.rst \ - memcached_sasl_set_auth_data.rst \ - memcached_set_sasl_callbacks.rst -BUILT_SOURCES += ${SASL_PAGES} - - # Makefile for Sphinx documentation # @@ -209,7 +62,6 @@ man_MANS+= \ docs/man/hashkit_value.3 \ docs/man/libmemcached.3 \ docs/man/libmemcached_examples.3 \ - docs/man/memaslap.1 \ docs/man/memcached_add.3 \ docs/man/memcached_add_by_key.3 \ docs/man/memcached_analyze.3 \ @@ -286,98 +138,7 @@ man_MANS+= \ docs/man/memstat.1 DISTCLEANFILES+= \ - docs/man/hashkit_clone.3 \ - docs/man/hashkit_crc32.3 \ - docs/man/hashkit_create.3 \ - docs/man/hashkit_fnv1_32.3 \ - docs/man/hashkit_fnv1_64.3 \ - docs/man/hashkit_fnv1a_32.3 \ - docs/man/hashkit_fnv1a_64.3 \ - docs/man/hashkit_free.3 \ - docs/man/hashkit_functions.3 \ - docs/man/hashkit_hsieh.3 \ - docs/man/hashkit_is_allocated.3 \ - docs/man/hashkit_jenkins.3 \ - docs/man/hashkit_md5.3 \ - docs/man/hashkit_murmur.3 \ - docs/man/hashkit_value.3 \ - docs/man/libmemcached.3 \ - docs/man/libmemcached_examples.3 \ - docs/man/memaslap.1 \ - docs/man/memcached_add.3 \ - docs/man/memcached_add_by_key.3 \ - docs/man/memcached_analyze.3 \ - docs/man/memcached_append.3 \ - docs/man/memcached_append_by_key.3 \ - docs/man/memcached_behavior_get.3 \ - docs/man/memcached_behavior_set.3 \ - docs/man/memcached_callback_get.3 \ - docs/man/memcached_callback_set.3 \ - docs/man/memcached_cas.3 \ - docs/man/memcached_cas_by_key.3 \ - docs/man/memcached_clone.3 \ - docs/man/memcached_create.3 \ - docs/man/memcached_decrement.3 \ - docs/man/memcached_decrement_with_initial.3 \ - docs/man/memcached_delete.3 \ - docs/man/memcached_delete_by_key.3 \ - docs/man/memcached_destroy_sasl_auth_data.3 \ - docs/man/memcached_dump.3 \ - docs/man/memcached_fetch.3 \ - docs/man/memcached_fetch_execute.3 \ - docs/man/memcached_fetch_result.3 \ - docs/man/memcached_flush_buffers.3 \ - docs/man/memcached_free.3 \ - docs/man/memcached_generate_hash_value.3 \ - docs/man/memcached_get.3 \ - docs/man/memcached_get_by_key.3 \ - docs/man/memcached_get_memory_allocators.3 \ - docs/man/memcached_get_sasl_callbacks.3 \ - docs/man/memcached_get_user_data.3 \ - docs/man/memcached_increment.3 \ - docs/man/memcached_increment_with_initial.3 \ - docs/man/memcached_lib_version.3 \ - docs/man/memcached_mget.3 \ - docs/man/memcached_mget_by_key.3 \ - docs/man/memcached_mget_execute.3 \ - docs/man/memcached_mget_execute_by_key.3 \ - docs/man/memcached_prepend.3 \ - docs/man/memcached_prepend_by_key.3 \ - docs/man/memcached_quit.3 \ - docs/man/memcached_replace.3 \ - docs/man/memcached_replace_by_key.3 \ - docs/man/memcached_sasl_set_auth_data.3 \ - docs/man/memcached_server_add.3 \ - docs/man/memcached_server_count.3 \ - docs/man/memcached_server_cursor.3 \ - docs/man/memcached_server_list.3 \ - docs/man/memcached_server_list_append.3 \ - docs/man/memcached_server_list_count.3 \ - docs/man/memcached_server_list_free.3 \ - docs/man/memcached_server_push.3 \ - docs/man/memcached_servers_parse.3 \ - docs/man/memcached_set.3 \ - docs/man/memcached_set_by_key.3 \ - docs/man/memcached_set_memory_allocators.3 \ - docs/man/memcached_set_sasl_callbacks.3 \ - docs/man/memcached_set_user_data.3 \ - docs/man/memcached_stat.3 \ - docs/man/memcached_stat_execute.3 \ - docs/man/memcached_stat_get_keys.3 \ - docs/man/memcached_stat_get_value.3 \ - docs/man/memcached_stat_servername.3 \ - docs/man/memcached_strerror.3 \ - docs/man/memcached_verbosity.3 \ - docs/man/memcached_version.3 \ - docs/man/memcapable.1 \ - docs/man/memcat.1 \ - docs/man/memcp.1 \ - docs/man/memdump.1 \ - docs/man/memerror.1 \ - docs/man/memflush.1 \ - docs/man/memrm.1 \ - docs/man/memslap.1 \ - docs/man/memstat.1 + docs/man/* DISTCLEANFILES+= \ docs/hashkit_clone.rst \ @@ -416,8 +177,6 @@ DISTCLEANFILES+= \ docs/memcached_get_memory_allocators.rst \ docs/memcached_get_sasl_callbacks.rst \ docs/memcached_get_user_data.rst \ - docs/memcached_increment.rst \ - docs/memcached_increment_with_initial.rst \ docs/memcached_lib_version.rst \ docs/memcached_mget.rst \ docs/memcached_mget_by_key.rst \ @@ -482,7 +241,6 @@ docs/man/hashkit_murmur.3: man docs/man/hashkit_value.3: man docs/man/libmemcached.3: man docs/man/libmemcached_examples.3: man -docs/man/memaslap.1: man docs/man/memcached_add.3: man docs/man/memcached_add_by_key.3: man docs/man/memcached_analyze.3: man @@ -673,81 +431,3 @@ doctest: @echo "Testing of doctests in the sources finished, look at the " \ "results in $(SPHINX_BUILDDIR)/doctest/output.txt." endif - -${CREATE_PAGES}: - @cd docs && rm -f $@ - @cd docs && cp memcached_create.rst $@ - -${SET_PAGES}: - @cd docs && rm -f $@ - @cd docs && cp memcached_set.rst $@ - -${DELETE_PAGES}: - @cd docs && rm -f $@ - @cd docs && cp memcached_delete.rst $@ - -${AUTO_PAGES}: - @cd docs && rm -f $@ - @cd docs && cp memcached_auto.rst $@ - -${GET_PAGES}: - @cd docs && rm -f $@ - @cd docs && cp memcached_get.rst $@ - -${SERVER_PAGES}: - @cd docs && rm -f $@ - @cd docs && cp memcached_servers.rst $@ - -${SERVER_ST_PAGES}: - @cd docs && rm -f $@ - @cd docs && cp memcached_server_st.rst $@ - -${BEHAVIOR_PAGES}: - @cd docs && rm -f $@ - @cd docs && cp memcached_behavior.rst $@ - -${CALLBACK_PAGES}: - @cd docs && rm -f $@ - @cd docs && cp memcached_callback.rst $@ - -${STATS_PAGES}: - @cd docs && rm -f $@ - @cd docs && cp memcached_stats.rst $@ - -${RESULT_PAGES}: - @cd docs && rm -f $@ - @cd docs && cp memcached_result_st.rst $@ - -${VERSION_PAGES}: - @cd docs && rm -f $@ - @cd docs && cp memcached_version.rst $@ - -${MEMORY_ALLOCATORS_PAGES}: - @cd docs && rm -f $@ - @cd docs && cp memcached_memory_allocators.rst $@ - -${USER_DATA_PAGES}: - @cd docs && rm -f $@ - @cd docs && cp memcached_user_data.rst $@ - -${POOL_PAGES}: - @cd docs && rm -f $@ - @cd docs && cp memcached_pool.rst $@ - -${HASHKIT_CREATE_PAGES}: - @cd docs && rm -f $@ - @cd docs && cp hashkit_create.rst $@ - -${HASHKIT_FUNCTIONS_PAGES}: - @cd docs && rm -f $@ - @cd docs && cp hashkit_functions.rst $@ - -${HASHKIT_ST_PAGES}: - @cd docs && rm -f $@ - @cd docs && cp hashkit_value.rst $@ - -${SASL_PAGES}: - @cd docs && rm -f $@ - @cd docs && cp memcached_sasl.rst $@ - - diff --git a/docs/memaslap.pod b/docs/memaslap.pod deleted file mode 100644 index c5de6f7c..00000000 --- a/docs/memaslap.pod +++ /dev/null @@ -1,1007 +0,0 @@ -=head1 NAME - -memaslap - Load testing and benchmarking tool for memcached - -=head1 SYNOPSIS - - memaslap [options] - -=head1 DESCRIPTION - -B 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. - -Memslap manages network connections like memcached with -libevent. Each thread of memaslap is bound with a CPU core, all -the threads don't 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. - -You can specify servers via the B<--servers> option or via the -environment variable C. - - -=head1 FEATURES - -Memslap is developed to for the following purposes: - -=over - -=item Manages network connections with libevent asynchronously. - -=item Set both TCP and UDP up to use non-blocking IO. - -=item Improves parallelism: higher performance in multi-threads environments. - -=item Improves time efficiency: faster processing speed. - -=item Generates key and value more efficiently; key size distribution and value size distribution are configurable. - -=item Supports get, multi-get, and set commands; command distribution is configurable. - -=item Supports controllable miss rate and overwrite rate. - -=item Supports data and expire-time verification. - -=item Supports dumping statistic information periodically. - -=item Supports thousands of TCP connections. - -=item Supports binary protocol. - -=item Supports facebook test (set with TCP and multi-get with UDP) and replication test. - -=back - -=head1 DETAILS - -=head2 Effective implementation of network. - -For memaslap, both TCP and UDP use non-blocking network IO. All -the network events are managed by libevent as memcached. The network module -of memaslap is similar to memcached. Libevent can ensure -memaslap can handle network very efficiently. - -=head2 Effective implementation of multi-threads and concurrency - -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. - -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. - -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 memaslap 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. - -=head2 Effective implementation of generating key and value - -In order to improve time efficiency and space efficiency, -memaslap creates a random characters table with 10M characters. All the -suffixes of keys and values are generated from this random characters table. - -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, -memaslap 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 memaslap has an algorithm to ensure that. - -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. - -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. - -=head2 Simple but useful task scheduling - -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, memaslap 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. - -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. - -If memcached server has two cache layers (memory and SSD), running -memaslap with different window sizes can get different cache -miss rates. If memaslap adds enough objects into the windows at -the beginning, and the cache of memcached cannot store all the objects -initialized, then memaslap 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. - -=head2 Useful implementation of multi-servers , UDP, TCP, multi-get and binary protocol - -Because each thread is self-governed, memaslap can assign -different threads to handle different memcached servers. This is just one of -the ways in which memaslap 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, memaslap can set some objects to one -memcached server, and get these objects from the other servers. - -By default, Memslap does single get. If the user specifies -multi-get option, memaslap will collect enough get commands and -pack and send the commands together. - -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. - - -=head1 USAGE - -Below are some usage samples: - -=over 4 - -=item memaslap -s 127.0.0.1:11211 -S 5s - -=item memaslap -s 127.0.0.1:11211 -t 2m -v 0.2 -e 0.05 -b - -=item memaslap -s 127.0.0.1:11211 -F config -t 2m -w 40k -S 20s -o 0.2 - -=item memaslap -s 127.0.0.1:11211 -F config -t 2m -T 4 -c 128 -d 20 -P 40k - -=item memaslap -s 127.0.0.1:11211 -F config -t 2m -d 50 -a -n 40 - -=item memaslap -s 127.0.0.1:11211,127.0.0.1:11212 -F config -t 2m - -=item memaslap -s 127.0.0.1:11211,127.0.0.1:11212 -F config -t 2m -p 2 - -=back - -The user must specify one server at least to run memaslap. The -rest of the parameters have default values, as shown below: - -Thread number = 1 Concurrency = 16 - -Run time = 600 seconds Configuration file = NULL - -Key size = 64 Value size = 1024 - -Get/set = 9:1 Window size = 10k - -Execute number = 0 Single get = true - -Multi-get = false Number of sockets of each concurrency = 1 - -Reconnect = false Data verification = false - -Expire-time verification = false ASCII protocol = true - -Binary protocol = false Dumping statistic information - -periodically = false - -Overwrite proportion = 0% UDP = false - -TCP = true Limit throughput = false - -Facebook test = false Replication test = false - -=head2 Key size, value size and command distribution. - -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, -memaslap 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. - -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. - -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, memaslap 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. - -=head2 Multi-thread and concurrency - -The high performance of memaslap 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. - -If the system supports setting CPU affinity and the number of threads -specified by the user is greater than 1, memaslap will try to -bind each thread to a different CPU core. So if you want to get the best -performance memaslap, 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. - -1. For 8 CPU cores system - -For example: - ---threads=2 --concurrency=128 - ---threads=8 --concurrency=128 - ---threads=8 --concurrency=256 - ---threads=12 --concurrency=144 - -2. For 16 CPU cores system - -For example: - ---threads=8 --concurrency=128 - ---threads=16 --concurrency=256 - ---threads=16 --concurrency=512 - ---threads=24 --concurrency=288 - -The memaslap 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 memaslap, there -are two ways to do this: - -Decrease the number of threads and concurrencies. -Use the option “--tps” that memaslap -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. - -=head2 Window size - -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: - -Assume that the key size is 128 bytes, and the value size is 2048 bytes, and -concurrency=128. - -1. Small cache cache_size=1M, 100% cache miss (all data get from SSD). -win_size=10k - -2. cache_size=4G - -(1). cache miss rate 0% - -win_size=8k - -(2). cache miss rate 5% - -win_size=11k - -3. cache_size=16G - -(1). cache miss rate 0% - -win_size=32k - -(2). cache miss - -rate 5% - -win_size=46k - -The formula for calculating window size for cache miss rate 0%: - -cache_size / concurrency / (key_size + value_size) * 0.5 - -The formula for calculating window size for cache miss rate 5%: - -cache_size / concurrency / (key_size + value_size) * 0.7 - -=head2 Verification - -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. - -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, memaslap will verify the expire-time and -value. - -=head2 multi-servers and multi-clients - -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. - -For example: - ---servers=10.1.1.1:11211,10.1.1.2:11212,10.1.1.3:11213 --threads=6 --concurrency=36 - -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). - -All the threads and concurrencies in memaslap are self-governed. - -So is memaslap. The user can start up several -memaslap instances. The user can run memaslap on different client -machines to communicate with the same memcached server at the same. It is -recommended that the user start different memaslap on different -machines using the same configuration. - -=head2 Run with execute number mode or time mode - -The default memaslap runs with time mode. The default run time -is 10 minutes. If it times out, memaslap will exit. Do not -specify both execute number mode and time mode at the same time; just -specify one instead. - -For example: - ---time=30s (It means the test will run 30 seconds.) - ---execute_number=100000 (It means that after running 100000 commands, the test will exit.) - -=head2 Dump statistic information periodically. - -The user can use "--stat_freq=" or "-S" to specify the frequency. - -For example: - ---stat_freq=20s - -Memslap will dump the statistics of the commands (get and set) at the frequency of every 20 -seconds. - -For more information on the format of dumping statistic information, refer to “Format of Output” section. - -=head2 Multi-get - -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. - -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, -memaslap sends one “multi-get” to the server once. For the -binary protocol, memaslap sends several single get commands -together as “multi-get” to the server. - -=head2 UDP and TCP - -Memslap supports both UDP and TCP. For TCP, -memaslap does not reconnect the memcached server if socket connections are -lost. If all the socket connections are lost or memcached server crashes, -memaslap will exit. If the user specifies the “--reconnect” -option when socket connections are lost, it will reconnect them. - -User can use “--udp” to enable the UDP feature, but UDP comes with some -limitations: - -UDP cannot set data more than 1400 bytes. - -UDP is not supported by the binary protocol because the binary protocol of -memcached does not support that. - -UDP doesn’t support reconnection. - -=head2 Facebook test - -Set data with TCP and multi-get with UDP. Specify the following options: - -"--facebook --division=50" - -If you want to create thousands of TCP connections, specify the - -"--conn_sock=" option. - -For example: --facebook --division=50 --conn_sock=200 - -The above command means that memaslap will do facebook test, -each concurrency has 200 socket TCP connections and one UDP socket. - -Memslap sets objects with the TCP socket, and multi-gets 50 -objects once with the UDP socket. - -If you specify "--division=50", the key size must be less that 25 bytes -because the UDP packet size is 1400 bytes. - -=head2 Replication test - -For replication test, the user must specify at least two memcached servers. -The user can use “—rep_write=” option to enable feature. - -For example: - ---servers=10.1.1.1:11211,10.1.1.2:11212 –rep_write=2 - -The above command means that there are 2 replication memcached servers, -memaslap 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, -memaslap will only get objects from server 1. If server 0 comes -back to life again, memaslap will reconnect server 0. If both -server 0 and server 1 crash, memaslap will exit. - -=head2 Supports thousands of TCP connections - -Start memaslap 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. - -For example: - ---threads=8 --concurrency=128 --conn_sock=128 - -The above command means that memaslap 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. - -=head2 Supports binary protocol - -Start memaslap 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. - -For example: - ---binary - -Since memcached 1.3.3 doesn't implement binary UDP protocol, -memaslap 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. - -=head1 Configuration file - -This section describes the format of the configuration file. By default -when no configuration file is specified memaslap reads the default -one located at ~/.memaslap.cnf. - -Below is a sample configuration file: - - *************************************************************************** - #comments should start with '#' - #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 - #memaslap 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 - #memaslap 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 memaslap 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 - - - -=head1 Format of output - -At the beginning, memaslap displays some configuration information as follows: - -=over 4 - -=item servers : 127.0.0.1:11211 - -=item threads count: 1 - -=item concurrency: 16 - -=item run time: 20s - -=item windows size: 10k - -=item set proportion: set_prop=0.10 - -=item get proportion: get_prop=0.90 - -=back - -=head2 Where - -=over 4 - -=item servers : "servers" - -The servers used by memaslap. - -=item threads count - -The number of threads memaslap runs with. - -=item concurrency - -The number of concurrencies memaslap runs with. - -=item run time - -How long to run memaslap. - -=item windows size - -The task window size of each concurrency. - -=item set proportion - -The proportion of set command. - -=item get proportion - -The proportion of get command. - -=back - -The output of dynamic statistics is something like this: - - --------------------------------------------------------------------------------------------------------------------------------- - 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 - --------------------------------------------------------------------------------------------------------------------------------- - -=head2 Where - -=over 4 - -=item Get Statistics - -Statistics information of get command - -=item Set Statistics - -Statistics information of set command - -=item Total Statistics - -Statistics information of both get and set command - -=item Period - -Result within a period - -=item Global - -Accumulated results - -=item Ops - -Total operations - -=item TPS - -Throughput, operations/second - -=item Net - -The rate of network - -=item Get_miss - -How many objects can’t be gotten - -=item Min - -The minimum response time - -=item Max - -The maximum response time - -=item Avg: - -The average response time - -=item Std_dev - -Standard deviation of response time - -=item Geo_dist - -Geometric distribution based on natural exponential function - -=back - -At the end, memaslap will output something like this: - - --------------------------------------------------------------------------------------------------------------------------------- - 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 - --------------------------------------------------------------------------------------------------------------------------------- - -=head2 Where - -=over 4 - -=item Get Statistics - -Get statistics of response time - -=item Set Statistics - -Set statistics of response time - -=item Total Statistics - -Both get and set statistics of response time - -=item Min - -The accumulated and minimum response time - -=item Max - -The accumulated and maximum response time - -=item Avg - -The accumulated and average response time - -=item Std - -Standard deviation of response time - -=item Log2 Dist - -Geometric distribution based on logarithm 2 - -=item cmd_get - -Total get commands done - -=item cmd_set - -Total set commands done - -=item get_misses - -How many objects can’t be gotten from server - -=item verify_misses - -How many objects need to verify but can’t get them - -=item verify_failed - -How many objects with insistent value - -=item expired_get - -How many objects are expired but we get them - -=item unexpired_unget - -How many objects are unexpired but we can’t get them - -=item written_bytes - -Total written bytes - -=item read_bytes - -Total read bytes - -=item object_bytes - -Total object bytes - -=item packet_disorder - -How many UDP packages are disorder - -=item packet_drop - -How many UDP packages are lost - -=item udp_timeout - -How many times UDP time out happen - -=item Run time - -Total run time - -=item Ops - -Total operations - -=item TPS - -Throughput, operations/second - -=item Net_rate - -The average rate of network - -=back - -=head1 OPTIONS - --s, --servers= - List one or more servers to connect. Servers count must be less than - threads count. e.g.: --servers=localhost:1234,localhost:11211 - --T, --threads= - Number of threads to startup, better equal to CPU numbers. Default 8. - --c, --concurrency= - Number of concurrency to simulate with load. Default 128. - --n, --conn_sock= - Number of TCP socks per concurrency. Default 1. - --x, --execute_number= - Number of operations(get and set) to execute for the - given test. Default 1000000. - --t, --time= - How long the test to run, suffix: s-seconds, m-minutes, h-hours, - d-days e.g.: --time=2h. - --F, --cfg_cmd= - Load the configure file to get command,key and value distribution list. - --w, --win_size= - Task window size of each concurrency, suffix: K, M e.g.: --win_size=10k. - Default 10k. - --X, --fixed_size= - Fixed length of value. - --v, --verify= - The proportion of date verification, e.g.: --verify=0.01 - --d, --division= - Number of keys to multi-get once. Default 1, means single get. - --S, --stat_freq= - Frequency of dumping statistic information. suffix: s-seconds, - m-minutes, e.g.: --resp_freq=10s. - --e, --exp_verify= - The proportion of objects with expire time, e.g.: --exp_verify=0.01. - Default no object with expire time - --o, --overwrite= - The proportion of objects need overwrite, e.g.: --overwrite=0.01. - Default never overwrite object. - --R, --reconnect - Reconnect support, when connection is closed it will be reconnected. - --U, --udp - UDP support, default memaslap uses TCP, TCP port and UDP port of - server must be same. - --a, --facebook - Whether it enables facebook test feature, set with TCP and multi-get with UDP. - --B, --binary - Whether it enables binary protocol. Default with ASCII protocol. - --P, --tps= - Expected throughput, suffix: K, e.g.: --tps=10k. - --p, --rep_write= - The first nth servers can write data, e.g.: --rep_write=2. - --b, --verbose - Whether it outputs detailed information when verification fails. - --h, --help - Display this message and then exit. - --V, --version - Display the version of the application and then exit. - -=head1 EXAMPLES - -memaslap -s 127.0.0.1:11211 -S 5s - -memaslap -s 127.0.0.1:11211 -t 2m -v 0.2 -e 0.05 -b - -memaslap -s 127.0.0.1:11211 -F config -t 2m -w 40k -S 20s -o 0.2 - -memaslap -s 127.0.0.1:11211 -F config -t 2m -T 4 -c 128 -d 20 -P 40k - -memaslap -s 127.0.0.1:11211 -F config -t 2m -d 50 -a -n 40 - -memaslap -s 127.0.0.1:11211,127.0.0.1:11212 -F config -t 2m - -memaslap -s 127.0.0.1:11211,127.0.0.1:11212 -F config -t 2m -p 2 - -=head1 HOME - -To find out more information please check: -L - -=head1 AUTHORS - -Mingqiang Zhuang Emingqiangzhuang@hengtiansoft.comE (Schooner Technolgy) -Brian Aker, Ebrian@tangent.orgE - -=head1 SEE ALSO - -memcached(1) libmemcached(3) - -=cut - diff --git a/support/libmemcached.spec.in b/support/libmemcached.spec.in index 8d14926d..073278d4 100644 --- a/support/libmemcached.spec.in +++ b/support/libmemcached.spec.in @@ -96,7 +96,6 @@ you will need to install %{name}-devel. %{_mandir}/man1/memdump.1.gz %{_mandir}/man1/memerror.1.gz %{_mandir}/man1/memflush.1.gz -%{_mandir}/man1/memaslap.1.gz %{_mandir}/man1/memrm.1.gz %{_mandir}/man1/memslap.1.gz %{_mandir}/man1/memstat.1.gz