void options_parse(int argc, char *argv[]);
void conclusions_print(conclusions_st *conclusion);
void scheduler(memcached_server_st *servers, conclusions_st *conclusion);
-pairs_st *load_createial_data(memcached_server_st *servers, unsigned int number_of,
+pairs_st *load_create_data(memcached_server_st *servers, unsigned int number_of,
unsigned int *actual_loaded);
+void flush_all(memcached_server_st *servers);
static int opt_verbose= 0;
+static int opt_flush= 0;
+static int opt_non_blocking_io= 0;
+static int opt_tcp_nodelay= 0;
static unsigned int opt_execute_number= 0;
static unsigned int opt_createial_load= 0;
static unsigned int opt_concurrency= 0;
pthread_attr_setdetachstate(&attr,
PTHREAD_CREATE_DETACHED);
+ if (opt_flush)
+ flush_all(servers);
if (opt_createial_load)
- pairs= load_createial_data(servers, opt_createial_load, &actual_loaded);
+ pairs= load_create_data(servers, opt_createial_load, &actual_loaded);
pthread_mutex_lock(&counter_mutex);
thread_counter= 0;
{"debug", no_argument, &opt_verbose, OPT_DEBUG},
{"execute-number", required_argument, NULL, OPT_SLAP_EXECUTE_NUMBER},
{"flag", no_argument, &opt_displayflag, OPT_FLAG},
+ {"flush", no_argument, &opt_flush, OPT_FLUSH},
{"help", no_argument, NULL, OPT_HELP},
{"initial-load", required_argument, NULL, OPT_SLAP_INITIAL_LOAD}, /* Number to load initially */
+ {"non-blocking", no_argument, &opt_non_blocking_io, OPT_SLAP_NON_BLOCK},
{"servers", required_argument, NULL, OPT_SERVERS},
+ {"tcp-nodelay", no_argument, &opt_tcp_nodelay, OPT_SLAP_TCP_NODELAY},
{"test", required_argument, NULL, OPT_SLAP_TEST},
{"verbose", no_argument, &opt_verbose, OPT_VERBOSE},
{"version", no_argument, NULL, OPT_VERSION},
memcached_st *memc;
memc= memcached_create(NULL);
+ if (opt_non_blocking_io)
+ memcached_behavior_set(memc, MEMCACHED_BEHAVIOR_NO_BLOCK, NULL );
+ if (opt_tcp_nodelay)
+ memcached_behavior_set(memc, MEMCACHED_BEHAVIOR_TCP_NODELAY, NULL );
memcached_server_push(memc, context->servers);
return NULL;
}
-pairs_st *load_createial_data(memcached_server_st *servers, unsigned int number_of,
+void flush_all(memcached_server_st *servers)
+{
+ memcached_st *memc;
+
+ memc= memcached_create(NULL);
+
+ memcached_server_push(memc, servers);
+
+ memcached_flush(memc, 0);
+
+ memcached_free(memc);
+}
+
+pairs_st *load_create_data(memcached_server_st *servers, unsigned int number_of,
unsigned int *actual_loaded)
{
memcached_st *memc;
pairs_st *pairs;
memc= memcached_create(NULL);
+ /* We always used non-blocking IO for load since it is faster */
+ memcached_behavior_set(memc, MEMCACHED_BEHAVIOR_NO_BLOCK, NULL );
memcached_server_push(memc, servers);
pairs= pairs_generate(number_of);