Environment Variables - DAOS v2.6
Author: DAOS Project
Description: Distributed Asynchronous Object Storage

Skip to content

# DAOS Environment Variables

This section lists the environment variables used by DAOS.

Warning

Many of these variables are used for development purposes only, and may be removed or changed in the future.

The description of each variable follows the following format:

- Short description

- `Type`

- The default behavior if not set.

- A longer description if necessary

`Type` is defined by this table:

Type | Values
--- | ---
BOOL | `0` means false; any other value means true
BOOL2 | `no` means false; any other value means true
BOOL3 | set to empty, or any value means true; unset means false
INTEGER | Non-negative decimal integer
STRING | String

## Server environment variables

Environment variables in this section only apply to the server side.

Variable | Description
--- | ---
RDB_ELECTION_TIMEOUT | Raft election timeout used by RDBs in milliseconds. INTEGER. Default to 7000 ms.
RDB_REQUEST_TIMEOUT | Raft request timeout used by RDBs in milliseconds. INTEGER. Default to 3000 ms.
RDB_LEASE_MAINTENANCE_GRACE | Raft grace period of leadership lease maintenance used by RDBs in milliseconds. INTEGER. Default to 7000 ms. If a Raft leader is unable to maintain leadership leases from a majority for more than RDB_ELECTION_TIMEOUT + RDB_LEASE_MAINTENANCE_GRACE, it steps down voluntarily.
RDB_USE_LEASES | Whether RDBs shall use Raft leadership leases, instead of RPCs, to verify leadership. BOOL. Default to true. Rafts track leadership leases regardless; this environment variable essentially controls whether RDBs use Raft leadership leases to improve RDB TX performance.
RDB_COMPACT_THRESHOLD | Raft log compaction threshold in applied entries. INTEGER. Default to 256 entries.
RDB_AE_MAX_ENTRIES | Maximum number of entries in a Raft AppendEntries request. INTEGER. Default to 32.
RDB_AE_MAX_SIZE | Maximum total size in bytes of all entries in a Raft AppendEntries request. INTEGER. Default to 1 MB.
DAOS_REBUILD | Determines whether to start rebuilds when excluding targets. BOOL2. Default to true.
DAOS_MD_CAP | Size of a metadata pmem pool/file in MBs. INTEGER. Default to 128 MB.
DAOS_START_POOL_SVC | Determines whether to start existing pool services when starting a daos_server. BOOL. Default to true.
CRT_DISABLE_MEM_PIN | Disable memory pinning workaround on a server side. BOOL. Default to 0.
CRT_EVENT_DELAY | Delay in seconds before handling a set of CaRT events. INTEGER. Default to 10 s. A longer delay enables batching of successive CaRT events, leading to fewer pool map changes when multiple engines become unavailable at around the same time.
DAOS_SCHED_PRIO_DISABLED | Disable server ULT prioritizing. BOOL. Default to 0.
DAOS_SCHED_RELAX_MODE | The mode of CPU relaxing on idle. "disabled":disable relaxing; "net":wait on network request for INTVL; "sleep":sleep for INTVL. STRING. Default to "net"
DAOS_SCHED_RELAX_INTVL | CPU relax interval in milliseconds. INTEGER. Default to 1 ms.
DAOS_STRICT_SHUTDOWN | Use the strict mode when shutting down engines. BOOL. Default to 0. In the strict mode, when certain resource leaks are detected, for instance, the engine will raise an assertion failure.
DAOS_DTX_AGG_THD_CNT | DTX aggregation count threshold. The valid range is [2^20, 2^24]. The default value is (2^19)*7.
DAOS_DTX_AGG_THD_AGE | DTX aggregation age threshold in seconds. The valid range is [210, 1830]. The default value is 630.
DAOS_DTX_RPC_HELPER_THD | DTX RPC helper threshold. The valid range is [18, unlimited). The default value is 513.
DAOS_DTX_BATCHED_ULT_MAX | The max count of DTX batched commit ULTs. The valid range is [0, unlimited). 0 means to commit DTX synchronously. The default value is 32.
DAOS_FORWARD_NEIGHBOR | Set to enable I/O forwarding on neighbor xstream in the absence of helper threads.
DAOS_POOL_RF | Redundancy factor for the pool. The valid range is [0, 4]. The default value is 2.

## Server and Client environment variables

Environment variables in this section apply to both the server side and the client side.

Variable | Description
--- | ---
FI_OFI_RXM_USE_SRX | Enable shared receive buffers for RXM-based providers (verbs, tcp). BOOL. Auto-defaults to 1.
FI_UNIVERSE_SIZE | Sets expected universe size in OFI layer to be more than expected number of clients. INTEGER. Auto-defaults to 2048.

## Client environment variables

Environment variables in this section only apply to the client side.

Variable | Description
--- | ---
FI_MR_CACHE_MAX_COUNT | Enable MR (Memory Registration) caching in OFI layer. Recommended to be set to 0 (disable) when CRT_DISABLE_MEM_PIN is NOT set to 1. INTEGER. Default to unset.
D_POLL_TIMEOUT | Polling timeout passed to network progress for synchronous operations. Default to 0 (busy polling), value in micro-seconds otherwise.

## Debug System (Client & Server)

Variable | Description
--- | ---
D_LOG_FILE | DAOS debug logs (both server and client) are written to stdout by default. The debug location can be modified by setting this environment variable (`D\_LOG\_FILE=/tmp/daos_debug.log`).
D_LOG_FILE_APPEND_PID | If set and not 0, causes the main PID to be appended at the end of D_LOG_FILE path name (both server and client).
D_LOG_STDERR_IN_LOG | If set and not 0, causes stderr messages to be merged in D_LOG_FILE.
D_LOG_SIZE | DAOS debug logs (both server and client) have a 1GB file size limit by default. When this limit is reached, the current log file is closed and renamed with a .old suffix, and a new one is opened. This mechanism will repeat each time the limit is reached, meaning that available saved log records could be found in both ${D_LOG_FILE} and last generation of ${D_LOG_FILE}.old files, to a maximum of the most recent `2*D_LOG_SIZE` records. This can be modified by setting this environment variable ("D_LOG_SIZE=536870912"). Sizes can also be specified in human-readable form using `k`, `m`, `g`, `K`, `M`, and `G`. The lower-case specifiers are base-10 multipliers and the upper case specifiers are base-2 multipliers.
D_LOG_FLUSH | Allows to specify a non-default logging level where flushing will occur. By default, only levels above WARN will cause an immediate flush instead of buffering.
D_LOG_TRUNCATE | By default log is appended. But if set this variable will cause log to be truncated upon first open and logging start.
DD_SUBSYS | Used to specify which subsystems to enable. DD_SUBSYS can be set to individual subsystems for finer-grained debugging ("DD_SUBSYS=vos"), multiple facilities ("DD_SUBSYS=bio,mgmt,misc,mem"), or all facilities ("DD_SUBSYS=all") which is also the default setting. If a facility is not enabled, then only ERR messages or more severe messages will print.
DD_STDERR | Used to specify the priority level to output to stderr. Options in decreasing priority level order: FATAL, CRIT, ERR, WARN, NOTE, INFO, DEBUG. By default, all CRIT and more severe DAOS messages will log to stderr ("DD_STDERR=CRIT"), and the default for CaRT/GURT is FATAL.
D_LOG_MASK | Used to specify what type/level of logging will be present for either all of the registered subsystems or a select few. Options in decreasing priority level order: FATAL, CRIT, ERR, WARN, NOTE, INFO, DEBUG. DEBUG option is used to enable all logging (debug messages as well as all higher priority level messages). Note that if D_LOG_MASK is not set, it will default to logging all messages excluding debug ("D_LOG_MASK=INFO"). Example: "D_LOG_MASK=DEBUG". This will set the logging level for all facilities to DEBUG, meaning that all debug messages, as well as higher priority messages will be logged (INFO, NOTE, WARN, ERR, CRIT, FATAL). Example 2: "D_LOG_MASK=DEBUG,MEM=ERR,RPC=ERR". This will set the logging level to DEBUG for all facilities except MEM & RPC (which will now only log ERR and higher priority level messages, skipping all DEBUG, INFO, NOTE & WARN messages)
DD_MASK | Used to enable different debug streams for finer-grained debug messages, essentially allowing the user to specify an area of interest to debug (possibly involving many different subsystems) as opposed to parsing through many lines of generic DEBUG messages. All debug streams will be enabled by default ("DD_MASK=all"). Single debug masks can be set ("DD_MASK=trace") or multiple masks ("DD_MASK=trace,test,mgmt"). Note that since these debug streams are strictly related to the debug log messages, D_LOG_MASK must be set to DEBUG. Priority messages higher than DEBUG will still be logged for all facilities unless otherwise specified by D_LOG_MASK (not affected by enabling debug masks).
CRT_CTX_NUM | For regular non-scalable endpoint mode this variable can be used to override maximum number of contexts that can be created, up to 64. By default the maximum number is set to the number of cores available on the system. For scalable endpoint mode specifies total number of contexts to be allocated by the process.