diff options
author | Craig Tiller <craig.tiller@gmail.com> | 2015-05-04 07:27:24 -0700 |
---|---|---|
committer | Craig Tiller <craig.tiller@gmail.com> | 2015-05-04 07:27:24 -0700 |
commit | c3c93185795d3fbcd80dc8d861d2abd24be499e7 (patch) | |
tree | 127d9f1dd0f91f38adf0a3cd419d835e64eb3eb1 | |
parent | 573b4331157d6344ea0305cc325b5c6ce72f7526 (diff) | |
parent | 5649b44843a04f91453d84809863bde3af9c3868 (diff) |
Merge branch 'fast-timer' of github.com:ctiller/grpc into fast-timer
-rw-r--r-- | src/core/profiling/basic_timers.c | 25 | ||||
-rw-r--r-- | src/core/profiling/timers.h | 27 | ||||
-rw-r--r-- | src/core/profiling/timers_preciseclock.h | 20 |
3 files changed, 37 insertions, 35 deletions
diff --git a/src/core/profiling/basic_timers.c b/src/core/profiling/basic_timers.c index 5176769919..866833f225 100644 --- a/src/core/profiling/basic_timers.c +++ b/src/core/profiling/basic_timers.c @@ -45,11 +45,7 @@ #include <grpc/support/thd.h> #include <stdio.h> -typedef enum { - BEGIN = '{', - END = '}', - MARK = '.' -} marker_type; +typedef enum { BEGIN = '{', END = '}', MARK = '.' } marker_type; typedef struct grpc_timer_entry { grpc_precise_clock tm; @@ -60,7 +56,7 @@ typedef struct grpc_timer_entry { int line; } grpc_timer_entry; -#define MAX_COUNT (1024*1024/sizeof(grpc_timer_entry)) +#define MAX_COUNT (1024 * 1024 / sizeof(grpc_timer_entry)) static __thread grpc_timer_entry log[MAX_COUNT]; static __thread int count; @@ -69,8 +65,10 @@ static void log_report() { int i; for (i = 0; i < count; i++) { grpc_timer_entry* entry = &(log[i]); - printf("GRPC_LAT_PROF " GRPC_PRECISE_CLOCK_FORMAT " %p %c %d %p %s %d\n", GRPC_PRECISE_CLOCK_PRINTF_ARGS(&entry->tm), (void*)(gpr_intptr)gpr_thd_currentid(), entry->type, entry->tag, - entry->id, entry->file, entry->line); + printf("GRPC_LAT_PROF " GRPC_PRECISE_CLOCK_FORMAT " %p %c %d %p %s %d\n", + GRPC_PRECISE_CLOCK_PRINTF_ARGS(&entry->tm), + (void*)(gpr_intptr)gpr_thd_currentid(), entry->type, entry->tag, + entry->id, entry->file, entry->line); } /* Now clear out the log */ @@ -103,25 +101,22 @@ void grpc_timer_add_mark(int tag, void* id, const char* file, int line) { } } -void grpc_timer_begin(int tag, void* id, const char *file, int line) { +void grpc_timer_begin(int tag, void* id, const char* file, int line) { if (tag < GRPC_PTAG_IGNORE_THRESHOLD) { grpc_timers_log_add(tag, BEGIN, id, file, line); } } -void grpc_timer_end(int tag, void* id, const char *file, int line) { +void grpc_timer_end(int tag, void* id, const char* file, int line) { if (tag < GRPC_PTAG_IGNORE_THRESHOLD) { grpc_timers_log_add(tag, END, id, file, line); } } /* Basic profiler specific API functions. */ -void grpc_timers_global_init(void) { -} - -void grpc_timers_global_destroy(void) { -} +void grpc_timers_global_init(void) {} +void grpc_timers_global_destroy(void) {} #else /* !GRPC_BASIC_PROFILER */ void grpc_timers_global_init(void) {} diff --git a/src/core/profiling/timers.h b/src/core/profiling/timers.h index df5882aa22..ccde6acd58 100644 --- a/src/core/profiling/timers.h +++ b/src/core/profiling/timers.h @@ -41,9 +41,9 @@ extern "C" { void grpc_timers_global_init(void); void grpc_timers_global_destroy(void); -void grpc_timer_add_mark(int tag, void* id, const char *file, int line); -void grpc_timer_begin(int tag, void* id, const char *file, int line); -void grpc_timer_end(int tag, void* id, const char *file, int line); +void grpc_timer_add_mark(int tag, void *id, const char *file, int line); +void grpc_timer_begin(int tag, void *id, const char *file, int line); +void grpc_timer_end(int tag, void *id, const char *file, int line); enum grpc_profiling_tags { /* Any GRPC_PTAG_* >= than the threshold won't generate any profiling mark. */ @@ -74,13 +74,16 @@ enum grpc_profiling_tags { #if !(defined(GRPC_STAP_PROFILER) + defined(GRPC_BASIC_PROFILER)) /* No profiling. No-op all the things. */ #define GRPC_TIMER_MARK(tag, id) \ - do {} while(0) + do { \ + } while (0) #define GRPC_TIMER_BEGIN(tag, id) \ - do {} while(0) + do { \ + } while (0) #define GRPC_TIMER_END(tag, id) \ - do {} while(0) + do { \ + } while (0) #else /* at least one profiler requested... */ /* ... hopefully only one. */ @@ -94,14 +97,14 @@ enum grpc_profiling_tags { grpc_timer_add_mark(tag, ((void *)(gpr_intptr)(id)), __FILE__, __LINE__); \ } -#define GRPC_TIMER_BEGIN(tag, id) \ - if (tag < GRPC_PTAG_IGNORE_THRESHOLD) { \ - grpc_timer_begin(tag, ((void *)(gpr_intptr)(id)), __FILE__, __LINE__); \ +#define GRPC_TIMER_BEGIN(tag, id) \ + if (tag < GRPC_PTAG_IGNORE_THRESHOLD) { \ + grpc_timer_begin(tag, ((void *)(gpr_intptr)(id)), __FILE__, __LINE__); \ } -#define GRPC_TIMER_END(tag, id) \ - if (tag < GRPC_PTAG_IGNORE_THRESHOLD) { \ - grpc_timer_end(tag, ((void *)(gpr_intptr)(id)), __FILE__, __LINE__); \ +#define GRPC_TIMER_END(tag, id) \ + if (tag < GRPC_PTAG_IGNORE_THRESHOLD) { \ + grpc_timer_end(tag, ((void *)(gpr_intptr)(id)), __FILE__, __LINE__); \ } #ifdef GRPC_STAP_PROFILER diff --git a/src/core/profiling/timers_preciseclock.h b/src/core/profiling/timers_preciseclock.h index c9e2973149..163d52b797 100644 --- a/src/core/profiling/timers_preciseclock.h +++ b/src/core/profiling/timers_preciseclock.h @@ -43,7 +43,7 @@ typedef long long int grpc_precise_clock; #if defined(__i386__) static void grpc_precise_clock_now(grpc_precise_clock *clk) { grpc_precise_clock ret; - __asm__ volatile("rdtsc" : "=A" (ret) ); + __asm__ volatile("rdtsc" : "=A"(ret)); *clk = ret; } @@ -51,7 +51,7 @@ static void grpc_precise_clock_now(grpc_precise_clock *clk) { #elif defined(__x86_64__) || defined(__amd64__) static void grpc_precise_clock_now(grpc_precise_clock *clk) { unsigned long long low, high; - __asm__ volatile("rdtsc" : "=a" (low), "=d" (high)); + __asm__ volatile("rdtsc" : "=a"(low), "=d"(high)); *clk = (high << 32) | low; } #endif @@ -61,18 +61,21 @@ static void grpc_precise_clock_init() { time_t start = time(NULL); grpc_precise_clock start_time; grpc_precise_clock end_time; - while (time(NULL) == start); + while (time(NULL) == start) + ; grpc_precise_clock_now(&start_time); - while (time(NULL) == start+1); + while (time(NULL) == start + 1) + ; grpc_precise_clock_now(&end_time); cycles_per_second = end_time - start_time; } static double grpc_precise_clock_scaling_factor() { - gpr_once_init(&precise_clock_init, grpc_precise_clock_init); - return 1e6 / cycles_per_second; + gpr_once_init(&precise_clock_init, grpc_precise_clock_init); + return 1e6 / cycles_per_second; } #define GRPC_PRECISE_CLOCK_FORMAT "%f" -#define GRPC_PRECISE_CLOCK_PRINTF_ARGS(clk) (*(clk) * grpc_precise_clock_scaling_factor()) +#define GRPC_PRECISE_CLOCK_PRINTF_ARGS(clk) \ + (*(clk)*grpc_precise_clock_scaling_factor()) #else typedef struct grpc_precise_clock grpc_precise_clock; struct grpc_precise_clock { @@ -82,7 +85,8 @@ static void grpc_precise_clock_now(grpc_precise_clock* clk) { clk->clock = gpr_now(); } #define GRPC_PRECISE_CLOCK_FORMAT "%ld.%09d" -#define GRPC_PRECISE_CLOCK_PRINTF_ARGS(clk) (clk)->clock.tv_sec, (clk)->clock.tv_nsec +#define GRPC_PRECISE_CLOCK_PRINTF_ARGS(clk) \ + (clk)->clock.tv_sec, (clk)->clock.tv_nsec static void grpc_precise_clock_print(const grpc_precise_clock* clk, FILE* fp) { fprintf(fp, "%ld.%09d", clk->clock.tv_sec, clk->clock.tv_nsec); } |