topology.conf(5)

NAME
topology.conf - Slurm configuration file for the topology plugins

DESCRIPTION
topology.conf is an ASCII file which describes the cluster's network topology for optimized job resource allocation. The file will always be located in the same directory as the slurm.conf. NOTE: This file is ignored if topology.yaml(5) exists.

Parameter names are case insensitive. Any text following a "#" in the configuration file is treated as a comment through the end of that line. Changes to the configuration file take effect upon restart of Slurm daemons, daemon receipt of the SIGHUP signal, or execution of the command "scontrol reconfigure" unless otherwise noted.

Refer to the topology guide for more details: <https://slurm.schedmd.com/topology.html>

topology/tree
This plugin requires you to use the select/cons_tres plugin. The network topology configuration, each line defining a switch name and its children, either node names or switch names. Slurm's hostlist expression parser is used, so the node and switch names need not be consecutive (e.g. "Nodes=tux[0-3,12,18-20]" and "Switches=s[0-2,4-8,12]" will parse fine). An optional link speed may also be specified.

All nodes in the network must be connected to at least one switch. The network must be fully connected to use TopologyParam=RouteTree. Jobs can only span nodes connected by the same switch fabric, even if there are available idle nodes in other areas of the cluster.

The topology.conf file for an Infiniband switch can be automatically generated using the slurmibtopology tool found here: <https://github.com/OleHolmNielsen/Slurm_tools/tree/master/slurmibtopology>.

The overall configuration parameters available for topology/tree include:

SwitchName
    The name of a switch. This name is internal to Slurm and arbitrary. Each switch should have a unique name. This field must be specified and cannot be longer than 64 characters.

Switches
    Child switches of the named switch.

Nodes
    Child nodes of the named leaf switch.

LinkSpeed
    An optional value specifying the performance of this communication link. The units used are arbitrary and this information is currently not used. It may be used in the future to optimize resource allocations.

topology/block

The network topology configuration, each line defining a block name and its children node names. Slurm's hostlist expression parser is used, so the node names need not be consecutive (e.g. "Nodes=tux[0-3,12,18-20]").

This topology plugin places emphasis on reducing fragmentation of the cluster, allowing jobs to take advantage of lower-latency connections between smaller "blocks" of nodes, rather than starting jobs as quickly as possible on the first available resources.

Defined blocks of nodes are paired with other contiguous blocks, to create a higher level block of nodes. These larger blocks can then be paired with other blocks at the same level for bigger and bigger blocks of contiguous nodes with optimized communication between them. The enforced block sizes are defined by BlockSizes.

The overall configuration parameters available for topology/block include:

BlockName
    The name of a block. This name is internal to Slurm and arbitrary. Each block should have a unique name. This field must be specified.

Nodes
    Child nodes of the named block.

BlockSizes
    List of the planning base block size, alongside any higher-level block sizes that would be enforced. Each block must have at least the planning base block size count of nodes. Successive BlockSizes must be a power of two larger than the prior values.

topology/ring

This plugin models the cluster as one or more ordered rings of nodes. Jobs are allocated using contiguous segments of nodes in the ring, which may wrap at the end of the ring.

The network topology configuration, each line defining a ring name and its child node names. Slurm's hostlist expression parser is used, so the node names need not be consecutive (e.g. "Nodes=tux[0-3,12,18-20]"). The order of the nodes in the list defines the ring position starting at 0.

The overall configuration parameters available for topology/ring include:

RingName
    The name of a ring. This name is internal to Slurm and arbitrary. Each ring should have a unique name. This field must be specified.

Nodes
    Ordered list of child nodes in the ring. A maximum of 16 nodes can be specified per ring.

topology/torus3d

The torus3d plugin can only be configured via topology.yaml(5). It is not supported in topology.conf. See topology.yaml(5) for configuration details.

EXAMPLE
##################################################################
# Slurm's network topology configuration file for use with the
# topology/tree plugin
##################################################################
SwitchName=s0 Nodes=dev[0-5]
SwitchName=s1 Nodes=dev[6-11]
SwitchName=s2 Nodes=dev[12-17]
SwitchName=s3 Switches=s[0-2]
##################################################################
# Slurm's network topology configuration file for use with the
# topology/block plugin
##################################################################
BlockName=block1 Nodes=node[1-32]
BlockName=block2 Nodes=node[33-64]
BlockName=block3 Nodes=node[65-96]
BlockName=block4 Nodes=node[97-128]
BlockSizes=30,120
##################################################################
# Slurm's network topology configuration file for use with the
# topology/ring plugin
##################################################################
RingName=ring0 Nodes=node[01-08]
RingName=ring1 Nodes=node[09-16]

COPYING
Copyright (C) 2009 Lawrence Livermore National Security. Produced at Lawrence Livermore National Laboratory (cf, DISCLAIMER).
Copyright (C) 2010-2023 SchedMD LLC.

This file is part of Slurm, a resource management program. For details, see <https://slurm.schedmd.com/>.

Slurm is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version.

Slurm is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details.

SEE ALSO

slurm.conf(5), topology.yaml(5)