summaryrefslogtreecommitdiff
path: root/deps/jemalloc/INSTALL
diff options
context:
space:
mode:
authorantirez <antirez@gmail.com>2011-06-25 12:29:24 +0200
committerantirez <antirez@gmail.com>2011-06-25 12:29:24 +0200
commit994ed2bc552f4114b1f0c8dd3fd8aefaec6beeae (patch)
tree16c7f8d3c7f050a5cda04488d48109ee7f02b6fb /deps/jemalloc/INSTALL
parent45ec3243f8205ff8d356a5175026052070211d91 (diff)
parentd5b36c5114659e979fc2e102954ded1e30aacacf (diff)
downloadredis-994ed2bc552f4114b1f0c8dd3fd8aefaec6beeae.tar.gz
unstable merge conflicts resolved
Diffstat (limited to 'deps/jemalloc/INSTALL')
-rw-r--r--deps/jemalloc/INSTALL251
1 files changed, 251 insertions, 0 deletions
diff --git a/deps/jemalloc/INSTALL b/deps/jemalloc/INSTALL
new file mode 100644
index 000000000..11a457aeb
--- /dev/null
+++ b/deps/jemalloc/INSTALL
@@ -0,0 +1,251 @@
+Building and installing jemalloc can be as simple as typing the following while
+in the root directory of the source tree:
+
+ ./configure
+ make
+ make install
+
+=== Advanced configuration =====================================================
+
+The 'configure' script supports numerous options that allow control of which
+functionality is enabled, where jemalloc is installed, etc. Optionally, pass
+any of the following arguments (not a definitive list) to 'configure':
+
+--help
+ Print a definitive list of options.
+
+--prefix=<install-root-dir>
+ Set the base directory in which to install. For example:
+
+ ./configure --prefix=/usr/local
+
+ will cause files to be installed into /usr/local/include, /usr/local/lib,
+ and /usr/local/man.
+
+--with-rpath=<colon-separated-rpath>
+ Embed one or more library paths, so that libjemalloc can find the libraries
+ it is linked to. This works only on ELF-based systems.
+
+--with-jemalloc-prefix=<prefix>
+ Prefix all public APIs with <prefix>. For example, if <prefix> is
+ "prefix_", API changes like the following occur:
+
+ malloc() --> prefix_malloc()
+ malloc_conf --> prefix_malloc_conf
+ /etc/malloc.conf --> /etc/prefix_malloc.conf
+ MALLOC_CONF --> PREFIX_MALLOC_CONF
+
+ This makes it possible to use jemalloc at the same time as the system
+ allocator, or even to use multiple copies of jemalloc simultaneously.
+
+ By default, the prefix is "", except on OS X, where it is "je_". On OS X,
+ jemalloc overlays the default malloc zone, but makes no attempt to actually
+ replace the "malloc", "calloc", etc. symbols.
+
+--with-install-suffix=<suffix>
+ Append <suffix> to the base name of all installed files, such that multiple
+ versions of jemalloc can coexist in the same installation directory. For
+ example, libjemalloc.so.0 becomes libjemalloc<suffix>.so.0.
+
+--enable-cc-silence
+ Enable code that silences non-useful compiler warnings. This is helpful
+ when trying to tell serious warnings from those due to compiler
+ limitations, but it potentially incurs a performance penalty.
+
+--enable-debug
+ Enable assertions and validation code. This incurs a substantial
+ performance hit, but is very useful during application development.
+
+--enable-stats
+ Enable statistics gathering functionality. See the "opt.stats_print"
+ option documentation for usage details.
+
+--enable-prof
+ Enable heap profiling and leak detection functionality. See the "opt.prof"
+ option documentation for usage details. When enabled, there are several
+ approaches to backtracing, and the configure script chooses the first one
+ in the following list that appears to function correctly:
+
+ + libunwind (requires --enable-prof-libunwind)
+ + libgcc (unless --disable-prof-libgcc)
+ + gcc intrinsics (unless --disable-prof-gcc)
+
+--enable-prof-libunwind
+ Use the libunwind library (http://www.nongnu.org/libunwind/) for stack
+ backtracing.
+
+--disable-prof-libgcc
+ Disable the use of libgcc's backtracing functionality.
+
+--disable-prof-gcc
+ Disable the use of gcc intrinsics for backtracing.
+
+--with-static-libunwind=<libunwind.a>
+ Statically link against the specified libunwind.a rather than dynamically
+ linking with -lunwind.
+
+--disable-tiny
+ Disable tiny (sub-quantum-sized) object support. Technically it is not
+ legal for a malloc implementation to allocate objects with less than
+ quantum alignment (8 or 16 bytes, depending on architecture), but in
+ practice it never causes any problems if, for example, 4-byte allocations
+ are 4-byte-aligned.
+
+--disable-tcache
+ Disable thread-specific caches for small objects. Objects are cached and
+ released in bulk, thus reducing the total number of mutex operations. See
+ the "opt.tcache" option for usage details.
+
+--enable-swap
+ Enable mmap()ed swap file support. When this feature is built in, it is
+ possible to specify one or more files that act as backing store. This
+ effectively allows for per application swap files.
+
+--enable-dss
+ Enable support for page allocation/deallocation via sbrk(2), in addition to
+ mmap(2).
+
+--enable-fill
+ Enable support for junk/zero filling of memory. See the "opt.junk"/
+ "opt.zero" option documentation for usage details.
+
+--enable-xmalloc
+ Enable support for optional immediate termination due to out-of-memory
+ errors, as is commonly implemented by "xmalloc" wrapper function for malloc.
+ See the "opt.xmalloc" option documentation for usage details.
+
+--enable-sysv
+ Enable support for System V semantics, wherein malloc(0) returns NULL
+ rather than a minimal allocation. See the "opt.sysv" option documentation
+ for usage details.
+
+--enable-dynamic-page-shift
+ Under most conditions, the system page size never changes (usually 4KiB or
+ 8KiB, depending on architecture and configuration), and unless this option
+ is enabled, jemalloc assumes that page size can safely be determined during
+ configuration and hard-coded. Enabling dynamic page size determination has
+ a measurable impact on performance, since the compiler is forced to load
+ the page size from memory rather than embedding immediate values.
+
+--disable-lazy-lock
+ Disable code that wraps pthread_create() to detect when an application
+ switches from single-threaded to multi-threaded mode, so that it can avoid
+ mutex locking/unlocking operations while in single-threaded mode. In
+ practice, this feature usually has little impact on performance unless
+ thread-specific caching is disabled.
+
+--disable-tls
+ Disable thread-local storage (TLS), which allows for fast access to
+ thread-local variables via the __thread keyword. If TLS is available,
+ jemalloc uses it for several purposes.
+
+--with-xslroot=<path>
+ Specify where to find DocBook XSL stylesheets when building the
+ documentation.
+
+The following environment variables (not a definitive list) impact configure's
+behavior:
+
+CFLAGS="?"
+ Pass these flags to the compiler. You probably shouldn't define this unless
+ you know what you are doing. (Use EXTRA_CFLAGS instead.)
+
+EXTRA_CFLAGS="?"
+ Append these flags to CFLAGS. This makes it possible to add flags such as
+ -Werror, while allowing the configure script to determine what other flags
+ are appropriate for the specified configuration.
+
+ The configure script specifically checks whether an optimization flag (-O*)
+ is specified in EXTRA_CFLAGS, and refrains from specifying an optimization
+ level if it finds that one has already been specified.
+
+CPPFLAGS="?"
+ Pass these flags to the C preprocessor. Note that CFLAGS is not passed to
+ 'cpp' when 'configure' is looking for include files, so you must use
+ CPPFLAGS instead if you need to help 'configure' find header files.
+
+LD_LIBRARY_PATH="?"
+ 'ld' uses this colon-separated list to find libraries.
+
+LDFLAGS="?"
+ Pass these flags when linking.
+
+PATH="?"
+ 'configure' uses this to find programs.
+
+=== Advanced compilation =======================================================
+
+To install only parts of jemalloc, use the following targets:
+
+ install_bin
+ install_include
+ install_lib
+ install_doc
+
+To clean up build results to varying degrees, use the following make targets:
+
+ clean
+ distclean
+ relclean
+
+=== Advanced installation ======================================================
+
+Optionally, define make variables when invoking make, including (not
+exclusively):
+
+INCLUDEDIR="?"
+ Use this as the installation prefix for header files.
+
+LIBDIR="?"
+ Use this as the installation prefix for libraries.
+
+MANDIR="?"
+ Use this as the installation prefix for man pages.
+
+DESTDIR="?"
+ Prepend DESTDIR to INCLUDEDIR, LIBDIR, DATADIR, and MANDIR. This is useful
+ when installing to a different path than was specified via --prefix.
+
+CC="?"
+ Use this to invoke the C compiler.
+
+CFLAGS="?"
+ Pass these flags to the compiler.
+
+CPPFLAGS="?"
+ Pass these flags to the C preprocessor.
+
+LDFLAGS="?"
+ Pass these flags when linking.
+
+PATH="?"
+ Use this to search for programs used during configuration and building.
+
+=== Development ================================================================
+
+If you intend to make non-trivial changes to jemalloc, use the 'autogen.sh'
+script rather than 'configure'. This re-generates 'configure', enables
+configuration dependency rules, and enables re-generation of automatically
+generated source files.
+
+The build system supports using an object directory separate from the source
+tree. For example, you can create an 'obj' directory, and from within that
+directory, issue configuration and build commands:
+
+ autoconf
+ mkdir obj
+ cd obj
+ ../configure --enable-autogen
+ make
+
+=== Documentation ==============================================================
+
+The manual page is generated in both html and roff formats. Any web browser
+can be used to view the html manual. The roff manual page can be formatted
+prior to installation via any of the following commands:
+
+ nroff -man -t doc/jemalloc.3
+
+ groff -man -t -Tps doc/jemalloc.3 | ps2pdf - doc/jemalloc.3.pdf
+
+ (cd doc; groff -man -man-ext -t -Thtml jemalloc.3 > jemalloc.3.html)