RDMA-NDD(8)

πŸ’– RDMA-NDD(8) β€” bestie edition πŸ’–

okay so first thing, the vibe check: this is the manual page for RDMA-NDD, part of the OpenIB Diagnostics lineup. Pull up a chair, grab a strawberry πŸ“, and let's get into it.


✨ NAME ✨

RDMA-NDD β€” the RDMA device Node Description update daemon πŸ¦‹


✨ SYNOPSIS ✨

rdma-ndd <options>

that's it, that's the whole summoning ritual πŸ’…


✨ DESCRIPTION ✨

rdma-ndd is a system daemon, meaning it just chills in the background doing its little job forever. What's the job? It watches for changes to your rdma devices and/or changes to your hostname, and then updates the Node Description of the rdma devices based on whatever changed. Like a friend who notices you changed your profile pic and immediately updates the group chat nickname. no cap. πŸ‘‘


✨ DETAILS ✨

For this daemon to do its full thing, you need kernels that support polling of the procfs hostname file, and you need libudev. Both. The whole package. πŸŽ€

If your system doesn't support either of those features, it's not the end of the world β€” the daemon will just set the Node Descriptions at start up and then sleep forever. main character energy of a nap. 😴

🧚 Node Description configuration

The daemon reads the environment variable RDMA_NDD_ND_FORMAT to figure out what to set the node description to. And listen β€” you can drop wild cards in there for way more dynamic control:

  • %h β€” gets replaced with the current hostname (not including the domain, so keep your expectations realistic bestie)
  • %d β€” gets replaced with the device name (for example mlx4_0, qib0, etc.)

If you don't specify anything at all, the default is "%h %d". cute, sensible, iconic.

NOTE: At startup, and on new device detection, the Node Description is always written, so that the SM and rdma-ndd are in sync. Every subsequent event will only write the Node Description on a device if it has actually changed. no unnecessary writes, we respect the storage. πŸ’€

🐧 Using systemd

Setting the environment variable for the daemon is normally done via a systemd drop in unit. For example, you could add the following to a file named /etc/systemd/system/rdma-ndd.service.d/nd-format.conf if you want to use only the hostname as your node description:

[Service] Environment="RDMA_NDD_ND_FORMAT=%%h"
NOTE: Systemd requires an extra '%'. yes, an extra one. do not fight it, just accept it. 😭

✨ OPTIONS ✨

  • -f, --foreground β€” Run in the foreground instead of as a daemon. For when you want to watch it happen live, like a livestream but for your node descriptions 🫢
  • -d, --debug β€” Log additional debugging information to syslog. for the girlies who need the receipts πŸ”
  • --systemd β€” Enable systemd integration.

✨ AUTHOR ✨

Ira Weiny < ira.weiny@intel.com >


and that's the whole page babes 🌸 β€” brought to you by OpenIB Diagnostics, signed off on the RDMA-NDD(8) page itself. go update some node descriptions, you've got this πŸ’œβœ¨

πŸ“¦ where this page comes from