Skip to content

DAOS-19288 control: Add allow-numa-imbalance flag to config generate#18621

Draft
tanabarr wants to merge 1 commit into
masterfrom
tanabarr/control-confgen-allow-numa-imbalance
Draft

DAOS-19288 control: Add allow-numa-imbalance flag to config generate#18621
tanabarr wants to merge 1 commit into
masterfrom
tanabarr/control-confgen-allow-numa-imbalance

Conversation

@tanabarr

@tanabarr tanabarr commented Jul 7, 2026

Copy link
Copy Markdown
Contributor

Add --allow-numa-imbalance/-n flag to dmg and daos_server config
generate commands. This flag distributes NVMe devices equally across
engines regardless of NUMA affinity.

Without this flag, config generation respects NUMA affinity and balances
device assignment by giving entrance the lowest common denominator
SSD count across NUMA nodes within the cluster.

With this flag enabled:
- All available SSDs are collected from all NUMA nodes
- SSDs are distributed equally across all engines
- Distribution ignores NUMA node boundaries
- If total SSDs not evenly divisible, uses maximum divisible number
- Remainder SSDs are not included in generated config
- Notice logged when SSDs unused due to remainder
- Generated config incl. allow_numa_imbalance: true to allow boot

This maximizes device utilization in heterogeneous environments but may
result in suboptimal performance due to cross-NUMA memory access.

Features: control
Signed-off-by: Tom Nabarro tom.nabarro@intel.com

Steps for the author:

  • Commit message follows the guidelines.
  • Appropriate Features or Test-tag pragmas were used.
  • Appropriate Functional Test Stages were run.
  • At least two positive code reviews including at least one code owner from each category referenced in the PR.
  • Testing is complete. If necessary, forced-landing label added and a reason added in a comment.

After all prior steps are complete:

  • Gatekeeper requested (daos-gatekeeper added as a reviewer).

Add --allow-numa-imbalance/-n flag to dmg and daos_server config
generate commands. This flag distributes NVMe devices equally across
engines regardless of NUMA affinity.

Without this flag, config generation respects NUMA affinity and balances
device assignment by limiting engines to the minimum SSD count across
NUMA nodes. With this flag enabled:

- All available SSDs are collected from all NUMA nodes
- SSDs are distributed equally across all engines
- Distribution ignores NUMA node boundaries
- If total SSDs not evenly divisible, uses maximum divisible number
- Remainder SSDs are not included in generated config
- Notice logged when SSDs unused due to remainder
- Generated config includes allow_numa_imbalance: true

This maximizes device utilization in heterogeneous environments but may
result in suboptimal performance due to cross-NUMA memory access.

Example: 6 SSDs across 2 engines
- Without flag: 2 per engine (4 used, 2 wasted)
- With flag: 3 per engine (6 used, equally distributed)

Example: 7 SSDs across 2 engines
- With flag: 3 per engine (6 used, 1 unused due to remainder)
- Notice: "using 6 SSDs (3 per engine), 1 SSDs will not be used"

Required-githooks: true
Signed-off-by: Tom Nabarro <tom.nabarro@intel.com>
@tanabarr tanabarr self-assigned this Jul 7, 2026
@daosbuild3

Copy link
Copy Markdown
Collaborator

@github-actions

github-actions Bot commented Jul 7, 2026

Copy link
Copy Markdown

Ticket title is 'Add config generate flag to ignore NVMe NUMA affinity'
Status is 'In Progress'
https://daosio.atlassian.net/browse/DAOS-19288

@tanabarr tanabarr force-pushed the tanabarr/control-confgen-allow-numa-imbalance branch from b5ad1ca to 9f076cd Compare July 8, 2026 11:52
@daosbuild3

Copy link
Copy Markdown
Collaborator

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Development

Successfully merging this pull request may close these issues.

2 participants