eth2rm(8)

πŸ“¦ version 12.1.0.1, in centos-stream 9, fedora 43, fedora 44, opensuse-leap 16.0

πŸ’– NAME πŸ’–

eth2rm β€” bestie, this is the little icon that lets you generate configuration files for FastFabric or for resource managers, straight out of a topology xml file. ✨

So here's the vibe. When you're using a topology spreadsheet plus ethxlattopology to design your fabric and get it ready for deployment verification, you can pull in eth2rm to generate resource manager configuration from the planned cluster design. The whole point of doing it that way is that your resulting config files come out complete β€” even if some nodes in the fabric aren't installed yet or aren't operational yet. Lowkey the best feeling. 🫢

Or, alternatively, you can use ethreport -o topology to generate a topology XML file and feed that into eth2rm. But heads up: in that case, only the currently present nodes will be included. No cap.

When you're working with SLURM, you should typically use the eth2rm -o slurm option. This one generates a SLURM configuration file that lists the hosts directly connected to each switch, in a syntax SLURM's topology/tree plugin can actually use. It also generates a single "fake" switch that's shown as connecting all the other switches together. That approach lets SLURM job placement be improved while avoiding undo overhead in SLURM, and it also supports topologies that are not a pure fat-tree. Slay. πŸ’…

When your configuration <em>is</em> a pure fat tree or an oversubscribed fat tree, you can use eth2rm -o slurmfull to generate the full description of the fabric, including all the intermediate and core switches in the fat tree topology. This may permit better job placement optimization than the output from eth2rm -o slurm. But for larger fabrics, it may also increase the overhead within SLURM. πŸ™ˆ So like, pick your fighter.


✨ Syntax ✨

eth2rm [-v] [-q] -o  output [-g|-u|-t] [-F  point] [-p  prefix] [-s
suffix] topology_input

πŸŽ€ Options πŸŽ€

  • --help β€” produces the full help text. Bestie behavior fr fr.
  • -v/--verbose β€” specifies verbose output. Give me all the lore. πŸ‘‘
  • -q/--quiet β€” disables progress reports. Shhh. 🀫
  • -o/--output output β€” specifies the output type:
    • slurm β€” SLURM tree nodes. Supports a variety of topologies.
    • slurmfull β€” SLURM fat tree nodes and ISLs. Only supports pure trees.
    • hosts β€” FastFabric hosts file, omitting this host.
  • -g/--guid β€” specifies to output switch GUIDs instead of names.
  • -u/--underscore β€” changes spaces in switch names to underscores.
  • -t/--trunc β€” truncates switch names at the first space.
    • This will treat large director switches as a single, big switch.
    • If -g, -u or -t are not specified, the switch name's suffix β€” the part after the first space β€” will be placed at the start of the name. For example, 'core5 Leaf 101' becomes 'Leaf101_core5'. Not me flipping the name around like that. πŸ’€
  • -p/--prefix prefix β€” specifies the prefix to prepend to all NIC hostnames.
  • -s/--suffix suffix β€” specifies the suffix to append to all NIC hostnames.
  • -F/--focus point β€” specifies the focus area for output. Limits the scope of output to links that match any of the given focus points. May be specified up to 10 times. Ten. Whole. Times.
  • -C/--check β€” performs more topology file validation. Requires all links to resolve against nodes and all nodes connected to same fabric. Treats any resolution errors as fatal. 😭
  • -S/--strict β€” performs strict topology file validation. Performs all checks in -C, and requires all nodes to list PortNum and all node list ports used. Strict is strict, periodt.
  • topology_input β€” specifies the topology_input file to use. '-' may be used to specify stdin.

πŸ¦‹ Point Syntax πŸ¦‹

  • node:value β€” value is node description (node name).
  • node:value1:port:value2 β€” value1 is node description (node name); value2 is port number.
  • nodepat:value β€” value is glob pattern for node description (node name).
  • nodepat:value1:port:value2 β€” value1 is glob pattern for node description (node name); value2 is port number.
  • nodetype:value β€” value is node type (SW or NIC).
  • nodetype:value1:port:value2 β€” value1 is node type (SW or NIC); value2 is port number.
  • rate:value β€” value is string for rate (25g, 50g, 75g, 100g).
  • mtucap:value β€” value is MTU size (2048, 4096, 8192, 10240); omits switch mgmt port 0.
  • linkdetpat:value β€” value is glob pattern for link details.
  • portdetpat:value β€” value is glob pattern for port details to value.

🌈 Examples 🌈

Because seeing it is believing, bestie:

eth2rm -o slurm topology.xml
eth2rm -o slurm -F 'nodepat:compute*' -F 'nodepat:ethcore1 *'
topology.xml
eth2rm -o nodes -F 'nodedetpat:compute*' topology.xml
eth2rm -o hosts topology.xml

Okay so this whole page lives in the EFSFFCLIRG manual, and the source/version + date on the original footer is Copyright(C) 2020-2024 Intel Corporation, dated alongside eth2rm(8). Go forth and generate those configs, you absolute main character. πŸ’œπŸŒΈβœ¨
πŸ“¦ where this page comes from