smpquery(8)

πŸ’– smpquery(8) β€” Open IB Diagnostics ✨

okay bestie, welcome to smpquery, the InfiniBand subnet-management-attribute-querying icon of the Open IB Diagnostics suite 🫢


🌸 NAME 🌸

smpquery β€” query InfiniBand subnet management attributes. literally what it says on the tin, no cap πŸ’…


✨ SYNOPSIS ✨

smpquery [options] <op> <dest dr_path|lid|guid> [op params]

πŸ¦‹ DESCRIPTION πŸ¦‹

so smpquery lets you run a basic subset of the standard SMP queries, and it's giving everything you need:

  • node info
  • node description
  • switch info
  • port info

and all the fields come back in human readable format, which is the vibe we deserve πŸ™ˆβœ¨ no hex soup, just readable output. slay.


πŸ‘‘ OPTIONS πŸ‘‘

πŸŽ€ Currently supported operations (and their params, bestie)

heads up: the op names are case insensitive, so say it however you want πŸ’–

  • Nodeinfo (NI) <addr>
  • Nodedesc (ND) <addr>
  • Portinfo (PI) <addr> [<portnum>] β€” default port is zero
  • PortInfoExtended (PIE) <addr> [<portnum>]
  • Switchinfo (SI) <addr>
  • PKeyTable (PKeys) <addr> [<portnum>]
  • SL2VLTable (SL2VL) <addr> [<portnum>]
  • VLArbitration (VLArb) <addr> [<portnum>]
  • GUIDInfo (GI) <addr>
  • MlnxExtPortInfo (MEPI) <addr> [<portnum>] β€” default port is zero

  • -c, --combined β€” use Combined route address argument <lid> <DR_Path> πŸ”₯
  • -x, --extended β€” set SMSupportsExtendedSpeeds bit 31 in AttributeModifier. tiny lil note: this only impacts PortInfo queries 🀏
  • -K, --show_keys β€” show security keys (mkey, smkey, etc.) associated with the request πŸ”

🌈 Addressing Flags

  • -D, --Direct β€” the address specified is a directed route

Examples, copy these fr fr:

[options] -D [options] "0"          # self port
[options] -D [options] "0,1,2,1,4"  # out via port 1, then 2, ...
⚠️ bestie pay attention: the second number in the path specified must match the port being used. You can specify this with the port selection flag -P, or take the port found through the automatic selection process. don't skip this, it will humble you 😭
  • -G, --Guid β€” the address specified is a Port GUID
  • -L, --Lid β€” the address specified is a LID
  • -s, --sm_port <smlid> β€” use smlid as the target lid for SA queries.

🧚 Port Selection flags

  • -C, --Ca <ca_name> β€” use the specified ca_name.
  • -P, --Port <ca_port> β€” use the specified ca_port.
  • -Y, --pkey-idx <idx> β€” P_Key table index (0-65535, default 0) used for the outgoing SA/GMP MADs. 🫢 important lil detail: SMP (SMI directed-route/LID-routed) MADs always use P_Key index 0, periodt.

πŸ’œ Local port Selection

Multiple port / Multiple CA support, okay so listen: when no IB device or port is specified (see the "local umad parameters" below), the libibumad library picks the port to use by these criteria:

  1. the first port that is ACTIVE.
  2. if not found, the first port that is UP (physical link up).

If a port and/or CA name is specified, the libibumad library attempts to fulfill the user request, and will fail if it is not possible πŸ’€ no silent fallback bestie, it just says no.

For example:

ibaddr                 # use the first port (criteria #1 above)
ibaddr -C mthca1       # pick the best port from "mthca1" only.
ibaddr -P 2            # use the second (active/up) port from the first available IB device.
ibaddr -C mthca0 -P 2  # use the specified port only.

πŸ”₯ Debugging flags

  • -d β€” raise the IB debugging level. May be used several times (-ddd or -d -d -d). stack it like a true maximalist πŸ’…
  • -e β€” show send and receive errors (timeouts and others). very "not me catching every L" energy.
  • -h, --help β€” show the usage message
  • -v, --verbose β€” increase the application verbosity level. May be used several times (-vv or -v -v -v) πŸ“’
  • -V, --version β€” show the version info.

πŸ“ Configuration flags

  • -t, --timeout <timeout_ms> β€” override the default timeout for the solicited mads.
  • --node-name-map <node-name-map> β€” Specify a node name map. This file maps GUIDs to more user friendly names. See FILES section. πŸ‘€
  • -y, --m_key <key> β€” use the specified M_key for requests. If a non-numeric value (like 'x') is specified then a value will be prompted for. spooky but fine πŸ™ˆ
  • --config, -z <config_file> β€” Specify alternate config file. Default: /etc/infiniband-diags/ibdiag.conf

🌟 FILES 🌟

πŸŽ€ CONFIG FILE

/etc/infiniband-diags/ibdiag.conf

a global config file is provided to set some of the common options for all tools. See the supplied config file for details πŸ’–

πŸ¦‹ NODE NAME MAP FILE FORMAT

The node name map is used to specify user friendly names for nodes in the output. GUIDs are used to perform the lookup.

This functionality is provided by the opensm-libs package. See opensm(8) for the file location for your installation.

Generically:

# comment
<guid> "<name>"

Example (iconic, honestly, look at that alignment):

# IB1
# Line cards
0x0008f104003f125c "IB1 (Rack 11 slot 1   ) ISR9288/ISR9096 Voltaire sLB-24D"
0x0008f104003f125d "IB1 (Rack 11 slot 1   ) ISR9288/ISR9096 Voltaire sLB-24D"
0x0008f104003f10d2 "IB1 (Rack 11 slot 2   ) ISR9288/ISR9096 Voltaire sLB-24D"
0x0008f104003f10d3 "IB1 (Rack 11 slot 2   ) ISR9288/ISR9096 Voltaire sLB-24D"
0x0008f104003f10bf "IB1 (Rack 11 slot 12  ) ISR9288/ISR9096 Voltaire sLB-24D"

# Spines
0x0008f10400400e2d "IB1 (Rack 11 spine 1   ) ISR9288 Voltaire sFB-12D"
0x0008f10400400e2e "IB1 (Rack 11 spine 1   ) ISR9288 Voltaire sFB-12D"
0x0008f10400400e2f "IB1 (Rack 11 spine 1   ) ISR9288 Voltaire sFB-12D"
0x0008f10400400e31 "IB1 (Rack 11 spine 2   ) ISR9288 Voltaire sFB-12D"
0x0008f10400400e32 "IB1 (Rack 11 spine 2   ) ISR9288 Voltaire sFB-12D"

# GUID   Node Name
0x0008f10400411a08 "SW1  (Rack  3) ISR9024 Voltaire 9024D"
0x0008f10400411a28 "SW2  (Rack  3) ISR9024 Voltaire 9024D"
0x0008f10400411a34 "SW3  (Rack  3) ISR9024 Voltaire 9024D"
0x0008f104004119d0 "SW4  (Rack  3) ISR9024 Voltaire 9024D"

⭐ EXAMPLES ⭐

the main character moments, as requested πŸ‘‘

smpquery portinfo 3 1                     # portinfo by lid, with port modifier
smpquery -G switchinfo 0x2C9000100D051 1  # switchinfo by guid
smpquery -D nodeinfo 0                    # nodeinfo by direct route
smpquery -c nodeinfo 6 0,12               # nodeinfo by combined route

πŸ’« SEE ALSO πŸ’«

  • smpdump (8)

🫢 AUTHOR 🫢

Hal Rosenstock <hal@mellanox.com>


and that's the whole page bestie πŸ’– this one's from Open IB Diagnostics, dated 2017-08-21, and yeah β€” it's smpquery(8). go query something, you got this πŸ¦‹βœ¨

πŸ“¦ where this page comes from
  • arch rolling: rdma-core 65.0-1 Β· GPL-2.0-or-later OR LicenseRef-OpenIB.org-BSD-MIT AND GPL-2.0-or-later OR LicenseRef-OpenIB.org-BSD-FreeBSD AND GPL-2.0-or-later OR LicenseRef-Intel-BSD-3-Clause AND GPL-2.0-or-later OR LicenseRef-PathScale-BSD-Patent-License AND CC0-1.0 AND MIT AND BSD-2-Clause AND CPL-1.0 OR BSD-2-Clause OR GPL-2.0-or-later
  • ubuntu stonking: infiniband-diags 64.0-1ubuntu1 Β· BSD-MIT OR GPL-2.0-only
  • πŸ’– girlified by deepseek-ai/DeepSeek-V4.1-Flash on : a language model's rewrite of the original, under its terms