aboutsummaryrefslogtreecommitdiff
path: root/manual/tunables.texi
diff options
context:
space:
mode:
Diffstat (limited to 'manual/tunables.texi')
-rw-r--r--manual/tunables.texi215
1 files changed, 0 insertions, 215 deletions
diff --git a/manual/tunables.texi b/manual/tunables.texi
deleted file mode 100644
index c9a4cb7fe5..0000000000
--- a/manual/tunables.texi
+++ /dev/null
@@ -1,215 +0,0 @@
-@node Tunables
-@c @node Tunables, , Internal Probes, Top
-@c %MENU% Tunable switches to alter libc internal behavior
-@chapter Tunables
-@cindex tunables
-
-@dfn{Tunables} are a feature in @theglibc{} that allows application authors and
-distribution maintainers to alter the runtime library behavior to match
-their workload. These are implemented as a set of switches that may be
-modified in different ways. The current default method to do this is via
-the @env{GLIBC_TUNABLES} environment variable by setting it to a string
-of colon-separated @var{name}=@var{value} pairs. For example, the following
-example enables malloc checking and sets the malloc trim threshold to 128
-bytes:
-
-@example
-GLIBC_TUNABLES=glibc.malloc.trim_threshold=128:glibc.malloc.check=3
-export GLIBC_TUNABLES
-@end example
-
-Tunables are not part of the @glibcadj{} stable ABI, and they are
-subject to change or removal across releases. Additionally, the method to
-modify tunable values may change between releases and across distributions.
-It is possible to implement multiple `frontends' for the tunables allowing
-distributions to choose their preferred method at build time.
-
-Finally, the set of tunables available may vary between distributions as
-the tunables feature allows distributions to add their own tunables under
-their own namespace.
-
-@menu
-* Tunable names:: The structure of a tunable name
-* Memory Allocation Tunables:: Tunables in the memory allocation subsystem
-* Hardware Capability Tunables:: Tunables that modify the hardware
- capabilities seen by @theglibc{}
-@end menu
-
-@node Tunable names
-@section Tunable names
-@cindex Tunable names
-@cindex Tunable namespaces
-
-A tunable name is split into three components, a top namespace, a tunable
-namespace and the tunable name. The top namespace for tunables implemented in
-@theglibc{} is @code{glibc}. Distributions that choose to add custom tunables
-in their maintained versions of @theglibc{} may choose to do so under their own
-top namespace.
-
-The tunable namespace is a logical grouping of tunables in a single
-module. This currently holds no special significance, although that may
-change in the future.
-
-The tunable name is the actual name of the tunable. It is possible that
-different tunable namespaces may have tunables within them that have the
-same name, likewise for top namespaces. Hence, we only support
-identification of tunables by their full name, i.e. with the top
-namespace, tunable namespace and tunable name, separated by periods.
-
-@node Memory Allocation Tunables
-@section Memory Allocation Tunables
-@cindex memory allocation tunables
-@cindex malloc tunables
-@cindex tunables, malloc
-
-@deftp {Tunable namespace} glibc.malloc
-Memory allocation behavior can be modified by setting any of the
-following tunables in the @code{malloc} namespace:
-@end deftp
-
-@deftp Tunable glibc.malloc.check
-This tunable supersedes the @env{MALLOC_CHECK_} environment variable and is
-identical in features.
-
-Setting this tunable enables a special (less efficient) memory allocator for
-the malloc family of functions that is designed to be tolerant against simple
-errors such as double calls of free with the same argument, or overruns of a
-single byte (off-by-one bugs). Not all such errors can be protected against,
-however, and memory leaks can result. The following list describes the values
-that this tunable can take and the effect they have on malloc functionality:
-
-@itemize @bullet
-@item @code{0} Ignore all errors. The default allocator continues to be in
-use, but all errors are silently ignored.
-@item @code{1} Report errors. The alternate allocator is selected and heap
-corruption, if detected, is reported as diagnostic messages to @code{stderr}
-and the program continues execution.
-@item @code{2} Abort on errors. The alternate allocator is selected and if
-heap corruption is detected, the program is ended immediately by calling
-@code{abort}.
-@item @code{3} Fully enabled. The alternate allocator is selected and is fully
-functional. That is, if heap corruption is detected, a verbose diagnostic
-message is printed to @code{stderr} and the program is ended by calling
-@code{abort}.
-@end itemize
-
-Like @env{MALLOC_CHECK_}, @code{glibc.malloc.check} has a problem in that it
-diverges from normal program behavior by writing to @code{stderr}, which could
-by exploited in SUID and SGID binaries. Therefore, @code{glibc.malloc.check}
-is disabled by default for SUID and SGID binaries. This can be enabled again
-by the system administrator by adding a file @file{/etc/suid-debug}; the
-content of the file could be anything or even empty.
-@end deftp
-
-@deftp Tunable glibc.malloc.top_pad
-This tunable supersedes the @env{MALLOC_TOP_PAD_} environment variable and is
-identical in features.
-
-This tunable determines the amount of extra memory in bytes to obtain from the
-system when any of the arenas need to be extended. It also specifies the
-number of bytes to retain when shrinking any of the arenas. This provides the
-necessary hysteresis in heap size such that excessive amounts of system calls
-can be avoided.
-
-The default value of this tunable is @samp{0}.
-@end deftp
-
-@deftp Tunable glibc.malloc.perturb
-This tunable supersedes the @env{MALLOC_PERTURB_} environment variable and is
-identical in features.
-
-If set to a non-zero value, memory blocks are initialized with values depending
-on some low order bits of this tunable when they are allocated (except when
-allocated by calloc) and freed. This can be used to debug the use of
-uninitialized or freed heap memory. Note that this option does not guarantee
-that the freed block will have any specific values. It only guarantees that the
-content the block had before it was freed will be overwritten.
-
-The default value of this tunable is @samp{0}.
-@end deftp
-
-@deftp Tunable glibc.malloc.mmap_threshold
-This tunable supersedes the @env{MALLOC_MMAP_THRESHOLD_} environment variable
-and is identical in features.
-
-When this tunable is set, all chunks larger than this value in bytes are
-allocated outside the normal heap, using the @code{mmap} system call. This way
-it is guaranteed that the memory for these chunks can be returned to the system
-on @code{free}. Note that requests smaller than this threshold might still be
-allocated via @code{mmap}.
-
-If this tunable is not set, the default value is set to @samp{131072} bytes and
-the threshold is adjusted dynamically to suit the allocation patterns of the
-program. If the tunable is set, the dynamic adjustment is disabled and the
-value is set as static.
-@end deftp
-
-@deftp Tunable glibc.malloc.trim_threshold
-This tunable supersedes the @env{MALLOC_TRIM_THRESHOLD_} environment variable
-and is identical in features.
-
-The value of this tunable is the minimum size (in bytes) of the top-most,
-releasable chunk in an arena that will trigger a system call in order to return
-memory to the system from that arena.
-
-If this tunable is not set, the default value is set as 128 KB and the
-threshold is adjusted dynamically to suit the allocation patterns of the
-program. If the tunable is set, the dynamic adjustment is disabled and the
-value is set as static.
-@end deftp
-
-@deftp Tunable glibc.malloc.mmap_max
-This tunable supersedes the @env{MALLOC_MMAP_MAX_} environment variable and is
-identical in features.
-
-The value of this tunable is maximum number of chunks to allocate with
-@code{mmap}. Setting this to zero disables all use of @code{mmap}.
-
-The default value of this tunable is @samp{65536}.
-@end deftp
-
-@deftp Tunable glibc.malloc.arena_test
-This tunable supersedes the @env{MALLOC_ARENA_TEST} environment variable and is
-identical in features.
-
-The @code{glibc.malloc.arena_test} tunable specifies the number of arenas that
-can be created before the test on the limit to the number of arenas is
-conducted. The value is ignored if @code{glibc.malloc.arena_max} is set.
-
-The default value of this tunable is 2 for 32-bit systems and 8 for 64-bit
-systems.
-@end deftp
-
-@deftp Tunable glibc.malloc.arena_max
-This tunable supersedes the @env{MALLOC_ARENA_MAX} environment variable and is
-identical in features.
-
-This tunable sets the number of arenas to use in a process regardless of the
-number of cores in the system.
-
-The default value of this tunable is @code{0}, meaning that the limit on the
-number of arenas is determined by the number of CPU cores online. For 32-bit
-systems the limit is twice the number of cores online and on 64-bit systems, it
-is 8 times the number of cores online.
-@end deftp
-
-@node Hardware Capability Tunables
-@section Hardware Capability Tunables
-@cindex hardware capability tunables
-@cindex hwcap tunables
-@cindex tunables, hwcap
-
-@deftp {Tunable namespace} glibc.tune
-Behavior of @theglibc{} can be tuned to assume specific hardware capabilities
-by setting the following tunables in the @code{tune} namespace:
-@end deftp
-
-@deftp Tunable glibc.tune.hwcap_mask
-This tunable supersedes the @env{LD_HWCAP_MASK} environment variable and is
-identical in features.
-
-The @code{AT_HWCAP} key in the Auxilliary Vector specifies instruction set
-extensions available in the processor at runtime for some architectures. The
-@code{glibc.tune.hwcap_mask} tunable allows the user to mask out those
-capabilities at runtime, thus disabling use of those extensions.
-@end deftp