]> err.no Git - varnish/commitdiff
Use jemalloc by default on Linux
authortfheen <tfheen@d4fa192b-c00b-0410-8231-f00ffab90ce4>
Wed, 24 Sep 2008 12:41:29 +0000 (12:41 +0000)
committertfheen <tfheen@d4fa192b-c00b-0410-8231-f00ffab90ce4>
Wed, 24 Sep 2008 12:41:29 +0000 (12:41 +0000)
We seem to run into trouble with regular glibc malloc on Linux, so use
jemalloc instead of glibc's malloc.

This can be disabled using --disable-jemalloc

git-svn-id: svn+ssh://projects.linpro.no/svn/varnish/trunk@3216 d4fa192b-c00b-0410-8231-f00ffab90ce4

varnish-cache/bin/varnishd/Makefile.am
varnish-cache/configure.ac
varnish-cache/lib/Makefile.am
varnish-cache/lib/libjemalloc/Makefile [deleted file]
varnish-cache/lib/libjemalloc/Makefile.am [new file with mode: 0644]

index 81f0e8e88276ada179164ca08f49a8134733b021..f43e2af277cddef86018d5b5549c4c8a2120d9ec 100644 (file)
@@ -79,6 +79,7 @@ varnishd_LDADD = \
        $(top_builddir)/lib/libvarnish/libvarnish.la \
        $(top_builddir)/lib/libvarnishcompat/libvarnishcompat.la \
        $(top_builddir)/lib/libvcl/libvcl.la \
+       @JEMALLOC_LDADD@ \
        ${DL_LIBS} ${PTHREAD_LIBS} ${NET_LIBS} ${LIBM}
 
 EXTRA_DIST = default.vcl
index a8d01ee4b09120b96807cc7eaf087e0925941d38..8f9ee910bac608f98a700527a959096a948f0ef9 100644 (file)
@@ -340,6 +340,28 @@ esac
 
 AC_DEFINE_UNQUOTED([VCC_CC],"$VCC_CC",[C compiler command line for VCL code])
 
+# Use jemalloc on Linux
+JEMALLOC_SUBDIR=
+JEMALLOC_LDADD=
+AC_ARG_ENABLE(jemalloc,
+AS_HELP_STRING([--disable-jemalloc],[do not use jemalloc (default is yes on Linux, no everywhere else)]),
+[if "x$enableval" = "xyes"; then
+       JEMALLOC_SUBDIR=libjemalloc
+       JEMALLOC_LDADD='$(top_builddir)/lib/libjemalloc/libjemalloc_mt.la'
+fi],
+[case $host in #(
+*-*-linux*)
+       JEMALLOC_SUBDIR=libjemalloc
+       JEMALLOC_LDADD='$(top_builddir)/lib/libjemalloc/libjemalloc_mt.la'
+       ;; #(
+*)
+       true
+       ;;
+esac])
+
+AC_SUBST(JEMALLOC_SUBDIR)
+AC_SUBST(JEMALLOC_LDADD)
+
 # Generate output
 AC_CONFIG_FILES([
     Makefile
@@ -361,6 +383,7 @@ AC_CONFIG_FILES([
     lib/libvarnishapi/Makefile
     lib/libvarnishcompat/Makefile
     lib/libvcl/Makefile
+    lib/libjemalloc/Makefile
     man/Makefile
     redhat/Makefile
     varnishapi.pc
index b6fc8fc928e1e02a20d8ba7275b19b6c88cb0c51..e757b3d1ec1a9386c2c300b51cf4497c841f7e34 100644 (file)
@@ -4,4 +4,5 @@ SUBDIRS = \
        libvarnish \
        libvarnishapi \
        libvarnishcompat \
-       libvcl
+       libvcl \
+       @JEMALLOC_SUBDIR@
diff --git a/varnish-cache/lib/libjemalloc/Makefile b/varnish-cache/lib/libjemalloc/Makefile
deleted file mode 100644 (file)
index 49f4197..0000000
+++ /dev/null
@@ -1,23 +0,0 @@
-CFLAGS := -O3 -g
-# See source code comments to avoid memory leaks when enabling MALLOC_MAG.
-#CPPFLAGS := -DMALLOC_PRODUCTION -DMALLOC_MAG
-CPPFLAGS := -DMALLOC_PRODUCTION
-
-all: libjemalloc.so.0 libjemalloc_mt.so.0
-
-jemalloc_linux_mt.o: jemalloc_linux.c
-       gcc $(CFLAGS) -c -DPIC -fPIC $(CPPFLAGS) -D__isthreaded=true -o $@ $+
-
-jemalloc_linux.o: jemalloc_linux.c
-       gcc $(CFLAGS) -c -DPIC -fPIC $(CPPFLAGS) -D__isthreaded=false -o $@ $+
-
-libjemalloc_mt.so.0: jemalloc_linux_mt.o
-       gcc -shared -lpthread -o $@ $+
-       ln -sf $@ libjemalloc_mt.so
-
-libjemalloc.so.0: jemalloc_linux.o
-       gcc -shared -lpthread -o $@ $+
-       ln -sf $@ libjemalloc.so
-
-clean:
-       rm -f *.o *.so.0 *.so
diff --git a/varnish-cache/lib/libjemalloc/Makefile.am b/varnish-cache/lib/libjemalloc/Makefile.am
new file mode 100644 (file)
index 0000000..1deecde
--- /dev/null
@@ -0,0 +1,27 @@
+# See source code comments to avoid memory leaks when enabling MALLOC_MAG.
+#CPPFLAGS := -DMALLOC_PRODUCTION -DMALLOC_MAG
+AM_CPPFLAGS := -DMALLOC_PRODUCTION
+
+#all: libjemalloc.so.0 libjemalloc_mt.so.0
+
+noinst_LTLIBRARIES = libjemalloc_mt.la
+
+libjemalloc_mt_la_LIBADD = ${PTHREAD_LIBS}
+libjemalloc_mt_la_LDFLAGS = -version-info 0:0:0 -static
+libjemalloc_mt_la_CFLAGS = -D__isthreaded=true
+
+libjemalloc_mt_la_SOURCES = jemalloc_linux.c
+
+#jemalloc_linux.o: jemalloc_linux.c
+#      gcc $(CFLAGS) -c -DPIC -fPIC $(CPPFLAGS) -D__isthreaded=false -o $@ $+
+
+#libjemalloc_mt.so.0: jemalloc_linux_mt.o
+#      gcc -shared -lpthread -o $@ $+
+#      ln -sf $@ libjemalloc_mt.so
+
+#libjemalloc.so.0: jemalloc_linux.o
+#      gcc -shared -lpthread -o $@ $+
+#      ln -sf $@ libjemalloc.so
+
+#clean:
+#      rm -f *.o *.so.0 *.so