opareports(8)

πŸ’– opareports β€” the IFSFFCLIRG era, bestie πŸ’–

okay so this is the page for opareports(8), straight outta the IFSFFCLIRG man page set. buckle up, it's a long one, but it's SO worth it.

✨ NAME ✨

opareports

(All) opareports is a front end to opareport that gives you many of the same options and capabilities. it can also run a report against multiple fabrics or subnets (like, local host HFI ports, hello πŸ‘‹). and it can use an input file to augment the reports with extra details from the topology_input file. it's giving glow-up. πŸ’…


πŸŽ€ Syntax πŸŽ€

opareports [-t  portsfile] [-p  ports] [-T  topology_input] [opareport
arguments]

πŸ¦‹ Options πŸ¦‹

  • --help β€” produces the full help text. bestie behaviour, honestly.
  • -t portsfile β€” specifies the file with a list of local HFI ports used to access the fabric for analysis. default is the /etc/opa/ports file.
  • -p ports β€” specifies the list of local HFI ports used to access the fabric for counter clear.

default is the first active port. the first HFI in the system is 1, and the first port on an HFI is 1. format is hfi:port, for example:

  • 0:0 β€” first active port in system.
  • 0:y β€” port y within system.
  • x:0 β€” first active port on HFI x.
  • x:y β€” HFI x, port y.
  • -T topology_input β€” specifies the name of a topology input file to use. the filename may have %P as a marker, which gets replaced with the hfi:port being operated on, like 0:0 or 1:2. the default filename is specified by FF_TOPOLOGY_FILE as /etc/opa/topology.%P.xml. if you pass -T NONE, no topology input file is used at all. periodt.
  • opareport arguments β€” options are passed to opareport.

specifies any of the other opareport arguments listed below (see opareport Options):

opareport  [-v][-q] [-h  hfi] [-p
port] [--timeout]

[-o  report][-d  detail] [-P|-H] [-N] [-x]

[-X  snapshot_input][-T  topology_input] [-s] [-r] [-V]

[-i seconds][-b  date_time] [-e  date_time] [-C] [-a]

[-m] [-M] [-A][-c  file] [-L] [-F  point] [-S  point]

[-D  point] [-Q]
NOTE: when using opareport arguments, regard the following: - the -h and -X options are not available. - the meaning of -p is different for opareports than for opareport. ikyk 😭 - when run against multiple fabrics, the -x and -o snapshot options are not available. - when run against multiple fabrics, the -F option is applied to all fabrics.

🌸 Examples 🌸

opareports

opareports -p '1:1 2:1'

🌈 Environment Variables 🌈

the following environment variables are also used by this command:

  • PORTS β€” list of ports, used in absence of -t and -p.
  • PORTS_FILE β€” file containing list of ports, used in absence of -t and -p.
  • FF_TOPOLOGY_FILE β€” file containing topology_input (may have a %P marker in the filename), used in absence of -T.

πŸ‘‘ opareport Options πŸ‘‘

for reference, babes:

  • --help β€” produces the full help text.
  • -v/--verbose β€” returns verbose output.
  • -q/--quiet β€” disables progress reports. silence, slay.
  • -h/--hfi hfi β€” specifies the HFI, numbered 1..n. using 0 specifies that the -p port port is a system-wide port number. default is 0.
  • -p/--port port β€” specifies the port, numbered 1..n. using 0 specifies the first active port. default is 0.
  • --timeout β€” specifies the timeout (wait time for response) in ms. default is 1000 ms.
  • -o/--output report β€” specifies the report type for output. refer to opareport Report Types for the deets.
  • -d/--detail level β€” specifies the level of detail 0-n for output. default is 2.
  • -P/--persist β€” only includes data persistent across reboots.
  • -H/--hard β€” only includes permanent hardware data.
  • -N/--noname β€” omits node and IOC names.
  • -x/--xml β€” produces output in XML.
  • -X/--infile snapshot_input β€” generates a report using the data in the snapshot_input file. snapshot_input must have been generated during a previous -o snapshot run. when used, the -s, -i, -C, and -a options are ignored. - may be used as the snapshot_input to specify stdin.
  • -T/--topology topology_input β€” uses the topology_input file to augment and verify fabric information. when used, various reports can be augmented with info that just isn't available electronically (cable labels, hello πŸ’…). - may be used to specify stdin.
  • -s/--stats β€” gets performance statistics for all ports.
  • -i/--interval seconds β€” obtains performance statistics over interval seconds. clears all statistics, waits interval seconds, then generates the report. implies -s option.
  • -b/--begin date_time β€” obtains performance stats beginning at date_time. implies -s option.
    • if -b/--begin and -e/--end are specified, the performance stats are provided over the specified interval.
    • if only -b/--begin is specified, the absolute value of the performance stats at the specified time is provided.

date_time may be a time entered as HH:MM[:SS] or a date as mm/dd/YYYY, dd.mm.YYYY, YYYY-mm-dd, or a date followed by time; for example, "2016-07-04 14:40". relative times are taken as "x [second|minute|hour|day](s) ago.

  • -e/--end date_time β€” obtains performance stats ending at date_time. implies -s option.
    • if -b/--begin and -e/--end are specified, the performance stats are provided over the specified interval.
    • if only -e/--end is specified, the absolute value of the performance stats at the specified time is provided.

date_time may be a time entered as HH:MM[:SS] or a date as mm/dd/YYYY, dd.mm.YYYY, YYYY-mm-dd, or a date followed by time; for example, "2016-07-04 14:40". relative times are taken as "x [second|minute|hour|day](s) ago.

  • -C/--clear β€” clears performance statistics for all ports. only statistics with error thresholds are cleared. a clear happens after generating the report.
  • -a/--clearall β€” clears all performance statistics for all ports.
  • -m/--smadirect β€” accesses fabric information directly from SMA.
  • -M/--pmadirect β€” accesses performance statistics using direct PMA.
  • -A/--allports β€” gets PortInfo for down switch ports. uses direct SMA to get this data. if used with -M, also gets PMA stats for down switch ports.
  • -c/--config file β€” specifies the error thresholds configuration file. default is the /etc/opa/opamon.conf file.
  • -L/--limit β€” limits operation to the exact specified focus with -F for port error counters check (-o errors) and port counters clear (-C or -i). normally, the neighbor of each selected port is also checked/cleared. does not affect other reports.
  • -F/--focus point β€” specifies the focus area for the report.

limits output to reflect a subsection of the fabric. may not work with all reports. (for example, route, mcgroups, and the verify* reports may ignore the option or not generate useful results. πŸ™ˆ)

  • -S/--src point β€” specifies the source for trace route. default is local port.
  • -D/--dest point β€” specifies the destination for trace route.
  • -Q/--quietfocus β€” excludes focus description from the report.

🧚 opareport Snapshot-Specific Options 🧚

for reference, again:

  • -r/--routes β€” gets routing tables for all switches.
  • -V/--vltables β€” gets the P-Key tables for all nodes and the QoS VL-related tables for all ports.

πŸŽ€ opareports Report Types πŸŽ€

okay so this is the master list of every report you can ask for, and honestly? it's giving ✨menu of dreams✨. here's the whole thing, no gatekeeping:

  • comps β€” a summary of every single system and SM chillin' in the fabric. the whole squad, accounted for πŸ’–
  • brcomps β€” same vibe as comps but brief. the tl;dr version, for when you're in a rush πŸƒ
  • nodes β€” summary of all the node types and SMs in the fabric.
  • brnodes β€” the brief version of nodes. short and sweet, periodt.
  • ious β€” summary of all the IO units in the fabric πŸ¦‹
  • lids β€” summary of all the LIDs in the fabric.
  • linkinfo β€” summary of all the links with LIDs in the fabric. the links, but make it identifiable πŸ’…
  • links β€” summary of all links.
  • extlinks β€” summary of links that live external to systems.
  • filinks β€” summary of links to FIs.
  • islinks β€” summary of inter-switch links (ISLs, bestie, the switch-to-switch besties).
  • extislinks β€” summary of inter-switch links external to systems.
  • slowlinks β€” summary of links running slower than expected 😭 (we've all been there)
  • slowconfiglinks β€” summary of links configured to run slower than supported β€” and yes, it includes slowlinks.
  • slowconnlinks β€” summary of links connected with mismatched speed potential β€” and this one includes slowconfiglinks.
  • misconfiglinks β€” summary of links configured to run slower than supported.
  • misconnlinks β€” summary of links connected with mismatched speed potential.
  • errors β€” summary of links whose errors exceed the counts in the configuration file 🚨
  • otherports β€” summary of ports that are not connected to the fabric. the wallflowers πŸ₯Ί
  • linear β€” summary of the linear forwarding data base (FDB) for each switch.
  • mcast β€” summary of the multicast FDB for each switch in the fabric.
  • mcgroups β€” summary of multicast groups.

when you pair it with -d, you unlock extra levels of detail:

  • -d0 : Shows the number of multicast groups
  • -d1 : Shows a list of multicast groups
  • -d2 : Shows a list of members per multicast group

This report can be used with option -X.

  • portusage β€” summary of ports referenced in linear FDB for each switch, broken down by NodeType of DLID.
  • pathusage β€” summary of the number of FI to FI paths routed through each switch port.
  • treepathusage β€” analysis of the number of FI to FI paths routed through each switch port for a FAT tree 🌳
  • portgroups β€” summary of adaptive routing port groups for each switch.
  • quarantinednodes β€” summary of quarantined nodes 🦠 (they're in timeout, fr)
  • validateroutes β€” validates all routes in the fabric.
  • validatevlroutes β€” validates all routes in the fabric using SLSC, SCSC, and SCVL tables.
  • validatepgs β€” validates all port groups in the fabric.
  • validatecreditloops β€” validates topology configuration of the fabric to identify any existing credit loops πŸ”
  • validatevlcreditloops β€” validates topology configuration of the fabric including SLSC, SCSC, and SCVL tables to identify any existing credit loops.
  • validatemcroutes β€” validates multicast routes of the fabric to identify loops in multicast forwarding tables and detect MFT-multicast membership inconsistencies.
  • vfinfo β€” summary of virtual fabric (vFabric) information.
  • vfmember β€” summary of vFabric membership information.
  • dgmember β€” summary of DeviceGroup membership information.
  • verifyfis β€” compares fabric (or snapshot) FIs to supplied topology and identifies differences and omissions.
  • verifysws β€” compares fabric (or snapshot) switches to supplied topology and identifies differences and omissions.
  • verifynodes β€” returns verifyfis and verifysws reports. two for one, we love a bundle 🫢
  • verifysms β€” compares fabric (or snapshot) SMs to supplied topology and identifies differences and omissions.
  • verifylinks β€” compares fabric (or snapshot) links to supplied topology and identifies differences and omissions.
  • verifyextlinks β€” compares fabric (or snapshot) links to supplied topology and identifies differences and omissions. Limits analysis to links external to systems.
  • verifyfilinks β€” compares fabric (or snapshot) links to supplied topology and identify differences and omissions. Limits analysis to links to FIs.
  • verifyislinks β€” compares fabric (or snapshot) links to supplied topology and identify differences and omissions. Limits analysis to inter-switch links.
  • verifyextislinks β€” compares fabric (or snapshot) links to supplied topology and identify differences and omissions. Limits analysis to inter-switch links external to systems.
  • verifyall β€” returns verifyfis, verifysws, verifysms, and verifylinks reports. the full verification bundle πŸ’…
  • all β€” returns comps, nodes, ious, links, extlinks, slowconnlinks, and errors reports. everything, all at once, main character energy πŸ‘‘
  • route β€” traces route between -S and -D points.
  • bfrctrl β€” reports Buffer Control Tables for all ports.
  • snapshot β€” outputs snapshot of the fabric state for later use as snapshot_input. This implies -x. May not be combined with other reports. When selected, -F, -P, -H, and -N options are ignored.
ngl bestie, that "may not be combined with other reports" is not a suggestion. it's the rules. don't fight it πŸ’€
  • topology β€” outputs the topology of the fabric for later use as topology_input. This implies -x. May not be combined with other reports. Use with detail level 3 or more to get Port element under Node in output xml.
  • none β€” no report, useful to clear statistics. yes, the "do nothing" option. iconic honestly 🌈

πŸ¦‹ opareport Point Syntax πŸ¦‹

and now, the ✨point syntax✨ β€” this is how you point at exactly which thing in the fabric you're talking about. bestie, this is your address book for ports and nodes:

  • gid:value β€” value is numeric port GID of form: subnet:guid.
  • lid:value β€” value is numeric LID.
  • lid:value:node β€” value is numeric LID, selects entire node with given LID.
  • lid:value:port:value2 β€” value is numeric LID of node, value2 is port number.
  • portguid:value β€” value is numeric port GUID.
  • nodeguid:value β€” value is numeric node GUID.
  • nodeguid:value1:port:value2 β€” value1 is numeric node GUID, value2 is port number.
  • iocguid:value β€” value is numeric IOC GUID.
  • iocguid:value1:port:value2 β€” value1 is numeric IOC GUID, value2 is port number.
  • systemguid:value β€” value is numeric system image GUID.
  • systemguid:value1:port:value2 β€” value1 is the numeric system image GUID, value2 is port number.
  • ioc:value β€” value is IOC Profile ID String (IOC Name).
  • ioc:value1:port:value2 β€” value1 is IOC Profile ID String (IOC Name), value2 is port number.
  • iocpat:value β€” value is glob pattern for IOC Profile ID String (IOC Name).
  • iocpat:value1:port:value2 β€” value1 is glob pattern for IOC Profile ID String (IOC Name), value2 is port number.
  • ioctype:value β€” value is IOC type (SRP or OTHER).
  • ioctype:value1:port:value2 β€” value1 is IOC type (SRP or OTHER); value2 is port number.
  • 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 the glob pattern for the node description (node name), value2 is port number.
  • nodedetpat:value β€” value is glob pattern for node details.
  • nodedetpat:value1:port:value2 β€” value1 is the glob pattern for the node details, value2 is port number.
  • nodetype:value β€” value is node type (SW or FI).
  • nodetype:value1:port:value2 β€” value1 is node type (SW or FI), value2 is port number.
  • rate:value β€” value is string for rate (25g, 50g, 75g, 100g), omits switch mgmt port 0.
  • portstate:value β€” value is a string for state (down, init, armed, active, notactive, initarmed).
  • portphysstate:value β€” value is a string for PHYs state (polling, disabled, training, linkup, recovery, offline, test)
  • mtucap:value β€” value is MTU size (2048, 4096, 8192, 10240), omits switch mgmt port 0.
  • labelpat:value β€” value is glob pattern for cable label.
  • lengthpat:value β€” value is glob pattern for cable length.
  • cabledetpat:value β€” value is glob pattern for cable details.
  • cabinflenpat:value β€” value is glob pattern for cable info length.
  • cabinfvendnamepat:value β€” value is glob pattern for cable info vendor name.
  • cabinfvendpnpat:value β€” value is glob pattern for cable info vendor part number.
  • cabinfvendrevpat:value β€” value is glob pattern for cable info vendor revision.
  • cabinfvendsnpat:value β€” value is glob pattern for cable info vendor serial number.
  • cabinftype:value β€” value is either optical, passive_copper, active_copper, or unknown.
  • linkdetpat:value β€” value is glob pattern for link details.
  • portdetpat:value β€” value is glob pattern for port details.
  • sm β€” Specifies the master subnet manager (SM). πŸ‘‘
  • smdetpat:value β€” value is glob pattern for SM details.
  • route:point1:point2 β€” Specifies all ports along the routes between the two given points. πŸ›£οΈ
  • led:value β€” value is either on or off for LED port beacon. πŸ’‘
  • linkqual:value β€” Specifies the ports with a link quality equal to value.
  • linkqualLE:value β€” Specifies the ports with a link quality less than or equal to value.
  • linkqualGE:value β€” Specifies the ports with a link quality greater than or equal to value.
  • nodepatfile:FILENAME β€” Specifies the name of file with the list of nodepats or node descriptions.
  • nodepairpatfile:FILENAME β€” Specifies the name of file with the list of node pairs, separated by a colon.
  • ldr β€” Specifies the ports with a non-zero link down reason or neighbor link down reason.
  • ldr:value β€” Specifies the ports with a link down reason or neighbor link down reason equal to value.

πŸ¦‹ opareport Examples πŸ¦‹

for reference, bestie β€” opareport can generate hundreds of different reports. HUNDREDS. the ones people actually generate all the time look like this πŸ‘‡

opareport -o comps -d 3
opareport -o errors -o slowlinks

and then the node filter era begins πŸ’… every single one of these is a real invocation, no cap:

opareport -o nodes -F portguid:0x00117500a000447b
opareport -o nodes -F nodeguid:0x001175009800447b:port:1
opareport -o nodes -F nodeguid:0x001175009800447b
opareport -o nodes -F 'node:duster hfi1_0'
opareport -o nodes -F 'node:duster hfi1_0:port:1'
opareport -o nodes -F 'nodepat:d*'
opareport -o nodes -F 'nodepat:d*:port:1'
opareport -o nodes -F 'nodedetpat:compute*'
opareport -o nodes -F 'nodedetpat:compute*:port:1'
opareport -o nodes -F nodetype:FI
opareport -o nodes -F nodetype:FI:port:1
opareport -o nodes -F lid:1
opareport -o nodes -F led:on
opareport -o nodes -F led:off
opareport -o nodes -F lid:1:node
opareport -o nodes -F lid:1:port:2
opareport -o nodes -F gid:0xfe80000000000000:0x00117500a000447b
opareport -o nodes -F systemguid:0x001175009800447b
opareport -o nodes -F systemguid:0x001175009800447b:port:1
opareport -o nodes -F iocguid:0x00117501300001e0
opareport -o nodes -F iocguid:0x00117501300001e0:port:2
opareport -o nodes -F 'ioc:Chassis 0x001175005000010C, Slot 2, IOC 1'
opareport -o nodes -F 'ioc:Chassis 0x001175005000010C, Slot 2, IOC
       1:port:2'
opareport -o nodes -F 'iocpat:*Slot 2*'
opareport -o nodes -F 'iocpat:*Slot 2*:port:2'
opareport -o nodes -F ioctype:SRP
opareport -o nodes -F ioctype:SRP:port:2

now the cable-girlie corner πŸ”Œ plus links, sm and route filters, and the pathusage duo:

opareport -o extlinks -F rate:100g
opareport -o extlinks -F portstate:armed
opareport -o extlinks -F portphysstate:linkup
opareport -o extlinks -F 'labelpat:S1345*'
opareport -o extlinks -F 'lengthpat:11m'
opareport -o extlinks -F 'cabledetpat:*hitachi*'
opareport -o extlinks -F 'linkdetpat:*core ISL*'
opareport -o extlinks -F 'portdetpat:*mgmt*'
opareport -o links -F mtucap:2048
opareport -o nodes -F sm
opareport -o nodes -F 'smdetpat:primary*'
opareport -o nodes -F 'route:node:duster hfi1_0:node:cuda hfi1_0'
opareport -o nodes -F 'route:node:duster hfi1_0:port:1:node:cuda
       hfi1_0:port:2'
opareport -o treepathusage -F nodepairpatfile:FILENAME
opareport -o pathusage -F nodepatfile:FILENAME

and finally, the snapshot / export girlies πŸ“Έ (redirect that output, you deserve it):

opareport -s -o snapshot > file
opareport -o topology > topology.xml
opareport -o errors -X file
opareport -s --begin "2 days ago"
opareport -s --begin "12:30" --end "14:00"
opareport -o linkinfo -x > file
okay that was a LOT of options but every single one of them ate, periodt πŸ’…

πŸ’– Details πŸ’–

ok so picture this: a simple fabric. the Intel(R) Omni-Path Fabric Suite FastFabric Toolset host is connected to a single fabric, one fabric, that's the whole situation. and by default? the first active port on the FastFabric Toolset host is what gets used to analyze the fabric. easy. iconic. no notes. ✨

but however 😭 in more complex fabrics, the FastFabric Toolset host might be connected to more than one fabric or subnet. and in that case you can specify the ports or HFIs to use with one of these methods:

  • on the command line using the -p option.
  • in a file specified using the -t option.
  • through the environment variables PORTS or PORTS_FILE.
  • using the ports_file configuration option in /etc/opa/opafastfabric.conf.

and if the specified port does not exist or is empty, the first active port on the local system is used instead. but heads up bestie 🫢 in more complex configurations, you must specify the exact ports to use for all fabrics to be analyzed.


same energy for the topology_input file πŸ—ΊοΈ you can specify the one to be used with one of these methods:

  • on the command line using the -T option.
  • in a file specified through the environment variable FF_TOPOLOGY_FILE.
  • using the ff_topology_file configuration option in opafastfabric.conf.

and if the specified file does not exist, no topology_input file is used. alternately, the filename can be specified as NONE to prevent use of an input file. sneaky but valid πŸ’…


πŸŽ€ that's the whole page, bestie!! this was opareports(8) β€” Copyright(C) 2015-2019 Intel Corporation β€” go forth and analyze your fabrics, you main character πŸ’–βœ¨πŸ‘‘