From 5020eea6443b62925e72d8a00ee8d95e7ba25a96 Mon Sep 17 00:00:00 2001 From: Alexey Kopytov Date: Thu, 21 Jul 2011 20:59:45 +0400 Subject: [PATCH] Make --report-interval stats use the --percentile value rather than hardcoded ones. --- sysbench/sb_logger.c | 15 ++++++++------- sysbench/sysbench.h | 1 + sysbench/tests/oltp/sb_oltp.c | 7 ++++--- 3 files changed, 13 insertions(+), 10 deletions(-) diff --git a/sysbench/sb_logger.c b/sysbench/sb_logger.c index 103898d..25355fa 100644 --- a/sysbench/sb_logger.c +++ b/sysbench/sb_logger.c @@ -60,7 +60,6 @@ static unsigned char initialized; static unsigned char verbosity; static sb_percentile_t percentile; -static unsigned int oper_percentile; static pthread_mutex_t text_mutex; static unsigned int text_cnt; @@ -484,15 +483,16 @@ int text_handler_process(log_msg_t *msg) int oper_handler_init(void) { - unsigned int i; + unsigned int i, tmp; - oper_percentile = sb_get_value_int("percentile"); - if (oper_percentile < 1 || oper_percentile > 100) + tmp = sb_get_value_int("percentile"); + if (tmp < 1 || tmp > 100) { log_text(LOG_FATAL, "Invalid value for percentile option: %d", - oper_percentile); + tmp); return 1; } + sb_globals.percentile_rank = tmp; if (sb_percentile_init(&percentile, OPER_LOG_GRANULARITY, OPER_LOG_MIN_VALUE, OPER_LOG_MAX_VALUE)) @@ -577,7 +577,8 @@ int print_global_stats(void) total_time_ns = sb_timer_split(&sb_globals.cumulative_timer2); - percentile_val = sb_percentile_calculate(&percentile, oper_percentile); + percentile_val = sb_percentile_calculate(&percentile, + sb_globals.percentile_rank); sb_percentile_reset(&percentile); pthread_mutex_unlock(&timers_mutex); @@ -607,7 +608,7 @@ int print_global_stats(void) if (t.events > 0) { log_text(LOG_NOTICE, " approx. %3d percentile: %10.2fms", - oper_percentile, NS2MS(percentile_val)); + sb_globals.percentile_rank, NS2MS(percentile_val)); } log_text(LOG_NOTICE, ""); diff --git a/sysbench/sysbench.h b/sysbench/sysbench.h index 7106c95..5a1625c 100644 --- a/sysbench/sysbench.h +++ b/sysbench/sysbench.h @@ -202,6 +202,7 @@ typedef struct unsigned int num_threads; /* number of threads to use */ unsigned int num_running; /* number of threads currently active */ unsigned int report_interval;/* intermediate reports interval */ + unsigned int percentile_rank;/* percentile rank for response time stats */ /* array of report checkpoints */ unsigned int checkpoints[MAX_CHECKPOINTS]; unsigned int n_checkpoints; /* number of checkpoints */ diff --git a/sysbench/tests/oltp/sb_oltp.c b/sysbench/tests/oltp/sb_oltp.c index 26e9485..36a0ce7 100644 --- a/sysbench/tests/oltp/sb_oltp.c +++ b/sysbench/tests/oltp/sb_oltp.c @@ -1394,11 +1394,12 @@ void oltp_print_stats(sb_stat_t type) log_timestamp(LOG_NOTICE, &sb_globals.exec_timer, "threads: %d, tps: %4.2f, reads/s: %4.2f, writes/s: %4.2f " - "response time: %4.2fms (95%%), %4.2fms (99%%)", + "response time: %4.2fms (%u%%)", sb_globals.num_threads, num_transactions / seconds, num_read_ops / seconds, num_write_ops / seconds, - NS2MS(sb_percentile_calculate(&local_percentile, 95)), - NS2MS(sb_percentile_calculate(&local_percentile, 99))); + NS2MS(sb_percentile_calculate(&local_percentile, + sb_globals.percentile_rank)), + sb_globals.percentile_rank); sb_percentile_reset(&local_percentile);