[ofa-general] Re: [PATCH 2/4] opensm: adding ucast cache option

Yevgeny Kliteynik kliteyn at dev.mellanox.co.il
Mon May 5 14:35:28 PDT 2008


Al Chu wrote:
> Hey Yevgeny,
> 
> Tiny nit, there is no manpage entry :-)

Right, thanks :)

-- Yevgeny

> Al
> 
> On Sun, 2008-05-04 at 13:00 +0300, Yevgeny Kliteynik wrote:
>> Adding ucast cache option to OpenSM command line
>> arguments: -F or --ucast_cache.
>>
>> Signed-off-by:  Yevgeny Kliteynik <kliteyn at dev.mellanox.co.il>
>> ---
>>  opensm/include/opensm/osm_subnet.h |    6 +++++-
>>  opensm/opensm/main.c               |   33 +++++++++++++++++++++++++++++++--
>>  opensm/opensm/osm_subnet.c         |   11 ++++++++++-
>>  3 files changed, 46 insertions(+), 4 deletions(-)
>>
>> diff --git a/opensm/include/opensm/osm_subnet.h b/opensm/include/opensm/osm_subnet.h
>> index b1dd659..cffbe5e 100644
>> --- a/opensm/include/opensm/osm_subnet.h
>> +++ b/opensm/include/opensm/osm_subnet.h
>> @@ -1,6 +1,6 @@
>>  /*
>>   * Copyright (c) 2004-2007 Voltaire, Inc. All rights reserved.
>> - * Copyright (c) 2002-2005 Mellanox Technologies LTD. All rights reserved.
>> + * Copyright (c) 2002-2008 Mellanox Technologies LTD. All rights reserved.
>>   * Copyright (c) 1996-2003 Intel Corporation. All rights reserved.
>>   *
>>   * This software is available to you under a choice of one of two
>> @@ -256,6 +256,7 @@ typedef struct _osm_subn_opt {
>>  	boolean_t sweep_on_trap;
>>  	char *routing_engine_name;
>>  	boolean_t connect_roots;
>> +	boolean_t use_ucast_cache;
>>  	char *lid_matrix_dump_file;
>>  	char *ucast_dump_file;
>>  	char *root_guid_file;
>> @@ -441,6 +442,9 @@ typedef struct _osm_subn_opt {
>>  *		up/down routing engine (even if this violates "pure" deadlock
>>  *		free up/down algorithm)
>>  *
>> +*	use_ucast_cache
>> +*		When TRUE enables unicast routing cache.
>> +*
>>  *	lid_matrix_dump_file
>>  *		Name of the lid matrix dump file from where switch
>>  *		lid matrices (min hops tables) will be loaded
>> diff --git a/opensm/opensm/main.c b/opensm/opensm/main.c
>> index fb41d50..71deacb 100644
>> --- a/opensm/opensm/main.c
>> +++ b/opensm/opensm/main.c
>> @@ -1,6 +1,6 @@
>>  /*
>>   * Copyright (c) 2004-2007 Voltaire, Inc. All rights reserved.
>> - * Copyright (c) 2002-2005 Mellanox Technologies LTD. All rights reserved.
>> + * Copyright (c) 2002-2008 Mellanox Technologies LTD. All rights reserved.
>>   * Copyright (c) 1996-2003 Intel Corporation. All rights reserved.
>>   *
>>   * This software is available to you under a choice of one of two
>> @@ -183,6 +183,17 @@ static void show_usage(void)
>>  	       "          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");
>> +	printf("-F\n"
>> +	       "--ucast_cache\n"
>> +	       "          This option enables unicast routing cache to prevent\n"
>> +	       "          routing recalculation (which is a heavy task in a\n"
>> +	       "          large cluster) when there was no topology change\n"
>> +	       "          detected during the heavy sweep, or when the topology\n"
>> +	       "          change does not require new routing calculation,\n"
>> +	       "          e.g. in case of host reboot.\n"
>> +	       "          This option becomes very handy when the cluster size\n"
>> +	       "          is thousands of nodes.\n"
>> +	       "          Unicast cache is not supported for LMC > 0.\n\n");
>>  	printf("-M\n"
>>  	       "--lid_matrix_file <file name>\n"
>>  	       "          This option specifies the name of the lid matrix dump file\n"
>> @@ -599,7 +610,7 @@ int main(int argc, char *argv[])
>>  	char *ignore_guids_file_name = NULL;
>>  	uint32_t val;
>>  	const char *const short_option =
>> -	    "i:f:ed:g:l:L:s:t:a:u:m:R:zM:U:S:P:Y:NBIQvVhorcyxp:n:q:k:C:";
>> +	    "i:f:ed:g:l:L:s:t:a:u:m:R:zM:U:S:P:Y:FNBIQvVhorcyxp:n:q:k:C:";
>>
>>  	/*
>>  	   In the array below, the 2nd parameter specifies the number
>> @@ -634,6 +645,7 @@ int main(int argc, char *argv[])
>>  		{"smkey", 1, NULL, 'k'},
>>  		{"routing_engine", 1, NULL, 'R'},
>>  		{"connect_roots", 0, NULL, 'z'},
>> +		{"ucast_cache", 0, NULL, 'F'},
>>  		{"lid_matrix_file", 1, NULL, 'M'},
>>  		{"ucast_file", 1, NULL, 'U'},
>>  		{"sadb_file", 1, NULL, 'S'},
>> @@ -805,6 +817,12 @@ int main(int argc, char *argv[])
>>  					"ERROR: LMC must be 7 or less.");
>>  				return (-1);
>>  			}
>> +			if (opt.use_ucast_cache && temp > 0) {
>> +				fprintf(stderr,
>> +					"ERROR: Unicast routing cache is "
>> +					"not supported for LMC > 0\n");
>> +				return (-1);
>> +			}
>>  			opt.lmc = (uint8_t) temp;
>>  			printf(" LMC = %d\n", temp);
>>  			break;
>> @@ -891,6 +909,17 @@ int main(int argc, char *argv[])
>>  			printf(" Connect roots option is on\n");
>>  			break;
>>
>> +		case 'F':
>> +			if (opt.lmc > 0) {
>> +				fprintf(stderr,
>> +					"ERROR: Unicast routing cache is "
>> +					"not supported for LMC > 0\n");
>> +				return (-1);
>> +			}
>> +			opt.use_ucast_cache = TRUE;
>> +			printf(" Unicast routing cache option is on\n");
>> +			break;
>> +
>>  		case 'M':
>>  			opt.lid_matrix_dump_file = optarg;
>>  			printf(" Lid matrix dump file is \'%s\'\n", optarg);
>> diff --git a/opensm/opensm/osm_subnet.c b/opensm/opensm/osm_subnet.c
>> index 47d735f..dc55e72 100644
>> --- a/opensm/opensm/osm_subnet.c
>> +++ b/opensm/opensm/osm_subnet.c
>> @@ -1,6 +1,6 @@
>>  /*
>>   * Copyright (c) 2004-2007 Voltaire, Inc. All rights reserved.
>> - * Copyright (c) 2002-2005 Mellanox Technologies LTD. All rights reserved.
>> + * Copyright (c) 2002-2008 Mellanox Technologies LTD. All rights reserved.
>>   * Copyright (c) 1996-2003 Intel Corporation. All rights reserved.
>>   *
>>   * This software is available to you under a choice of one of two
>> @@ -461,6 +461,7 @@ void osm_subn_set_default_opt(IN osm_subn_opt_t * const p_opt)
>>  	p_opt->sweep_on_trap = TRUE;
>>  	p_opt->routing_engine_name = NULL;
>>  	p_opt->connect_roots = FALSE;
>> +	p_opt->use_ucast_cache = FALSE;
>>  	p_opt->lid_matrix_dump_file = NULL;
>>  	p_opt->ucast_dump_file = NULL;
>>  	p_opt->root_guid_file = NULL;
>> @@ -1290,6 +1291,9 @@ ib_api_status_t osm_subn_parse_conf_file(IN osm_subn_opt_t * const p_opts)
>>  		opts_unpack_boolean("connect_roots",
>>  				    p_key, p_val, &p_opts->connect_roots);
>>
>> +		opts_unpack_boolean("use_ucast_cache",
>> +				    p_key, p_val, &p_opts->use_ucast_cache);
>> +
>>  		opts_unpack_charp("log_file", p_key, p_val, &p_opts->log_file);
>>
>>  		opts_unpack_uint32("log_max_size",
>> @@ -1543,6 +1547,11 @@ ib_api_status_t osm_subn_write_conf_file(IN osm_subn_opt_t * const p_opts)
>>  			"# Connect roots (use FALSE if unsure)\n"
>>  			"connect_roots %s\n\n",
>>  			p_opts->connect_roots ? "TRUE" : "FALSE");
>> +	if (p_opts->use_ucast_cache)
>> +		fprintf(opts_file,
>> +			"# Use unicast routing cache (use FALSE if unsure)\n"
>> +			"use_ucast_cache %s\n\n",
>> +			p_opts->use_ucast_cache ? "TRUE" : "FALSE");
>>  	if (p_opts->lid_matrix_dump_file)
>>  		fprintf(opts_file,
>>  			"# Lid matrix dump file name\n"




More information about the general mailing list