opensm: Allow connectivity between switches in up down and fat tree
PATCH 1/1 opensm: Allow connectivity between switches in up down and fat tree
Modify option connect_roots to connect_switches and allow connectivity between all switches (not only root nodes) in up down and fat tree routing algorithms
--- opensm/include/opensm/osm_subnet.h | 6 +++--- opensm/man/opensm.8.in | 6 +++--- opensm/opensm/main.c | 8 ++++---- opensm/opensm/osm_subnet.c | 10 +++++----- opensm/opensm/osm_ucast_ftree.c | 2 +- opensm/opensm/osm_ucast_updn.c | 6 ++---- 6 files changed, 18 insertions(+), 20 deletions(-)
opensm/include/opensm/osm_subnet.h +3 -3
@@ -193,7 +193,7 @@ typedef struct osm_subn_opt {boolean_t sweep_on_trap;char *routing_engine_names;boolean_t use_ucast_cache; -boolean_t connect_roots; +boolean_t connect_switches;char *lid_matrix_dump_file;char *lfts_file;char *root_guid_file;
@@ -388,8 +388,8 @@ typedef struct osm_subn_opt {* routing_engine_names * Name of routing engine(s) to use. * -* connect_roots -* The option which will enforce root to root connectivity with +* connect_switches +* The option which will enforce all switch connectivity with * up/down and fat-tree routing engines (even if this violates * "pure" deadlock free up/down or fat-tree algorithm) *
opensm/man/opensm.8.in +3 -3
@@ -18,7 +18,7 @@ opensm \- InfiniBand subnet manager and administration (SM/SA) [\-\-do_mesh_analysis] [\-\-lash_start_vl <vl number>] [\-A | \-\-ucast_cache] -[\-z | \-\-connect_roots] +[\-z | \-\-connect_switches] [\-M <file name> | \-\-lid_matrix_file <file name>] [\-U <file name> | \-\-lfts_file <file name>] [\-S | \-\-sadb_file <file name>]
@@ -172,9 +172,9 @@ is host reboot, which otherwise would cause two full routing recalculations: one when the host goes down, and the other when the host comes back online. .TP -\fB\-z\fR, \fB\-\-connect_roots\fR +\fB\-z\fR, \fB\-\-connect_switches\fR This option enforces routing engines (up/down and -fat-tree) to make connectivity between root switches and in +fat-tree) to make connectivity between all switches and in this way to be fully IBA complaint. In many cases this can violate "pure" deadlock free algorithm, so use it carefully. .TP
opensm/opensm/main.c +4 -4
@@ -185,7 +185,7 @@ static void show_usage(void) " Defaults to 0.\n");printf ("--sm_sl <sl number>\n" " Sets the SL to use to communicate with the SM/SA. Defaults to 0.\n\n" ); -printf ("--connect_roots, -z\n" +printf ("--connect_switches, -z\n" " This option enforces routing engines (up/down and \n" " fat-tree) to make connectivity between root switches\n" " and in this way be IBA compliant. In many cases,\n"
@@ -587,7 +587,7 @@ int main(int argc, char *argv[]) {"smkey", 1, NULL, 'k'}, {"routing_engine", 1, NULL, 'R'}, {"ucast_cache", 0, NULL, 'A'}, - {"connect_roots", 0, NULL, 'z'}, + {"connect_switches", 0, NULL, 'z'}, {"lid_matrix_file", 1, NULL, 'M'}, {"lfts_file", 1, NULL, 'U'}, {"sadb_file", 1, NULL, 'S'},
@@ -887,8 +887,8 @@ int main(int argc, char *argv[])break ;case 'z' : - opt.connect_roots = TRUE; -printf (" Connect roots option is on\n" ); + opt.connect_switches = TRUE; +printf (" Connect switches option is on\n" );break ;case 'A' :
opensm/opensm/osm_subnet.c +5 -5
@@ -330,7 +330,7 @@ static const opt_rec_t opt_tbl[] = { { "port_profile_switch_nodes", OPT_OFFSET(port_profile_switch_nodes), opts_parse_boolean, NULL, 1 }, { "sweep_on_trap", OPT_OFFSET(sweep_on_trap), opts_parse_boolean, NULL, 1 }, { "routing_engine", OPT_OFFSET(routing_engine_names), opts_parse_charp, NULL, 0 }, - { "connect_roots", OPT_OFFSET(connect_roots), opts_parse_boolean, NULL, 1 }, + { "connect_switches", OPT_OFFSET(connect_switches), opts_parse_boolean, NULL, 1 }, { "use_ucast_cache", OPT_OFFSET(use_ucast_cache), opts_parse_boolean, NULL, 0 }, { "log_file", OPT_OFFSET(log_file), opts_parse_charp, NULL, 0 }, { "log_max_size", OPT_OFFSET(log_max_size), opts_parse_uint32, opts_setup_log_max_size, 1 },
@@ -741,7 +741,7 @@ void osm_subn_set_default_opt(IN osm_subn_opt_t * p_opt) p_opt->sweep_on_trap = TRUE; p_opt->use_ucast_cache = FALSE; p_opt->routing_engine_names =NULL ; - p_opt->connect_roots = FALSE; + p_opt->connect_switches = FALSE; p_opt->lid_matrix_dump_file =NULL ; p_opt->lfts_file =NULL ; p_opt->root_guid_file =NULL ;
@@ -1401,9 +1401,9 @@ int osm_subn_output_conf(FILE *out, IN osm_subn_opt_t * p_opts) p_opts->routing_engine_names : null_str);fprintf (out, -"# Connect roots (use FALSE if unsure)\n" -"connect_roots %s\n\n" , - p_opts->connect_roots ?"TRUE" :"FALSE" ); +"# Connect switches (use FALSE if unsure)\n" +"connect_switches %s\n\n" , + p_opts->connect_switches ?"TRUE" :"FALSE" );fprintf (out, "# Use unicast routing cache (use FALSE if unsure)\n"
opensm/opensm/osm_ucast_ftree.c +1 -1
@@ -4061,7 +4061,7 @@ static int do_routing(IN void *context) "Filling switch forwarding tables for switch-to-switch paths\n");fabric_route_to_switches (p_ftree); -if (p_ftree->p_osm->subn.opt.connect_roots) { +if (p_ftree->p_osm->subn.opt.connect_switches) {OSM_LOG (&p_ftree->p_osm->log,OSM_LOG_VERBOSE ,"Connecting switches that are unreachable within " "Up/Down rules\n" );
opensm/opensm/osm_ucast_updn.c +2 -4
@@ -314,9 +314,7 @@ static int updn_set_min_hop_table(IN updn_t * p_updn) item = cl_qmap_next(item)) { p_sw = (osm_switch_t *)item;/* Clear Min Hop Table */ -if (p_subn->opt.connect_roots) -updn_clear_non_root_hops (p_updn, p_sw); -else +if (!p_subn->opt.connect_switches)osm_switch_clear_hops (p_sw); }
@@ -596,7 +594,7 @@ static int updn_lid_matrices(void *ctx)OSM_LOG (&p_updn->p_osm->log,OSM_LOG_ERROR ,"ERR : " "cannot parse root guids file \'%s\'\n" , p_updn->p_osm->subn.opt.root_guid_file); -if (p_updn->p_osm->subn.opt.connect_roots && +if (p_updn->p_osm->subn.opt.connect_switches && p_updn->num_roots >1 )osm_ucast_mgr_build_lid_matrices (&p_updn->p_osm->sm.ucast_mgr); }else {
Signature · 6 lines
1.5.5 -- To unsubscribe from this list: send the line "unsubscribe linux-rdma" in the body of a message to [email protected] More majordomo info at http://vger.kernel.org/majordomo-info.html
PATCH v2 1/1 opensm: Modify connect_roots to allow connectivity between all switches
In reply to a message not in the archiveAfter a second thought and in order not to break current configuration,
I send this modified patch that does not change connect_roots option but changes its functionality in up-down (I think that in fat-tree it is already implemented)
Modify connect_roots option to allow connectivity between all switches in up-down routing algorithm and in this way be fully IBA compliant
--- opensm/man/opensm.8.in | 2 +- opensm/opensm/main.c | 2 +- opensm/opensm/osm_ucast_updn.c | 4 +--- 3 files changed, 3 insertions(+), 5 deletions(-)
opensm/man/opensm.8.in +1 -1
@@ -174,7 +174,7 @@ the host comes back online. .TP \fB\-z\fR, \fB\-\-connect_roots\fR This option enforces routing engines (up/down and -fat-tree) to make connectivity between root switches and in +fat-tree) to make connectivity between all switches and in this way to be fully IBA complaint. In many cases this can violate "pure" deadlock free algorithm, so use it carefully. .TP
opensm/opensm/main.c +1 -1
@@ -187,7 +187,7 @@ static void show_usage(void) " Sets the SL to use to communicate with the SM/SA. Defaults to 0.\n\n");printf ("--connect_roots, -z\n" " This option enforces routing engines (up/down and \n" -" fat-tree) to make connectivity between root switches\n" +" fat-tree) to make connectivity between all switches\n" " and in this way be IBA compliant. In many cases,\n" " this can violate \"pure\" deadlock free algorithm, so\n" " use it carefully.\n\n" );
opensm/opensm/osm_ucast_updn.c +1 -3
@@ -314,9 +314,7 @@ static int updn_set_min_hop_table(IN updn_t * p_updn) item = cl_qmap_next(item)) { p_sw = (osm_switch_t *)item;/* Clear Min Hop Table */ -if (p_subn->opt.connect_roots) -updn_clear_non_root_hops (p_updn, p_sw); -else +if (!p_subn->opt.connect_roots)osm_switch_clear_hops (p_sw); }
Signature · 6 lines
1.5.5 -- To unsubscribe from this list: send the line "unsubscribe linux-rdma" in the body of a message to [email protected] More majordomo info at http://vger.kernel.org/majordomo-info.html
Re: [PATCH v2] opensm: Modify connect_roots to allow connectivity between all switches
In reply to a message not in the archiveEli,
Quoted 46 lines · Eli Dorfman (Voltaire)
After a second thought and in order not to break current configuration,
I send this modified patch that does not changeconnect_rootsoption but changes its functionality in up-down (I think that in fat-tree it is already implemented)Modify
connect_rootsoption to allow connectivity between all switches in up-down routing algorithm and in this way be fully IBA compliantSigned-off-by Eli Dorfman<elid-smomgflXvOZWk0Htik3J/[email protected]>--- opensm/man/opensm.8.in | 2 +- opensm/opensm/main.c | 2 +- opensm/opensm/osm_ucast_updn.c | 4 +--- 3 files changed, 3 insertions(+), 5 deletions(-)opensm/man/opensm.8.in +1
-1@@ -174,7 +174,7 @@ the host comes back online. .TP \fB\-z\fR, \fB\-\-connect_roots\fR This option enforces routing engines (up/down and -fat-tree) to make connectivity between root switches and in +fat-tree) to make connectivity between all switches and in this way to be fully IBA complaint. In many cases this can violate "pure" deadlock free algorithm, so use it carefully. .TPopensm/opensm/main.c +1
-1@@ -187,7 +187,7 @@ static void show_usage(void) " Sets the SL to use to communicate with the SM/SA. Defaults to 0.\n\n");printf ("--connect_roots, -z\n" " This option enforces routing engines (up/down and \n" -" fat-tree) to make connectivity between root switches\n" +" fat-tree) to make connectivity between all switches\n" " and in this way be IBA compliant. In many cases,\n" " this can violate \"pure\" deadlock free algorithm, so\n" " use it carefully.\n\n" );opensm/opensm/osm_ucast_updn.c +0
-0
opensm/opensm/osm_ucast_updn.c static int updn_set_min_hop_table(IN updn_t * p_updn) · line 320
Quoted 10 lines
opensm/opensm/osm_ucast_updn.c +1
-3@@ -314,9 +314,7 @@ static int updn_set_min_hop_table(IN updn_t * p_updn) item = cl_qmap_next(item)) { p_sw = (osm_switch_t *)item;/* Clear Min Hop Table */ -if (p_subn->opt.connect_roots) -updn_clear_non_root_hops (p_updn, p_sw); -else +if (!p_subn->opt.connect_roots)osm_switch_clear_hops (p_sw); }
What kind of testing was done for this?
I have a strong feeling that it will break up/down. If the connect_roots option is on, you will not clear the lid matrix at all, and it will contain also the down/up routes.
-- Yevgeny
--
To unsubscribe from this list: send the line "unsubscribe linux-rdma" in the body of a message to [email protected] More majordomo info at http://vger.kernel.org/majordomo-info.html
Re: [PATCH v2] opensm: Modify connect_roots to allow connectivity between all switches
In reply to a message not in the archiveQuoted 75 lines · Eli Dorfman (Voltaire)
Quoted 65 lines · Yevgeny Kliteynik
Eli,
Quoted 62 lines · Eli Dorfman (Voltaire)
After a second thought and in order not to break current configuration, I send this modified patch that does not change
connect_rootsoption but changes its functionality in up-down (I think that in fat-tree it is already implemented)Modify
connect_rootsoption to allow connectivity between all switches in up-down routing algorithm and in this way be fully IBA compliantSigned-off-by Eli Dorfman<elid-smomgflXvOZWk0Htik3J/[email protected]>--- opensm/man/opensm.8.in | 2 +- opensm/opensm/main.c | 2 +- opensm/opensm/osm_ucast_updn.c | 4 +--- 3 files changed, 3 insertions(+), 5 deletions(-)opensm/man/opensm.8.in +1
-1@@ -174,7 +174,7 @@ the host comes back online. .TP \fB\-z\fR, \fB\-\-connect_roots\fR This option enforces routing engines (up/down and -fat-tree) to make connectivity between root switches and in +fat-tree) to make connectivity between all switches and in this way to be fully IBA complaint. In many cases this can violate "pure" deadlock free algorithm, so use it carefully. .TPopensm/opensm/main.c +0
-0@@ -187,7 +187,7 @@ static void show_usage(void) " Sets the SL to use to communicate with the SM/SA. Defaults to 0.\n\n"); printf("--connect_roots, -z\n" " This option enforces routing engines (up/downand \n"
- " fat-tree) to make connectivity between root
switches\n"
+ " fat-tree) to make connectivity between all
switches\n"
" and in this way be IBA compliant. In many
cases,\n"
" this can violate \"pure\" deadlock free
algorithm, so\n"" use it carefully.\n\n");opensm/opensm/osm_ucast_updn.c +1
-3@@ -314,9 +314,7 @@ static int updn_set_min_hop_table(IN updn_t * p_updn) item = cl_qmap_next(item)) { p_sw = (osm_switch_t *)item;/* Clear Min Hop Table */ -if (p_subn->opt.connect_roots) -updn_clear_non_root_hops (p_updn, p_sw); -else +if (!p_subn->opt.connect_roots)osm_switch_clear_hops (p_sw);Quoted 8 lines
opensm/opensm/osm_ucast_updn.c static int updn_set_min_hop_table(IN updn_t * p_updn) · line 320
Quoted 2 lines
opensm/opensm/osm_ucast_updn.c +0
-0}What kind of testing was done for this?
I have a strong feeling that it will break up/down. If theconnect_rootsoption is on, you will not clear the lid matrix at all, and it will contain also the down/up routes.
Quoted 3 lines
that is the idea.
instead of leaving only up/dpwn routes we want to keep routes between all switches. the routes between host nodes will still be up/down.
Lid matrix might contain down/up routes between many kinds of switches, not only between roots. This means that you might have down/up paths between leaf switches, even though you could have found up/down path for them. This also means that you might end up with down/up routes between HCAs that are connected to these leafs.
-- Yevgeny
Quoted 10 lines
Eli
Quoted 2 lines
-- Yevgeny
--
To unsubscribe from this list: send the line "unsubscribe linux-rdma" in the body of a message to [email protected] More majordomo info at http://vger.kernel.org/majordomo-info.html
--
To unsubscribe from this list: send the line "unsubscribe linux-rdma" in the body of a message to [email protected] More majordomo info at http://vger.kernel.org/majordomo-info.html
Re: [PATCH v2] opensm: Modify connect_roots to allow connectivity between all switches
In reply to a message not in the archiveQuoted 65 lines · Yevgeny Kliteynik
Eli,
Quoted 62 lines · Eli Dorfman (Voltaire)
After a second thought and in order not to break current configuration, I send this modified patch that does not change
connect_rootsoption but changes its functionality in up-down (I think that in fat-tree it is already implemented)Modify
connect_rootsoption to allow connectivity between all switches in up-down routing algorithm and in this way be fully IBA compliantSigned-off-by Eli Dorfman<elid-smomgflXvOZWk0Htik3J/[email protected]>--- opensm/man/opensm.8.in | 2 +- opensm/opensm/main.c | 2 +- opensm/opensm/osm_ucast_updn.c | 4 +--- 3 files changed, 3 insertions(+), 5 deletions(-)opensm/man/opensm.8.in +1
-1@@ -174,7 +174,7 @@ the host comes back online. .TP \fB\-z\fR, \fB\-\-connect_roots\fR This option enforces routing engines (up/down and -fat-tree) to make connectivity between root switches and in +fat-tree) to make connectivity between all switches and in this way to be fully IBA complaint. In many cases this can violate "pure" deadlock free algorithm, so use it carefully. .TPopensm/opensm/main.c +0
-0@@ -187,7 +187,7 @@ static void show_usage(void) " Sets the SL to use to communicate with the SM/SA. Defaults to 0.\n\n"); printf("--connect_roots, -z\n" " This option enforces routing engines (up/downand \n"
- " fat-tree) to make connectivity between root
switches\n"
+ " fat-tree) to make connectivity between all
switches\n"
" and in this way be IBA compliant. In many
cases,\n"
" this can violate \"pure\" deadlock free
algorithm, so\n"" use it carefully.\n\n");opensm/opensm/osm_ucast_updn.c +1
-3@@ -314,9 +314,7 @@ static int updn_set_min_hop_table(IN updn_t * p_updn) item = cl_qmap_next(item)) { p_sw = (osm_switch_t *)item;/* Clear Min Hop Table */ -if (p_subn->opt.connect_roots) -updn_clear_non_root_hops (p_updn, p_sw); -else +if (!p_subn->opt.connect_roots)osm_switch_clear_hops (p_sw);
Quoted 8 lines
opensm/opensm/osm_ucast_updn.c static int updn_set_min_hop_table(IN updn_t * p_updn) · line 320
Quoted 2 lines
opensm/opensm/osm_ucast_updn.c +0
-0}What kind of testing was done for this?
I have a strong feeling that it will break up/down. If theconnect_rootsoption is on, you will not clear the lid matrix at all, and it will contain also the down/up routes.
that is the idea.
instead of leaving only up/dpwn routes we want to keep routes between all switches. the routes between host nodes will still be up/down.
Eli
Quoted 2 lines
-- Yevgeny
--
To unsubscribe from this list: send the line "unsubscribe linux-rdma" in the body of a message to [email protected] More majordomo info at http://vger.kernel.org/majordomo-info.html
Re: [PATCH v2] opensm: Modify connect_roots to allow connectivity between all switches
In reply to a message not in the archiveQuoted 83 lines · Yevgeny Kliteynik
Quoted 77 lines · Eli Dorfman (Voltaire)
Quoted 67 lines · Yevgeny Kliteynik
Eli,
Quoted 64 lines · Eli Dorfman (Voltaire)
After a second thought and in order not to break current configuration, I send this modified patch that does not change
connect_rootsoption but
changes its functionality in up-down (I think that in fat-tree it is already implemented)Modify
connect_rootsoption to allow connectivity between all switches in up-down routing algorithm and in this way be fully IBA compliantSigned-off-by Eli Dorfman<elid-smomgflXvOZWk0Htik3J/[email protected]>--- opensm/man/opensm.8.in | 2 +- opensm/opensm/main.c | 2 +- opensm/opensm/osm_ucast_updn.c | 4 +--- 3 files changed, 3 insertions(+), 5 deletions(-)opensm/man/opensm.8.in +1
-1@@ -174,7 +174,7 @@ the host comes back online. .TP \fB\-z\fR, \fB\-\-connect_roots\fR This option enforces routing engines (up/down and -fat-tree) to make connectivity between root switches and in +fat-tree) to make connectivity between all switches and in this way to be fully IBA complaint. In many cases this can violate "pure" deadlock free algorithm, so use it carefully. .TPopensm/opensm/main.c +0
-0@@ -187,7 +187,7 @@ static void show_usage(void) " Sets the SL to use to communicate with the SM/SA. Defaults to 0.\n\n"); printf("--connect_roots, -z\n" " This option enforces routing engines (up/downand \n"
- " fat-tree) to make connectivity between root
switches\n"
+ " fat-tree) to make connectivity between all
switches\n"
" and in this way be IBA compliant. In many
cases,\n"
" this can violate \"pure\" deadlock free
algorithm, so\n"" use it carefully.\n\n");opensm/opensm/osm_ucast_updn.c +1
-3@@ -314,9 +314,7 @@ static int updn_set_min_hop_table(IN updn_t * p_updn) item = cl_qmap_next(item)) { p_sw = (osm_switch_t *)item;/* Clear Min Hop Table */ -if (p_subn->opt.connect_roots) -updn_clear_non_root_hops (p_updn, p_sw); -else +if (!p_subn->opt.connect_roots)osm_switch_clear_hops (p_sw);Quoted 8 lines
opensm/opensm/osm_ucast_updn.c static int updn_set_min_hop_table(IN updn_t * · line 320
Quoted 2 lines
opensm/opensm/osm_ucast_updn.c +0
-0}What kind of testing was done for this?
I have a strong feeling that it will break up/down. If theconnect_rootsoption is on, you will not clear the lid matrix at all, and it will contain also the down/up routes.Quoted 4 lines
that is the idea.
instead of leaving only up/dpwn routes we want to keep routes between all switches.
the routes between host nodes will still be up/down.
Quoted 6 lines
Lid matrix might contain down/up routes between many kinds of switches, not only between roots. This means that you might have down/up paths between leaf switches, even though you could have found up/down path for them. This also means that you might end up with down/up routes between HCAs that are connected to these leafs.
ok I'll check this again.
Thanks,
Eli
Quoted 14 lines
-- Yevgeny
Quoted 10 lines
Eli
Quoted 2 lines
-- Yevgeny
Signature · 3 lines
To unsubscribe from this list: send the line "unsubscribe linux-rdma" in the body of a message to [email protected] More majordomo info at http://vger.kernel.org/majordomo-info.html
--
To unsubscribe from this list: send the line "unsubscribe linux-rdma" in the body of a message to [email protected] More majordomo info at http://vger.kernel.org/majordomo-info.html