[ofa-general] Couple of questions about OpenSM
Nicolas Morey Chaisemartin
nicolas.morey-chaisemartin at ext.bull.net
Thu Mar 19 03:12:15 PDT 2009
I'm actually working on tweaking OpenSM to achieve lower routing time on the Fat-Tree algorithm.
First question and an easy one:
By default with what optimization options is OpenSM compiled with?
Without any specific options using git, there a no -O2 or such so all the inline functions are not inline which make a huge bad impact on performances (few millions calls to osm_switch_get_least_hops not inline consumes over 15% of computing time)
Next one and a bit harder:
In the Fat-Tree we have a 2D array for hop table (destination lid/port num). Why is this table allocated as we need and not all at once? And is it really necessary to check each time if the lid we use is not greater than max_lid_ho ?
The only reason I would see for this is if a new node/switch with a bigger lid was added to the fabric while openSM is routing. In such a case, wouldn't a lock protect the variables so new lid can't appear/disappear while it calculates the routes ?
If yes, we could allocate all and skip a lot of checks. We have millions of calls to malloc and memset in osm_switch_set_hops plus tests in get_hops/get_least_hops. This may cost a bit more memory, but easily gain 15% on routing computation time.
More information about the general