diff --git a/src/core/profiling/basic_timers.c b/src/core/profiling/basic_timers.c index 866833f22576d01bf130c961bad65a71ff4c6ab9..124a8d6621af87dd46e1d12b30328d55c14d29c6 100644 --- a/src/core/profiling/basic_timers.c +++ b/src/core/profiling/basic_timers.c @@ -45,7 +45,12 @@ #include <grpc/support/thd.h> #include <stdio.h> -typedef enum { BEGIN = '{', END = '}', MARK = '.' } marker_type; +typedef enum { + BEGIN = '{', + END = '}', + MARK = '.', + IMPORTANT = '!' +} marker_type; typedef struct grpc_timer_entry { grpc_precise_clock tm; @@ -101,6 +106,13 @@ void grpc_timer_add_mark(int tag, void* id, const char* file, int line) { } } +void grpc_timer_add_important_mark(int tag, void* id, const char* file, + int line) { + if (tag < GRPC_PTAG_IGNORE_THRESHOLD) { + grpc_timers_log_add(tag, IMPORTANT, id, file, 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); diff --git a/src/core/profiling/stap_probes.d b/src/core/profiling/stap_probes.d index 374eeedd6c06abea95d5e9e29287c1d56592723b..153de91752ad5205d6a3a14bb1a9bc0163d62684 100644 --- a/src/core/profiling/stap_probes.d +++ b/src/core/profiling/stap_probes.d @@ -1,5 +1,6 @@ provider _stap { probe add_mark(int tag); + probe add_important_mark(int tag); probe timing_ns_begin(int tag); probe timing_ns_end(int tag); }; diff --git a/src/core/profiling/stap_timers.c b/src/core/profiling/stap_timers.c index 6e3a965dae909c62db5b44abcb7975d24e2aca58..064c86e794e1e203c26032d247a5ac28fe4f00e9 100644 --- a/src/core/profiling/stap_timers.c +++ b/src/core/profiling/stap_timers.c @@ -46,6 +46,11 @@ void grpc_timer_add_mark(int tag, void* id, const char* file, int line) { _STAP_ADD_MARK(tag); } +void grpc_timer_add_important_mark(int tag, void* id, const char* file, + int line) { + _STAP_ADD_IMPORTANT_MARK(tag); +} + void grpc_timer_begin(int tag, void* id, const char* file, int line) { _STAP_TIMING_NS_BEGIN(tag); } diff --git a/src/core/profiling/timers.h b/src/core/profiling/timers.h index 0b0f7152e79c73c4b18f96df8c4ff77c612fdbf0..4fb465c23718495f8fe2ba2f611787124c9e4da0 100644 --- a/src/core/profiling/timers.h +++ b/src/core/profiling/timers.h @@ -42,6 +42,8 @@ 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_add_important_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); @@ -82,6 +84,10 @@ enum grpc_profiling_tags { do { \ } while (0) +#define GRPC_TIMER_IMPORTANT_MARK(tag, id) \ + do { \ + } while (0) + #define GRPC_TIMER_BEGIN(tag, id) \ do { \ } while (0) @@ -102,6 +108,12 @@ enum grpc_profiling_tags { grpc_timer_add_mark(tag, ((void *)(gpr_intptr)(id)), __FILE__, __LINE__); \ } +#define GRPC_TIMER_IMPORTANT_MARK(tag, id) \ + if (tag < GRPC_PTAG_IGNORE_THRESHOLD) { \ + grpc_timer_add_important_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__); \