[ofa-general] ibdiagnet and ibdmchk credit loop checks
Dale Purdy
purdy at sgi.com
Tue Feb 3 18:09:08 PST 2009
The ibdiagnet and ibdmchk utilities can report on credit loops in the
topology, but are heavily oriented towards UpDown routing. Each of
these utilities will try to rank the switches and automaticly
determine root nodes for an UpDown routing engine. It is important to
check for credit loops with other routing engines, but these utilities
can give incorrect information with the other routing engines. If
ibdmchk thinks it finds root nodes, it determines credit loops by
checking whether the up/down rules are followed w.r.t. those roots,
which can be wrong. If ibdmchk fails to find root nodes, it falls
back to doing a real credit loop by doing a DFS in the dependency
graph. This can be overridden by supplying an explicit root_guids
file. Why doesn't it just do the real credit loop check in general?
Presumably checking the up/down rules is less costly when UpDown
routing is actually being used. The following change fixes ibdmchk so
that it only uses root nodes and up/down rules when UpDown routing is
being used (by specifying -u on the command line) and otherwise does a
real credit loop check:
diff --git a/ibdm/src/osm_check.cpp b/ibdm/src/osm_check.cpp
index 1c18c1c..d8a4202 100644
--- a/ibdm/src/osm_check.cpp
+++ b/ibdm/src/osm_check.cpp
@@ -568,7 +568,7 @@ int main (int argc, char **argv) {
rootNodes = SubnMgtFindRootNodesByMinHop(&fabric);
}
- if (!rootNodes.empty()) {
+ if (UseUpDown && !rootNodes.empty()) {
cout << "-I- Recognized " << rootNodes.size() << " root nodes:" << endl;
for (list <IBNode *>::iterator nI = rootNodes.begin();
nI != rootNodes.end(); nI++) {
ibdiagnet -r is a slightly different story. It is more useful for
checking a running machine. However, it doesn't seem to have any
options for indicating whether UpDown routing is being used, or for
supplying a root_guids file, and just does the up/down rule checking
against its idea of root nodes whether that makes sense or not. Can
ibdiagnet be changed to just do the real credit loop check? I am not
familiar with tcl and haven't been able to determine what to change.
--
Dale
More information about the general
mailing list