You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@trafficserver.apache.org by zw...@apache.org on 2011/06/17 19:04:48 UTC
svn commit: r1136939 - in /trafficserver/traffic/trunk: CHANGES configure.ac
lib/ts/Makefile.am lib/ts/ink_config.h.in lib/ts/ink_defs.cc
proxy/Initialize.cc proxy/Makefile.am
Author: zwoop
Date: Fri Jun 17 17:04:48 2011
New Revision: 1136939
URL: http://svn.apache.org/viewvc?rev=1136939&view=rev
Log:
TS-648 Use hwloc library when available. This can be disabled
with --disable-hwloc.
TS-398 Autoscaling threads vs Hyper Threading. This requires support
for hwloc as well.
Modified:
trafficserver/traffic/trunk/CHANGES
trafficserver/traffic/trunk/configure.ac
trafficserver/traffic/trunk/lib/ts/Makefile.am
trafficserver/traffic/trunk/lib/ts/ink_config.h.in
trafficserver/traffic/trunk/lib/ts/ink_defs.cc
trafficserver/traffic/trunk/proxy/Initialize.cc
trafficserver/traffic/trunk/proxy/Makefile.am
Modified: trafficserver/traffic/trunk/CHANGES
URL: http://svn.apache.org/viewvc/trafficserver/traffic/trunk/CHANGES?rev=1136939&r1=1136938&r2=1136939&view=diff
==============================================================================
--- trafficserver/traffic/trunk/CHANGES (original)
+++ trafficserver/traffic/trunk/CHANGES Fri Jun 17 17:04:48 2011
@@ -1,6 +1,12 @@
-*- coding: utf-8 -*-
Changes with Apache Traffic Server 3.1.0
+ *) [TS-648] Use hwloc library when available. This can be disabled
+ with --disable-hwloc.
+
+ *) [TS-398] Autoscaling threads vs Hyper Threading. This requires
+ support for hwloc as well.
+
*) [TS-760] Cleanup mgmt types.
*) [TS-359] Remove DIR_SEP and use slash directly.
Modified: trafficserver/traffic/trunk/configure.ac
URL: http://svn.apache.org/viewvc/trafficserver/traffic/trunk/configure.ac?rev=1136939&r1=1136938&r2=1136939&view=diff
==============================================================================
--- trafficserver/traffic/trunk/configure.ac (original)
+++ trafficserver/traffic/trunk/configure.ac Fri Jun 17 17:04:48 2011
@@ -343,6 +343,17 @@ AC_ARG_ENABLE([posix-cap],
AC_MSG_RESULT([$enable_posix_cap])
#
+# use hwloc library when possible (can be disabled)
+#
+AC_MSG_CHECKING([whether to use hwloc library])
+AC_ARG_ENABLE([hwloc],
+ [AS_HELP_STRING([--disable-hwloc],[Don't use the hwloc library])],
+ [],
+ [enable_hwloc="yes"]
+)
+AC_MSG_RESULT([$enable_hwloc])
+
+#
# Enble ccache explicitly (it's disabled by default, because of build problems in some cases)
#
AC_MSG_CHECKING([whether to enable ccache])
@@ -938,6 +949,21 @@ AS_IF([test "x$enable_posix_cap" = "xyes
)
)
AC_SUBST(use_posix_cap)
+
+# Check for hwloc library.
+# If we don't find it, disable checking for header.
+use_hwloc=0
+AS_IF([test "x$enable_hwloc" = "xyes"],
+ AC_CHECK_LIB([hwloc],[hwloc_topology_init],
+ [AC_SUBST([LIBHWLOC], ["-lhwloc"])
+ use_hwloc=1
+ ],
+ [enable_hwloc=no]
+ )
+)
+AC_SUBST(use_hwloc)
+
+
# -----------------------------------------------------------------------------
# 5. CHECK FOR HEADER FILES
@@ -1052,6 +1078,14 @@ if test "x${enable_posix_cap}" = "xyes";
)
fi
+if test "x${enable_hwloc}" = "xyes"; then
+ AC_CHECK_HEADERS([hwloc.h],
+ [],
+ [AC_MSG_FAILURE([hwloc header not found. Try --disable-hwloc])],
+ []
+ )
+fi
+
#
# Configure sockopt value for TPROXY. Look at the enable flag.
# Value 'no' means user forced disable, don't check anything else.
Modified: trafficserver/traffic/trunk/lib/ts/Makefile.am
URL: http://svn.apache.org/viewvc/trafficserver/traffic/trunk/lib/ts/Makefile.am?rev=1136939&r1=1136938&r2=1136939&view=diff
==============================================================================
--- trafficserver/traffic/trunk/lib/ts/Makefile.am (original)
+++ trafficserver/traffic/trunk/lib/ts/Makefile.am Fri Jun 17 17:04:48 2011
@@ -23,7 +23,7 @@ TESTS = $(check_PROGRAMS)
lib_LTLIBRARIES = libtsutil.la
libtsutil_la_LDFLAGS = -no-undefined -version-info @TS_LIBTOOL_VERSION@
-libtsutil_la_LIBADD = @LIBOBJS@ @LIBPCRE@ @LIBSSL@ @LIBTCL@ @LIBRESOLV@ @LIBRT@ @LIBICONV@ @LIBSOCKET@ @LIBNSL@ @LIBCAP@ -lc
+libtsutil_la_LIBADD = @LIBOBJS@ @LIBPCRE@ @LIBSSL@ @LIBTCL@ @LIBRESOLV@ @LIBRT@ @LIBICONV@ @LIBSOCKET@ @LIBNSL@ @LIBCAP@ @LIBHWLOC@ -lc
libtsutil_la_SOURCES = \
Allocator.cc \
Modified: trafficserver/traffic/trunk/lib/ts/ink_config.h.in
URL: http://svn.apache.org/viewvc/trafficserver/traffic/trunk/lib/ts/ink_config.h.in?rev=1136939&r1=1136938&r2=1136939&view=diff
==============================================================================
--- trafficserver/traffic/trunk/lib/ts/ink_config.h.in (original)
+++ trafficserver/traffic/trunk/lib/ts/ink_config.h.in Fri Jun 17 17:04:48 2011
@@ -106,6 +106,7 @@
#define TS_USE_PORT @use_port@
#define TS_USE_POSIX_CAP @use_posix_cap@
#define TS_USE_TPROXY @use_tproxy@
+#define TS_USE_HWLOC @use_hwloc@
/* OS API definitions */
#define GETHOSTBYNAME_R_HOSTENT_DATA @gethostbyname_r_hostent_data@
Modified: trafficserver/traffic/trunk/lib/ts/ink_defs.cc
URL: http://svn.apache.org/viewvc/trafficserver/traffic/trunk/lib/ts/ink_defs.cc?rev=1136939&r1=1136938&r2=1136939&view=diff
==============================================================================
--- trafficserver/traffic/trunk/lib/ts/ink_defs.cc (original)
+++ trafficserver/traffic/trunk/lib/ts/ink_defs.cc Fri Jun 17 17:04:48 2011
@@ -43,6 +43,25 @@
int off = 0;
int on = 1;
+#if TS_USE_HWLOC
+#include <hwloc.h>
+static hwloc_topology_t gTopology;
+static bool hwloc_setup = false;
+
+// Little helper to initialize the hwloc topology, once.
+void static inline
+setup_hwloc()
+{
+ if (hwloc_setup)
+ return;
+
+ hwloc_topology_init(&gTopology);
+ hwloc_topology_load(gTopology);
+
+ hwloc_setup = true;
+}
+#endif
+
int
ink_sys_name_release(char *name, int namelen, char *release, int releaselen)
{
@@ -93,6 +112,18 @@ ink_sys_name_release(char *name, int nam
int
ink_number_of_processors()
{
+#if TS_USE_HWLOC
+ int cu;
+ int pu;
+
+ setup_hwloc();
+ cu = hwloc_get_nbobjs_by_type(gTopology, HWLOC_OBJ_CORE);
+ pu = hwloc_get_nbobjs_by_type(gTopology, HWLOC_OBJ_PU);
+ if (pu > cu)
+ return cu + (pu - cu)/4;
+ else
+ return cu;
+#else
#if defined(freebsd)
int mib[2], n;
mib[0] = CTL_HW;
@@ -102,6 +133,8 @@ ink_number_of_processors()
return 1;
return n;
#else
- return sysconf(_SC_NPROCESSORS_ONLN); // number of Net threads
-#endif
+ return sysconf(_SC_NPROCESSORS_ONLN); // number of processing units (includes Hyper Threading)
+#endif /* freebsd */
+
+#endif /* TS_HAVE_HWLOC_H */
}
Modified: trafficserver/traffic/trunk/proxy/Initialize.cc
URL: http://svn.apache.org/viewvc/trafficserver/traffic/trunk/proxy/Initialize.cc?rev=1136939&r1=1136938&r2=1136939&view=diff
==============================================================================
--- trafficserver/traffic/trunk/proxy/Initialize.cc (original)
+++ trafficserver/traffic/trunk/proxy/Initialize.cc Fri Jun 17 17:04:48 2011
@@ -27,8 +27,6 @@
Created On : Fri Feb 5 18:22:05 1999
Description:
-
-
****************************************************************************/
#include "libts.h"
@@ -179,15 +177,6 @@ init_system_syslog_log_configure(void)
}
-/*
-void
-init_system_logging()
-{
- // iObject::Init();
- // iLogBufferBuffer::Init();
-}
-*/
-
void
init_system_adjust_num_of_net_threads(void)
{
Modified: trafficserver/traffic/trunk/proxy/Makefile.am
URL: http://svn.apache.org/viewvc/trafficserver/traffic/trunk/proxy/Makefile.am?rev=1136939&r1=1136938&r2=1136939&view=diff
==============================================================================
--- trafficserver/traffic/trunk/proxy/Makefile.am (original)
+++ trafficserver/traffic/trunk/proxy/Makefile.am Fri Jun 17 17:04:48 2011
@@ -162,7 +162,7 @@ traffic_server_LDADD = \
$(which_libts) \
@LIBTHREAD@ @LIBSOCKET@ @LIBNSL@ @LIBRESOLV@ @LIBRT@ \
@LIBPCRE@ @LIBSSL@ @LIBTCL@ @LIBDL@ \
- @LIBEXPAT@ @LIBDEMANGLE@ @LIBICONV@ @LIBCAP@ \
+ @LIBEXPAT@ @LIBDEMANGLE@ @LIBICONV@ @LIBCAP@ @LIBHWLOC@ \
@LIBMLD@ @LIBEXC@ -lm @LIBEV@ @LIBPROFILER@ @LIBEXECINFO@
traffic_logcat_SOURCES = logcat.cc