Skip to content

Commit

Permalink
Opportunistically use perftools if installed.
Browse files Browse the repository at this point in the history
Allows us to collect profiles of the open source build using gprof.
  • Loading branch information
ctiller committed Jan 15, 2015
1 parent fbf4051 commit 297fafa
Show file tree
Hide file tree
Showing 5 changed files with 40 additions and 3 deletions.
13 changes: 10 additions & 3 deletions .gitignore
Original file line number Diff line number Diff line change
@@ -1,8 +1,15 @@
# C/C++ build outputs
bins
coverage
deps
*.gcno
gens
libs
objs

# gcov coverage data
coverage
*.gcno

# profiler output
*.prof

# python compiled objects
*.pyc
7 changes: 7 additions & 0 deletions Makefile
Original file line number Diff line number Diff line change
Expand Up @@ -172,6 +172,13 @@ endif

OPENSSL_ALPN_CHECK_CMD = $(CC) $(CFLAGS) $(CPPFLAGS) -o /dev/null test/build/openssl-alpn.c -lssl -lcrypto -ldl $(LDFLAGS)
ZLIB_CHECK_CMD = $(CC) $(CFLAGS) $(CPPFLAGS) -o /dev/null test/build/zlib.c -lz $(LDFLAGS)
PERFTOOLS_CHECK_CMD = $(CC) $(CFLAGS) $(CPPFLAGS) -o /dev/null test/build/perftools.c -lprofiler $(LDFLAGS)

HAS_SYSTEM_PERFTOOLS = $(shell $(PERFTOOLS_CHECK_CMD) 2> /dev/null && echo true || echo false)
ifeq ($(HAS_SYSTEM_PERFTOOLS),true)
DEFINES += GRPC_HAVE_PERFTOOLS
LIBS += profiler
endif

ifndef REQUIRE_CUSTOM_LIBRARIES_$(CONFIG)
HAS_SYSTEM_OPENSSL_ALPN = $(shell $(OPENSSL_ALPN_CHECK_CMD) 2> /dev/null && echo true || echo false)
Expand Down
7 changes: 7 additions & 0 deletions templates/Makefile.template
Original file line number Diff line number Diff line change
Expand Up @@ -189,6 +189,13 @@ endif

OPENSSL_ALPN_CHECK_CMD = $(CC) $(CFLAGS) $(CPPFLAGS) -o /dev/null test/build/openssl-alpn.c -lssl -lcrypto -ldl $(LDFLAGS)
ZLIB_CHECK_CMD = $(CC) $(CFLAGS) $(CPPFLAGS) -o /dev/null test/build/zlib.c -lz $(LDFLAGS)
PERFTOOLS_CHECK_CMD = $(CC) $(CFLAGS) $(CPPFLAGS) -o /dev/null test/build/perftools.c -lprofiler $(LDFLAGS)

HAS_SYSTEM_PERFTOOLS = $(shell $(PERFTOOLS_CHECK_CMD) 2> /dev/null && echo true || echo false)
ifeq ($(HAS_SYSTEM_PERFTOOLS),true)
DEFINES += GRPC_HAVE_PERFTOOLS
LIBS += profiler
endif

ifndef REQUIRE_CUSTOM_LIBRARIES_$(CONFIG)
HAS_SYSTEM_OPENSSL_ALPN = $(shell $(OPENSSL_ALPN_CHECK_CMD) 2> /dev/null && echo true || echo false)
Expand Down
7 changes: 7 additions & 0 deletions test/build/perftools.c
Original file line number Diff line number Diff line change
@@ -0,0 +1,7 @@
#include <gperftools/profiler.h>

int main() {
ProfilerStart("/dev/null");
ProfilerStop();
return 0;
}
9 changes: 9 additions & 0 deletions test/core/util/grpc_profiler.c
Original file line number Diff line number Diff line change
Expand Up @@ -33,6 +33,15 @@

#include "test/core/util/grpc_profiler.h"

#if GRPC_HAVE_PERFTOOLS
#include <gperftools/profiler.h>

void grpc_profiler_start(const char *filename) { ProfilerStart(filename); }

void grpc_profiler_stop() { ProfilerStop(); }
#else

void grpc_profiler_start(const char *filename) {}

void grpc_profiler_stop(void) {}
#endif

0 comments on commit 297fafa

Please sign in to comment.