/* * File: ms_memslap.h * Author: Mingqiang Zhuang * * Created on February 10, 2009 * * (c) Copyright 2009, Schooner Information Technology, Inc. * http://www.schoonerinfotech.com/ * */ #ifndef MS_MEMSLAP_H #define MS_MEMSLAP_H #include #include #include #include #include #include #include #include #if !defined(__cplusplus) # include #endif #include #include "ms_stats.h" #ifdef __cplusplus extern "C" { #endif /* command line option */ typedef enum { OPT_VERSION= 'V', OPT_HELP= 'h', OPT_UDP= 'U', OPT_SERVERS= 's', OPT_EXECUTE_NUMBER= 'x', OPT_THREAD_NUMBER= 'T', OPT_CONCURRENCY= 'c', OPT_FIXED_LTH= 'X', OPT_VERIFY= 'v', OPT_GETS_DIVISION= 'd', OPT_TIME= 't', OPT_CONFIG_CMD= 'F', OPT_WINDOW_SIZE= 'w', OPT_EXPIRE= 'e', OPT_STAT_FREQ= 'S', OPT_RECONNECT= 'R', OPT_VERBOSE= 'b', OPT_FACEBOOK_TEST= 'a', OPT_SOCK_PER_CONN= 'n', OPT_BINARY_PROTOCOL= 'B', OPT_OVERWRITE= 'o', OPT_TPS= 'P', OPT_REP_WRITE_SRV= 'p', } ms_options_t; /* global statistic of response time */ typedef struct statistic { pthread_mutex_t stat_mutex; /* synchronize the following members */ ms_stat_t get_stat; /* statistics of get command */ ms_stat_t set_stat; /* statistics of set command */ ms_stat_t total_stat; /* statistics of both get and set commands */ } ms_statistic_t; /* global status statistic structure */ typedef struct stats { volatile uint32_t active_conns; /* active connections */ size_t bytes_read; /* read bytes */ size_t bytes_written; /* written bytes */ size_t obj_bytes; /* object bytes */ size_t pre_cmd_get; /* previous total get command count */ size_t pre_cmd_set; /* previous total set command count */ size_t cmd_get; /* current total get command count */ size_t cmd_set; /* current total set command count */ size_t get_misses; /* total objects of get miss */ size_t vef_miss; /* total objects of verification miss */ size_t vef_failed; /* total objects of verification failed */ size_t unexp_unget; /* total objects which is unexpired but not get */ size_t exp_get; /* total objects which is expired but get */ volatile size_t pkt_disorder; /* disorder packages of UDP */ size_t pkt_drop; /* packages dropped of UDP */ size_t udp_timeout; /* how many times timeout of UDP happens */ } ms_stats_t; /* lock adapter */ typedef struct sync_lock { uint32_t count; pthread_mutex_t lock; pthread_cond_t cond; } ms_sync_lock_t; /* global variable structure */ typedef struct global { /* synchronize lock */ ms_sync_lock_t init_lock; ms_sync_lock_t warmup_lock; ms_sync_lock_t run_lock; /* mutex for outputing error log synchronously when memslap crashes */ pthread_mutex_t quit_mutex; /* mutex for generating key prefix */ pthread_mutex_t seq_mutex; /* global synchronous flags for slap mode */ bool finish_warmup; bool time_out; } ms_global_t; /* global structure */ ms_global_t ms_global; /* global stats information structure */ ms_stats_t ms_stats; /* global statistic structure */ ms_statistic_t ms_statistic; #ifdef __cplusplus } #endif #endif /* end of MS_MEMSLAP_H */