You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@trafficserver.apache.org by bc...@apache.org on 2010/03/12 03:16:23 UTC
svn commit: r922117 - in /incubator/trafficserver/traffic/trunk:
configure.ac proxy/Main.cc proxy/Makefile.am proxy/signals.cc
Author: bcall
Date: Fri Mar 12 02:16:23 2010
New Revision: 922117
URL: http://svn.apache.org/viewvc?rev=922117&view=rev
Log:
TS-240 Support to build traffic server with Google's profiler for
profiling the code.
Modified:
incubator/trafficserver/traffic/trunk/configure.ac
incubator/trafficserver/traffic/trunk/proxy/Main.cc
incubator/trafficserver/traffic/trunk/proxy/Makefile.am
incubator/trafficserver/traffic/trunk/proxy/signals.cc
Modified: incubator/trafficserver/traffic/trunk/configure.ac
URL: http://svn.apache.org/viewvc/incubator/trafficserver/traffic/trunk/configure.ac?rev=922117&r1=922116&r2=922117&view=diff
==============================================================================
--- incubator/trafficserver/traffic/trunk/configure.ac (original)
+++ incubator/trafficserver/traffic/trunk/configure.ac Fri Mar 12 02:16:23 2010
@@ -326,6 +326,15 @@ if test "${with_sqlite3}" = "no" -a "${w
AC_MSG_ERROR([Need at least one DB backend, --with-sqlite3 and --with-libdb are supported])
fi
+# Google profiler
+AC_MSG_CHECKING([whether to enable profiler])
+AC_ARG_WITH([profiler],
+ [AS_HELP_STRING([--with-profiler],[enable support for profiler [default=no]])],
+ [with_profiler=$withval],
+ [with_profiler=no]
+)
+AC_MSG_RESULT([$with_sqlite3])
+
#
# Installation directories
@@ -692,6 +701,14 @@ else
AC_MSG_FAILURE([No suitable polling interface found])
fi
+if test "x${with_profiler}" = "xyes"; then
+ AC_CHECK_LIB([profiler], [ProfilerStart],
+ [AC_SUBST([LIBPROFILER], ["-lprofiler"])
+ AC_DEFINE([HAVE_PROFILER])
+ ],
+ [AC_MSG_FAILURE([check for profiler failed. Have you installed google-perftools-devel?])],
+ )
+fi
# For SunPro 5.2 - we need the demangle symbol for
# ink_stack_trace.cc in libinktomi++. Because this
@@ -807,6 +824,11 @@ AC_CHECK_HEADERS([sqlite3.h \
], [], [])
fi
+if test "x${with_profiler}" = "xyes"; then
+AC_CHECK_HEADERS([google/profiler.h \
+ ], [], [])
+fi
+
APR_CHECK_GETHOSTBYNAME_R_STYLE
@@ -965,6 +987,7 @@ AH_TEMPLATE([solaris],[solaris])
AH_TEMPLATE([FIXME_NONMODULAR],[FIXME_NONMODULAR])
AH_TEMPLATE([SPLIT_DNS],[SPLIT_DNS])
AH_TEMPLATE([NON_MODULAR],[NON_MODULAR])
+AH_TEMPLATE([HAVE_PROFILER],[HAVE_PROFILER])
AC_OUTPUT
Modified: incubator/trafficserver/traffic/trunk/proxy/Main.cc
URL: http://svn.apache.org/viewvc/incubator/trafficserver/traffic/trunk/proxy/Main.cc?rev=922117&r1=922116&r2=922117&view=diff
==============================================================================
--- incubator/trafficserver/traffic/trunk/proxy/Main.cc (original)
+++ incubator/trafficserver/traffic/trunk/proxy/Main.cc Fri Mar 12 02:16:23 2010
@@ -30,8 +30,6 @@
****************************************************************************/
-
-
#include "inktomi++.h"
#if (HOST_OS != linux)
#include <sys/lock.h>
@@ -105,6 +103,11 @@ extern "C" int plock(int);
#include "RemapProcessor.h"
#include "XmlUtils.h"
+
+#ifdef HAVE_PROFILER
+#include <google/profiler.h>
+#endif
+
//
// Global Data
//
@@ -1682,6 +1685,7 @@ change_uid_gid(const char *user)
}
+
//
// Main
//
@@ -1689,6 +1693,9 @@ change_uid_gid(const char *user)
int
main(int argc, char **argv)
{
+#ifdef HAVE_PROFILER
+ ProfilerStart("/tmp/ts.prof");
+#endif
int mem_throttling;
NOWARN_UNUSED(argc);
Modified: incubator/trafficserver/traffic/trunk/proxy/Makefile.am
URL: http://svn.apache.org/viewvc/incubator/trafficserver/traffic/trunk/proxy/Makefile.am?rev=922117&r1=922116&r2=922117&view=diff
==============================================================================
--- incubator/trafficserver/traffic/trunk/proxy/Makefile.am (original)
+++ incubator/trafficserver/traffic/trunk/proxy/Makefile.am Fri Mar 12 02:16:23 2010
@@ -173,7 +173,7 @@ traffic_server_LDADD = \
@LIBTHREAD@ @LIBSOCKET@ @LIBNSL@ @LIBRESOLV@ @LIBRT@ \
@LIBREGEX@ @LIBPCRE@ @LIBDB@ @LIBSQLITE3@ @LIBSSL@ @LIBTCL@ @LIBDL@ \
@LIBEXPAT@ @LIBDEMANGLE@ @LIBICONV@ \
- @LIBMLD@ @LIBEXC@ @LIBM@ @LIBEV@
+ @LIBMLD@ @LIBEXC@ @LIBM@ @LIBEV@ @LIBPROFILER@
traffic_logcat_SOURCES = logcat.cc
traffic_logcat_LDFLAGS = @EXTRA_CXX_LDFLAGS@
@@ -231,7 +231,7 @@ traffic_logcat_LDADD = \
$(top_builddir)/libinktomi++/libinktomi++.a \
@LIBTHREAD@ @LIBSOCKET@ @LIBNSL@ @LIBRESOLV@ @LIBRT@ \
@LIBREGEX@ @LIBPCRE@ @LIBDB@ @LIBSQLITE3@ @LIBSSL@ @LIBTCL@ @LIBDL@ @LIBEV@ \
- @LIBEXPAT@ @LIBDEMANGLE@ @LIBMLD@ @LIBEXC@ @LIBICONV@ @LIBM@
+ @LIBEXPAT@ @LIBDEMANGLE@ @LIBMLD@ @LIBEXC@ @LIBICONV@ @LIBM@ @LIBPROFILER@
traffic_logstats_SOURCES = logstats.cc
traffic_logstats_LDFLAGS = @EXTRA_CXX_LDFLAGS@
@@ -291,7 +291,7 @@ traffic_logstats_LDADD = \
$(top_builddir)/libinktomi++/libinktomi++.a \
@LIBTHREAD@ @LIBSOCKET@ @LIBNSL@ @LIBRESOLV@ @LIBRT@ \
@LIBREGEX@ @LIBPCRE@ @LIBDB@ @LIBSQLITE3@ @LIBSSL@ @LIBTCL@ @LIBDL@ @LIBEV@ \
- @LIBEXPAT@ @LIBDEMANGLE@ @LIBMLD@ @LIBEXC@ @LIBICONV@ @LIBM@
+ @LIBEXPAT@ @LIBDEMANGLE@ @LIBMLD@ @LIBEXC@ @LIBICONV@ @LIBM@ @LIBPROFILER@
traffic_sac_SOURCES = sac.cc
traffic_sac_LDFLAGS = @EXTRA_CXX_LDFLAGS@
@@ -349,7 +349,7 @@ traffic_sac_LDADD = \
$(top_builddir)/libinktomi++/libinktomi++.a \
@LIBTHREAD@ @LIBSOCKET@ @LIBNSL@ @LIBRESOLV@ @LIBRT@ \
@LIBREGEX@ @LIBPCRE@ @LIBDB@ @LIBSQLITE3@ @LIBSSL@ @LIBTCL@ @LIBDL@ @LIBEV@ \
- @LIBEXPAT@ @LIBDEMANGLE@ @LIBMLD@ @LIBEXC@ @LIBICONV@ @LIBM@
+ @LIBEXPAT@ @LIBDEMANGLE@ @LIBMLD@ @LIBEXC@ @LIBICONV@ @LIBM@ @LIBPROFILER@
traffic_cust_log_fmt_cnvrt_SOURCES = cust_log_fmt_cnvrt.cc
traffic_cust_log_fmt_cnvrt_LDADD = \
Modified: incubator/trafficserver/traffic/trunk/proxy/signals.cc
URL: http://svn.apache.org/viewvc/incubator/trafficserver/traffic/trunk/proxy/signals.cc?rev=922117&r1=922116&r2=922117&view=diff
==============================================================================
--- incubator/trafficserver/traffic/trunk/proxy/signals.cc (original)
+++ incubator/trafficserver/traffic/trunk/proxy/signals.cc Fri Mar 12 02:16:23 2010
@@ -27,6 +27,7 @@
**************************************************************************/
+
#include "inktomi++.h"
#include <unistd.h>
#include "signals.h"
@@ -40,16 +41,20 @@
// For backtraces on crash
#include "ink_stack_trace.h"
+
#ifdef __alpha
#include <obj.h>
#include <sym.h>
#include <demangle.h>
#include <ucontext.h>
#include <excpt.h>
-
struct obj_list *ObjList;
#endif
+#ifdef HAVE_PROFILER
+#include <google/profiler.h>
+#endif
+
#if (HOST_OS != linux) && (HOST_OS != freebsd)
typedef void (*SigActionFunc_t) (int sig, siginfo_t * t, void *f);
#else
@@ -220,6 +225,7 @@ print_context(sigcontext & c, int frame)
#endif
+
static void
interrupt_handler(int sig)
{
@@ -316,6 +322,9 @@ signal_handler(int sig, siginfo_t * t, v
//syslog(LOG_ERR, sig_msg);
#endif
+#ifdef HAVE_PROFILER
+ ProfilerStop();
+#endif
shutdown_system();
// Make sure to drop a core for signals that normally