Merge pull request #1575 from dgquintas/profiling_marks_strtags

Added the tag enun name to the profiling marks.
pull/1639/head
Vijay Pai 10 years ago
commit 04ae923a52
  1. 32
      src/core/profiling/basic_timers.c
  2. 13
      src/core/profiling/stap_timers.c
  3. 23
      src/core/profiling/timers.h

@ -55,6 +55,7 @@ typedef enum {
typedef struct grpc_timer_entry {
grpc_precise_clock tm;
int tag;
const char* tagstr;
marker_type type;
void* id;
const char* file;
@ -70,18 +71,19 @@ 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",
printf("GRPC_LAT_PROF " GRPC_PRECISE_CLOCK_FORMAT
" %p %c %d(%s) %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);
entry->tagstr, entry->id, entry->file, entry->line);
}
/* Now clear out the log */
count = 0;
}
static void grpc_timers_log_add(int tag, marker_type type, void* id,
const char* file, int line) {
static void grpc_timers_log_add(int tag, const char* tagstr, marker_type type,
void* id, const char* file, int line) {
grpc_timer_entry* entry;
/* TODO (vpai) : Improve concurrency */
@ -93,6 +95,7 @@ static void grpc_timers_log_add(int tag, marker_type type, void* id,
grpc_precise_clock_now(&entry->tm);
entry->tag = tag;
entry->tagstr = tagstr;
entry->type = type;
entry->id = id;
entry->file = file;
@ -100,28 +103,31 @@ static void grpc_timers_log_add(int tag, marker_type type, void* id,
}
/* Latency profiler API implementation. */
void grpc_timer_add_mark(int tag, void* id, const char* file, int line) {
void grpc_timer_add_mark(int tag, const char* tagstr, void* id,
const char* file, int line) {
if (tag < GRPC_PTAG_IGNORE_THRESHOLD) {
grpc_timers_log_add(tag, MARK, id, file, line);
grpc_timers_log_add(tag, tagstr, MARK, id, file, line);
}
}
void grpc_timer_add_important_mark(int tag, void* id, const char* file,
int line) {
void grpc_timer_add_important_mark(int tag, const char* tagstr, void* id,
const char* file, int line) {
if (tag < GRPC_PTAG_IGNORE_THRESHOLD) {
grpc_timers_log_add(tag, IMPORTANT, id, file, line);
grpc_timers_log_add(tag, tagstr, IMPORTANT, id, file, line);
}
}
void grpc_timer_begin(int tag, void* id, const char* file, int line) {
void grpc_timer_begin(int tag, const char* tagstr, void* id, const char* file,
int line) {
if (tag < GRPC_PTAG_IGNORE_THRESHOLD) {
grpc_timers_log_add(tag, BEGIN, id, file, line);
grpc_timers_log_add(tag, tagstr, BEGIN, id, file, line);
}
}
void grpc_timer_end(int tag, void* id, const char* file, int line) {
void grpc_timer_end(int tag, const char* tagstr, void* id, const char* file,
int line) {
if (tag < GRPC_PTAG_IGNORE_THRESHOLD) {
grpc_timers_log_add(tag, END, id, file, line);
grpc_timers_log_add(tag, tagstr, END, id, file, line);
}
}

@ -42,20 +42,23 @@
#include "src/core/profiling/stap_probes.h"
/* Latency profiler API implementation. */
void grpc_timer_add_mark(int tag, void* id, const char* file, int line) {
void grpc_timer_add_mark(int tag, const char* tagstr, 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) {
void grpc_timer_add_important_mark(int tag, const char* tagstr, 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) {
void grpc_timer_begin(int tag, const char* tagstr, void* id, const char* file,
int line) {
_STAP_TIMING_NS_BEGIN(tag);
}
void grpc_timer_end(int tag, void* id, const char* file, int line) {
void grpc_timer_end(int tag, const char* tagstr, void* id, const char* file,
int line) {
_STAP_TIMING_NS_END(tag);
}

@ -41,11 +41,14 @@ 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_add_important_mark(int tag, void *id, const char *file,
void grpc_timer_add_mark(int tag, const char *tagstr, void *id,
const char *file, int line);
void grpc_timer_add_important_mark(int tag, const char *tagstr, void *id,
const char *file, int line);
void grpc_timer_begin(int tag, const char *tagstr, void *id, const char *file,
int line);
void grpc_timer_end(int tag, const char *tagstr, 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. */
@ -105,23 +108,25 @@ enum grpc_profiling_tags {
/* Generic profiling interface. */
#define GRPC_TIMER_MARK(tag, id) \
if (tag < GRPC_PTAG_IGNORE_THRESHOLD) { \
grpc_timer_add_mark(tag, ((void *)(gpr_intptr)(id)), __FILE__, __LINE__); \
grpc_timer_add_mark(tag, #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__); \
grpc_timer_add_important_mark(tag, #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__); \
grpc_timer_begin(tag, #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__); \
grpc_timer_end(tag, #tag, ((void *)(gpr_intptr)(id)), __FILE__, __LINE__); \
}
#ifdef GRPC_STAP_PROFILER

Loading…
Cancel
Save