[ofa-general] Bugs in opensm/libvendor
todd.rimmer at qlogic.com
Tue Dec 16 04:39:04 PST 2008
> From: general-bounces at lists.openfabrics.org [mailto:general-
> bounces at lists.openfabrics.org] On Behalf Of Sasha Khapyorsky
> Sent: Monday, December 15, 2008 10:39 AM
> > That's a good question - and I'm going to ask around and double check.
> > My first reaction was that you have to specify how many paths you want
> > from the query - but you're right, the spec doesn't say that.
> Yes, it looks like this (but I cannot understand "why" :( ). But even more
> strange (IMHO) limitation is mandatory SGID - actually it should make
> illegal such GetTable queries as all-to-all, SLID-to-all, etc.. I
> thought that it is permitted.
[Todd Rimmer] It's about scalability. An all to all query in a fabric would return at least N^2 path records, add in an LMC, some varied SLs and PKeys and quickly it becomes ludicrously large. For example at only 25 nodes, with 8 SLs and 4 PKeys you could have 20,000 path records returned. With 1000 nodes and 1 SL and 1 PKey you have 1,000,000 path records.
The practical use of GetTable(PathRecord) is for a node to find a path to another node, hence SGID limitation makes sense.
> > I'm going to do some research on my end. Are you saying that
> > IB_MAD_ATTR_PATH_RECORD should only ever return a single path?
> With GetTable? I think it shouldn't (for some queries it will - such as
> SLID + DLID).
[Todd Rimmer] With GetTable the NumbPath parameter is required and sets a cap on the number of returned paths per SGID-DGID combination. This makes sense since most applications are only prepared to use a handful of paths to each destination. Many would only use 2 paths for a failover scheme. Those which only need 1 path can use Get(PathRecord) in which case NumbPath is implied to be 1.
For scalability, it's best to avoid queries which don't specify a destination (eg. always provide DGID, DLID, etc). Queries without a destination can still be huge and consume a lot of SA and memory resources to process (eg. at 1000 nodes LMC=2, 8 SLs you get 32000 path records back). Besides its very rare than an application really wants to know the path to EVERY other node.
More information about the general