From 97ec5eb61e9c2995387668c094d89389facb0878 Mon Sep 17 00:00:00 2001 From: Craig Tiller Date: Fri, 1 Sep 2017 12:57:36 -0700 Subject: Add stats test --- src/core/lib/debug/stats_data.c | 75 +++++++++++++++++++++++++++++++++++ src/core/lib/debug/stats_data.h | 88 ++++++----------------------------------- 2 files changed, 87 insertions(+), 76 deletions(-) (limited to 'src/core') diff --git a/src/core/lib/debug/stats_data.c b/src/core/lib/debug/stats_data.c index 177234ab5b..0ba10e68e3 100644 --- a/src/core/lib/debug/stats_data.c +++ b/src/core/lib/debug/stats_data.c @@ -19,6 +19,8 @@ */ #include "src/core/lib/debug/stats_data.h" +#include "src/core/lib/debug/stats.h" +#include "src/core/lib/iomgr/exec_ctx.h" const char *grpc_stats_counter_name[GRPC_STATS_COUNTER_COUNT] = { "client_calls_created", "server_calls_created", "syscall_write", "syscall_read", "syscall_poll", "syscall_wait", @@ -165,7 +167,80 @@ const uint8_t grpc_stats_table_3[52] = { 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 52}; +void grpc_stats_inc_tcp_write_size(grpc_exec_ctx *exec_ctx, double value) { + union { + double dbl; + uint64_t uint; + } _val; + _val.dbl = value; + if (_val.dbl < 0) _val.dbl = 0; + if (_val.dbl < 5.000000) { + GRPC_STATS_INC_HISTOGRAM((exec_ctx), GRPC_STATS_HISTOGRAM_TCP_WRITE_SIZE, + (int)_val.dbl); + } else { + if (_val.uint < 4715268809856909312ull) { + GRPC_STATS_INC_HISTOGRAM( + (exec_ctx), GRPC_STATS_HISTOGRAM_TCP_WRITE_SIZE, + grpc_stats_table_1[((_val.uint - 4617315517961601024ull) >> 50)] + 4); + } else { + GRPC_STATS_INC_HISTOGRAM( + (exec_ctx), GRPC_STATS_HISTOGRAM_TCP_WRITE_SIZE, + grpc_stats_histo_find_bucket_slow((exec_ctx), _val.dbl, + grpc_stats_table_0, 64)); + } + } +} +void grpc_stats_inc_tcp_write_iov_size(grpc_exec_ctx *exec_ctx, double value) { + union { + double dbl; + uint64_t uint; + } _val; + _val.dbl = value; + if (_val.dbl < 0) _val.dbl = 0; + if (_val.dbl < 12.000000) { + GRPC_STATS_INC_HISTOGRAM( + (exec_ctx), GRPC_STATS_HISTOGRAM_TCP_WRITE_IOV_SIZE, (int)_val.dbl); + } else { + if (_val.uint < 4652218415073722368ull) { + GRPC_STATS_INC_HISTOGRAM( + (exec_ctx), GRPC_STATS_HISTOGRAM_TCP_WRITE_IOV_SIZE, + grpc_stats_table_3[((_val.uint - 4622945017495814144ull) >> 49)] + + 11); + } else { + GRPC_STATS_INC_HISTOGRAM( + (exec_ctx), GRPC_STATS_HISTOGRAM_TCP_WRITE_IOV_SIZE, + grpc_stats_histo_find_bucket_slow((exec_ctx), _val.dbl, + grpc_stats_table_2, 64)); + } + } +} +void grpc_stats_inc_tcp_read_size(grpc_exec_ctx *exec_ctx, double value) { + union { + double dbl; + uint64_t uint; + } _val; + _val.dbl = value; + if (_val.dbl < 0) _val.dbl = 0; + if (_val.dbl < 5.000000) { + GRPC_STATS_INC_HISTOGRAM((exec_ctx), GRPC_STATS_HISTOGRAM_TCP_READ_SIZE, + (int)_val.dbl); + } else { + if (_val.uint < 4715268809856909312ull) { + GRPC_STATS_INC_HISTOGRAM( + (exec_ctx), GRPC_STATS_HISTOGRAM_TCP_READ_SIZE, + grpc_stats_table_1[((_val.uint - 4617315517961601024ull) >> 50)] + 4); + } else { + GRPC_STATS_INC_HISTOGRAM( + (exec_ctx), GRPC_STATS_HISTOGRAM_TCP_READ_SIZE, + grpc_stats_histo_find_bucket_slow((exec_ctx), _val.dbl, + grpc_stats_table_0, 64)); + } + } +} const int grpc_stats_histo_buckets[3] = {64, 64, 64}; const int grpc_stats_histo_start[3] = {0, 64, 128}; const double *const grpc_stats_histo_bucket_boundaries[3] = { grpc_stats_table_0, grpc_stats_table_2, grpc_stats_table_0}; +void (*const grpc_stats_inc_histogram[3])(grpc_exec_ctx *exec_ctx, double x) = { + grpc_stats_inc_tcp_write_size, grpc_stats_inc_tcp_write_iov_size, + grpc_stats_inc_tcp_read_size}; diff --git a/src/core/lib/debug/stats_data.h b/src/core/lib/debug/stats_data.h index 9a4ba68655..4fff769450 100644 --- a/src/core/lib/debug/stats_data.h +++ b/src/core/lib/debug/stats_data.h @@ -22,6 +22,7 @@ #define GRPC_CORE_LIB_DEBUG_STATS_DATA_H #include +#include "src/core/lib/iomgr/exec_ctx.h" typedef enum { GRPC_STATS_COUNTER_CLIENT_CALLS_CREATED, @@ -64,84 +65,19 @@ typedef enum { GRPC_STATS_INC_COUNTER((exec_ctx), GRPC_STATS_COUNTER_SYSCALL_WAIT) #define GRPC_STATS_INC_HISTOGRAM_SLOW_LOOKUPS(exec_ctx) \ GRPC_STATS_INC_COUNTER((exec_ctx), GRPC_STATS_COUNTER_HISTOGRAM_SLOW_LOOKUPS) -#define GRPC_STATS_INC_TCP_WRITE_SIZE(exec_ctx, value) \ - do { \ - union { \ - double dbl; \ - uint64_t uint; \ - } _val; \ - _val.dbl = (double)(value); \ - if (_val.dbl < 0) _val.dbl = 0; \ - if (_val.dbl < 5.000000) { \ - GRPC_STATS_INC_HISTOGRAM( \ - (exec_ctx), GRPC_STATS_HISTOGRAM_TCP_WRITE_SIZE, (int)_val.dbl); \ - } else { \ - if (_val.uint < 4715268809856909312ull) { \ - GRPC_STATS_INC_HISTOGRAM( \ - (exec_ctx), GRPC_STATS_HISTOGRAM_TCP_WRITE_SIZE, \ - grpc_stats_table_1[((_val.uint - 4617315517961601024ull) >> 50)]); \ - } else { \ - GRPC_STATS_INC_HISTOGRAM( \ - (exec_ctx), GRPC_STATS_HISTOGRAM_TCP_WRITE_SIZE, \ - grpc_stats_histo_find_bucket_slow((exec_ctx), _val.dbl, \ - grpc_stats_table_0, 64)); \ - } \ - } \ - } while (false) -#define GRPC_STATS_INC_TCP_WRITE_IOV_SIZE(exec_ctx, value) \ - do { \ - union { \ - double dbl; \ - uint64_t uint; \ - } _val; \ - _val.dbl = (double)(value); \ - if (_val.dbl < 0) _val.dbl = 0; \ - if (_val.dbl < 12.000000) { \ - GRPC_STATS_INC_HISTOGRAM( \ - (exec_ctx), GRPC_STATS_HISTOGRAM_TCP_WRITE_IOV_SIZE, (int)_val.dbl); \ - } else { \ - if (_val.uint < 4652218415073722368ull) { \ - GRPC_STATS_INC_HISTOGRAM( \ - (exec_ctx), GRPC_STATS_HISTOGRAM_TCP_WRITE_IOV_SIZE, \ - grpc_stats_table_3[((_val.uint - 4622945017495814144ull) >> 49)]); \ - } else { \ - GRPC_STATS_INC_HISTOGRAM( \ - (exec_ctx), GRPC_STATS_HISTOGRAM_TCP_WRITE_IOV_SIZE, \ - grpc_stats_histo_find_bucket_slow((exec_ctx), _val.dbl, \ - grpc_stats_table_2, 64)); \ - } \ - } \ - } while (false) -#define GRPC_STATS_INC_TCP_READ_SIZE(exec_ctx, value) \ - do { \ - union { \ - double dbl; \ - uint64_t uint; \ - } _val; \ - _val.dbl = (double)(value); \ - if (_val.dbl < 0) _val.dbl = 0; \ - if (_val.dbl < 5.000000) { \ - GRPC_STATS_INC_HISTOGRAM((exec_ctx), GRPC_STATS_HISTOGRAM_TCP_READ_SIZE, \ - (int)_val.dbl); \ - } else { \ - if (_val.uint < 4715268809856909312ull) { \ - GRPC_STATS_INC_HISTOGRAM( \ - (exec_ctx), GRPC_STATS_HISTOGRAM_TCP_READ_SIZE, \ - grpc_stats_table_1[((_val.uint - 4617315517961601024ull) >> 50)]); \ - } else { \ - GRPC_STATS_INC_HISTOGRAM( \ - (exec_ctx), GRPC_STATS_HISTOGRAM_TCP_READ_SIZE, \ - grpc_stats_histo_find_bucket_slow((exec_ctx), _val.dbl, \ - grpc_stats_table_0, 64)); \ - } \ - } \ - } while (false) -extern const double grpc_stats_table_0[64]; -extern const uint8_t grpc_stats_table_1[87]; -extern const double grpc_stats_table_2[64]; -extern const uint8_t grpc_stats_table_3[52]; +#define GRPC_STATS_INC_TCP_WRITE_SIZE(exec_ctx, value) \ + grpc_stats_inc_tcp_write_size((exec_ctx), (double)(value)) +void grpc_stats_inc_tcp_write_size(grpc_exec_ctx *exec_ctx, double x); +#define GRPC_STATS_INC_TCP_WRITE_IOV_SIZE(exec_ctx, value) \ + grpc_stats_inc_tcp_write_iov_size((exec_ctx), (double)(value)) +void grpc_stats_inc_tcp_write_iov_size(grpc_exec_ctx *exec_ctx, double x); +#define GRPC_STATS_INC_TCP_READ_SIZE(exec_ctx, value) \ + grpc_stats_inc_tcp_read_size((exec_ctx), (double)(value)) +void grpc_stats_inc_tcp_read_size(grpc_exec_ctx *exec_ctx, double x); extern const int grpc_stats_histo_buckets[3]; extern const int grpc_stats_histo_start[3]; extern const double *const grpc_stats_histo_bucket_boundaries[3]; +extern void (*const grpc_stats_inc_histogram[3])(grpc_exec_ctx *exec_ctx, + double x); #endif /* GRPC_CORE_LIB_DEBUG_STATS_DATA_H */ -- cgit v1.2.3