Skip to content

Commit

Permalink
jemalloc-support: Added --with-jemalloc configure option
Browse files Browse the repository at this point in the history
If --with-jemalloc option is not specified, then it defaults to tcmalloc.

If --with-jemalloc is specified, then --without-tcmalloc is required.
Also if a rocksdb static linking is desired --with-librocksdb-static,
do not use --with-jemalloc, as rocksdb uses tcmalloc for builds.

Support for jemalloc in package build and perf stats/heap profiler is
underway

Signed-off-by: shishir gowda <[email protected]>
  • Loading branch information
shishirng committed Dec 15, 2014
1 parent 6010f17 commit 973e9f7
Show file tree
Hide file tree
Showing 3 changed files with 43 additions and 1 deletion.
32 changes: 32 additions & 0 deletions configure.ac
Original file line number Diff line number Diff line change
Expand Up @@ -403,6 +403,30 @@ AS_IF([test "x$with_tcmalloc" != xno],
[no tcmalloc found (use --without-tcmalloc to disable)])])])
AM_CONDITIONAL(WITH_TCMALLOC, [test "$HAVE_LIBTCMALLOC" = "1"])

# jemalloc?
AC_ARG_WITH([jemalloc],
[AS_HELP_STRING([--with-jemalloc], [enable jemalloc for memory allocations])],
[],
[with_jemalloc=no])
JEMALLOC=
AS_IF([test "x$with_jemalloc" = xyes],
[AC_CHECK_LIB([jemalloc], [malloc],
[AC_SUBST([LIBJEMALLOC], ["-ljemalloc"])
AC_DEFINE([HAVE_LIBJEMALLOC], [1],
[Define if you have jemalloc])
HAVE_LIBJEMALLOC=1
],
[AC_MSG_FAILURE(
[no jemalloc found (do not use --with-jemalloc)])])])
AM_CONDITIONAL(WITH_JEMALLOC, [test "$HAVE_LIBJEMALLOC" = "1"])

# error out if --with-jemalloc and ! --without-tcmalloc
if test "x$with_jemalloc" = "xyes"; then
if test "x$with_tcmalloc" != "xno"; then
AC_MSG_FAILURE([--with-jemalloc called without --without-tcmalloc])
fi
fi

#set pg ref debugging?
AC_ARG_ENABLE([pgrefdebugging],
[AS_HELP_STRING([--enable-pgrefdebugging], [enable pg ref debugging])],
Expand Down Expand Up @@ -596,6 +620,14 @@ AS_IF([test "x$with_librocksdb_static" = "xyes"],
AM_CONDITIONAL(WITH_SLIBROCKSDB, [ test "x$with_librocksdb_static" = "xyes" ])
AM_CONDITIONAL(WITH_LIBROCKSDB, [ test "x$with_librocksdb_static" = "xyes" -o "x$with_librocksdb" = "xyes" ])

# error out if --with-jemalloc and --with-librocksdb_static as rocksdb uses tcmalloc
if test "x$with_jemalloc" = "xyes"; then
if test "x$with_librocksdb_static" != "xno"; then
AC_MSG_FAILURE([--with-jemalloc called with --with-librocksdb_static, turn off
--with-librocksdb-static or --with-jemalloc])
fi
fi

# use system libs3?
AC_ARG_WITH([system-libs3],
[AS_HELP_STRING([--with-system-libs3], [use system libs3])],
Expand Down
5 changes: 4 additions & 1 deletion do_autogen.sh
Original file line number Diff line number Diff line change
Expand Up @@ -18,6 +18,7 @@ do_autogen.sh: make a ceph build by running autogen, etc.
-c use cryptopp
-j with java
-r with rocksdb
-J --with-jemalloc
EOF
}
Expand All @@ -31,7 +32,7 @@ debug_level=0
verbose=0
profile=0
CONFIGURE_FLAGS="--disable-static"
while getopts "d:e:hHrTPjpcvO:" flag
while getopts "d:e:hHrTPJjpcvO:" flag
do
case $flag in
d) debug_level=$OPTARG;;
Expand All @@ -56,6 +57,8 @@ do

e) encode_dump=$OPTARG;;

J) CONFIGURE_FLAGS="$CONFIGURE_FLAGS --with-jemalloc";;

*)
echo
usage
Expand Down
7 changes: 7 additions & 0 deletions src/Makefile-env.am
Original file line number Diff line number Diff line change
Expand Up @@ -177,6 +177,13 @@ if WITH_TCMALLOC
LIBPERFGLUE += -ltcmalloc
endif # WITH_TCMALLOC

if WITH_JEMALLOC
LIBMON += -ljemalloc
LIBOSD += -ljemalloc
LIBMDS += -ljemalloc
LIBRGW += -ljemalloc
endif # WITH_JEMALLOC

if ENABLE_COVERAGE
EXTRALIBS += -lgcov
endif # ENABLE_COVERAGE
Expand Down

0 comments on commit 973e9f7

Please sign in to comment.