[ofa-general] [PATCH 5/7 V3] osm: QoS - adding QoS policy options
Eitan Zahavi
eitan at mellanox.co.il
Thu Aug 30 04:30:58 PDT 2007
> -----Original Message-----
> From: Hal Rosenstock [mailto:hal.rosenstock at gmail.com]
> Sent: Thursday, August 30, 2007 2:07 PM
> To: Eitan Zahavi
> Cc: Yevgeny Kliteynik; OpenIB
> Subject: Re: [ofa-general] [PATCH 5/7 V3] osm: QoS - adding
> QoS policy options
>
> On 8/30/07, Eitan Zahavi <eitan at mellanox.co.il> wrote:
> > The standard option that is used by auto tools to have dependencies
> > that are only used by a maintainer is:
> > --enable-maintainer-mode
> >
> > We use it to hide .l/.y/.i dependencies from the Makefile such that
> > only those who declare themselves maintainers will refresh
> > automatically generated source files.
>
> I'm not sure this is being done currently nor are all the
> files needed for this approach checked into the repository.
I think it is a mistake. But I will let you eat your own pudding...
Eitan Zahavi
>
> -- Hal
>
> > Why do you want to invent a new one?
> >
> > Eitan Zahavi
> > Senior Engineering Director, Software Architect Mellanox
> Technologies
> > LTD
> > Tel:+972-4-9097208
> > Fax:+972-4-9593245
> > P.O. Box 586 Yokneam 20692 ISRAEL
> >
> >
> >
> > > -----Original Message-----
> > > From: general-bounces at lists.openfabrics.org
> > > [mailto:general-bounces at lists.openfabrics.org] On Behalf
> Of Yevgeny
> > > Kliteynik
> > > Sent: Thursday, August 30, 2007 4:32 AM
> > > To: Hal Rosenstock
> > > Cc: OpenIB
> > > Subject: Re: [ofa-general] [PATCH 5/7 V3] osm: QoS - adding QoS
> > > policy options
> > >
> > > Hal Rosenstock wrote:
> > > > On 8/29/07, Yevgeny Kliteynik
> <kliteyn at dev.mellanox.co.il> wrote:
> > > >> Hal Rosenstock wrote:
> > > >>> On 8/29/07, Yevgeny Kliteynik
> <kliteyn at dev.mellanox.co.il> wrote:
> > > >>>> Hal Rosenstock wrote:
> > > >>>>> On 8/27/07, Yevgeny Kliteynik
> > > <kliteyn at dev.mellanox.co.il> wrote:
> > > >>>>>> Adding QoS policy file option to OpenSM optionsm and
> > > QoS Policy
> > > >>>>>> field to subn object.
> > > >>>>>>
> > > >>>>>> Signed-off-by: Yevgeny Kliteynik
> <kliteyn at dev.mellanox.co.il>
> > > >>>>>> ---
> > > >>>>>> opensm/include/opensm/osm_base.h | 17
> +++++++++++++++++
> > > >>>>>> opensm/include/opensm/osm_subnet.h | 13 +++++++++++++
> > > >>>>>> opensm/opensm/main.c | 12 +++++++++++-
> > > >>>>>> opensm/opensm/osm_subnet.c | 10 +++++++++-
> > > >>>>>> 4 files changed, 50 insertions(+), 2 deletions(-)
> > > >>>>>>
> > > >>>>>> diff --git a/opensm/include/opensm/osm_base.h
> > > >>>>>> b/opensm/include/opensm/osm_base.h
> > > >>>>>> index 545779b..0a35e22 100644
> > > >>>>>> --- a/opensm/include/opensm/osm_base.h
> > > >>>>>> +++ b/opensm/include/opensm/osm_base.h
> > > >>>>>> @@ -224,6 +224,23 @@ BEGIN_C_DECLS #define
> > > >>>>>> OSM_DEFAULT_PARTITION_CONFIG_FILE
> > > "/etc/ofa/opensm-partitions.conf"
> > > >>>>>> #endif
> > > >>>>>> /***********/
> > > >>>>>> +
> > > >>>>>> +/****d* OpenSM: Base/OSM_DEFAULT_QOS_POLICY_FILE
> > > >>>>>> +* NAME
> > > >>>>>> +* OSM_DEFAULT_QOS_POLICY_FILE
> > > >>>>>> +*
> > > >>>>>> +* DESCRIPTION
> > > >>>>>> +* Specifies the default QoS policy file name
> > > >>>>>> +*
> > > >>>>>> +* SYNOPSIS
> > > >>>>>> +*/
> > > >>>>>> +#ifdef __WIN__
> > > >>>>>> +#define OSM_DEFAULT_QOS_POLICY_FILE
> > > >>>>>> +strcat(GetOsmCachePath(),
> > > >>>>>> +"osm-qos-policy.conf") #else #define
> > > OSM_DEFAULT_QOS_POLICY_FILE
> > > >>>>>> +"/etc/ofa/opensm-qos-policy.conf"
> > > >>>>>> +#endif
> > > >>>>>> +/***********/
> > > >>>>>> +
> > > >>>>>> /****d* OpenSM: Base/OSM_DEFAULT_SWEEP_INTERVAL_SECS
> > > >>>>>> * NAME
> > > >>>>>> * OSM_DEFAULT_SWEEP_INTERVAL_SECS
> > > >>>>>> diff --git a/opensm/include/opensm/osm_subnet.h
> > > >>>>>> b/opensm/include/opensm/osm_subnet.h
> > > >>>>>> index a7543dc..5e8b522 100644
> > > >>>>>> --- a/opensm/include/opensm/osm_subnet.h
> > > >>>>>> +++ b/opensm/include/opensm/osm_subnet.h
> > > >>>>>> @@ -68,6 +68,7 @@ BEGIN_C_DECLS
> > > >>>>>> #define OSM_SUBNET_VECTOR_GROW_SIZE 1
> > > >>>>>> #define OSM_SUBNET_VECTOR_CAPACITY 256
> > > >>>>>> struct _osm_opensm_t;
> > > >>>>>> +struct _osm_qos_policy_t;
> > > >>>>>>
> > > >>>>>> /****h* OpenSM/Subnet
> > > >>>>>> * NAME
> > > >>>>>> @@ -257,6 +258,7 @@ typedef struct _osm_subn_opt {
> > > >>>>>> char *partition_config_file;
> > > >>>>>> boolean_t no_partition_enforcement;
> > > >>>>>> boolean_t no_qos;
> > > >>>>>> + char *qos_policy_file;
> > > >>>>>> boolean_t accum_log_file;
> > > >>>>>> char *console;
> > > >>>>>> uint16_t console_port; @@ -398,6 +400,13 @@ typedef
> > > >>>>>> struct _osm_subn_opt {
> > > >>>>>> * specified the log file will be
> > > truncated upon reaching
> > > >>>>>> * this limit.
> > > >>>>>> *
> > > >>>>>> +* no_qos
> > > >>>>>> +* Boolean that specifies whether the
> > > OpenSM QoS functionality
> > > >>>>>> +* should be off or on.
> > > >>>>>> +*
> > > >>>>>> +* qos_policy_file
> > > >>>>>> +* Name of the QoS policy file.
> > > >>>>>> +*
> > > >>>>> Are these options mutually exclusive or not ?
> > > >>>> If QoS in OpenSM is off, the qos_policy_file will be ignored
> > > >>> But aren't there two QoSs ? Can't the old QoS be run
> > > without this ?
> > > >>> I think that is a requirement.
> > > >> OK, there are three ways we want this thing to work:
> > > >> 1. QoS is off
> > > >> 2. The old QoS is on but w/o policy file 3. The old QoS is
> > > on, plus
> > > >> reading policy file
> > > >>
> > > >> The first option is clear: if a user doesn't turns QoS on
> > > (-Q), QoS is off as before.
> > > >>
> > > >> Second and third options: if QoS is on, OpenSM looks for
> > > policy file
> > > >> in the default location or in other location that was
> provided by
> > > >> user. If the file is not found, QoS works as before.
> > > >
> > > > This sounds OK to me and is my first preference.
> > > >
> > > >> Do we want to add additional option for "enhanced" QoS?
> > > >> If so, we will have three QoS-ralated command line options:
> > > >> - option for turning the QoS on (currently -Q)
> > > >> - option to turn the new QoS on (some new letter - must get
> > > >> one quick before they all run out... :)
> > > >> - option for policy file location if differs from default
> > > (currently
> > > >> -Y)
> > > >
> > > > This seems like the least preferable to me. Also, would
> > > need to deal
> > > > with both on which seems to mean use new QoS.
> > > >
> > > >> Alternatively, we can turn -Q option into levels:
> > > >> -Q 0: QoS is off (default)
> > > >> -Q 1: old QoS is on
> > > >> -Q 2: old QoS plus reading policy file
> > > >
> > > > This one also seems OK to me (second preference).
> > > >
> > > > Anyone else with an opinion on this ? Sasha ?
> > > >
> > > > Also, what about --enable-qos-policy build option for those
> > > who don't
> > > > want to include this in their build ?
> > >
> > > Do you mean permanently, or just until the new QoS will
> be stable?
> > > Note that if someone gets ofed rpm, he gets the generated
> files in
> > > this rpm, so he doesn't need les or yacc, so this option would be
> > > useful only for machines that have git but don't have lex or yacc.
> > > Do you think it's a real issue?
> > >
> > > -- Yevgeny
> > >
> > > > -- Hal
> > > >
> > > >> -- Yevgeny
> > > >>
> > > >>>>>> * accum_log_file
> > > >>>>>> * If TRUE (default) - the log file will
> > > be accumulated.
> > > >>>>>> * If FALSE - the log file will be erased
> > > before starting current opensm run.
> > > >>>>>> @@ -551,6 +560,7 @@ typedef struct _osm_subn {
> > > >>>>>> ib_net64_t sm_port_guid;
> > > >>>>>> uint8_t sm_state;
> > > >>>>>> osm_subn_opt_t opt;
> > > >>>>>> + struct _osm_qos_policy_t *p_qos_policy;
> > > >>>>>> uint16_t max_unicast_lid_ho;
> > > >>>>>> uint16_t max_multicast_lid_ho;
> > > >>>>>> uint8_t min_ca_mtu;
> > > >>>>>> @@ -619,6 +629,9 @@ typedef struct _osm_subn {
> > > >>>>>> * opt
> > > >>>>>> * Subnet options structure contains site
> > > specific configuration.
> > > >>>>>> *
> > > >>>>>> +* p_qos_policy
> > > >>>>>> +* Subnet QoS policy structure.
> > > >>>>>> +*
> > > >>>>>> * max_unicast_lid_ho
> > > >>>>>> * The minimal max unicast lid reported
> > > by all switches
> > > >>>>>> *
> > > >>>>>> diff --git a/opensm/opensm/main.c b/opensm/opensm/main.c
> > > >>>>>> index e2541d8..599c4dc 100644
> > > >>>>>> --- a/opensm/opensm/main.c
> > > >>>>>> +++ b/opensm/opensm/main.c
> > > >>>>>> @@ -269,6 +269,10 @@ void show_usage(void)
> > > >>>>>> " The default name is \'"
> > > >>>>>> OSM_DEFAULT_PARTITION_CONFIG_FILE "\'.\n\n");
> > > >>>>>> printf("-Q\n" "--qos\n" " This option
> > > enables QoS setup.\n\n");
> > > >>>>>> + printf("-Y\n"
> > > >>>>>> + "--qos_policy_file\n"
> > > >>>>>> + " This option defines the
> > > optional QoS policy file.\n"
> > > >>>>>> + " The default name is \'"
> > > OSM_DEFAULT_QOS_POLICY_FILE "\'.\n\n");
> > > >>>>>> printf("-N\n"
> > > >>>>>> "--no_part_enforce\n"
> > > >>>>>> " This option disables
> > > partition enforcement on switch external ports.\n\n");
> > > >>>>>> @@ -580,7 +584,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:R:zM:U:S:P:NBIQvVhorcyxp:n:q:k:C:";
> > > >>>>>> +
> > > >>>>>> +
> "i:f:ed:g:l:L:s:t:a:u:R:zM:U:S:P:Y:NBIQvVhorcyxp:n:q:k:C:";
> > > >>>>>>
> > > >>>>>> /*
> > > >>>>>> In the array below, the 2nd parameter
> specifies the
> > > >>>>>> number @@ -604,6 +608,7 @@ int main(int argc, char *argv[])
> > > >>>>>> {"Pconfig", 1, NULL, 'P'},
> > > >>>>>> {"no_part_enforce", 0, NULL, 'N'},
> > > >>>>>> {"qos", 0, NULL, 'Q'},
> > > >>>>>> + {"qos_policy_file", 1, NULL, 'Y'},
> > > >>>>>> {"maxsmps", 1, NULL, 'n'},
> > > >>>>>> {"console", 1, NULL, 'q'},
> > > >>>>>> {"V", 0, NULL, 'V'}, @@ -823,6
> +828,11 @@ int
> > > >>>>>> main(int argc, char *argv[])
> > > >>>>>> opt.no_qos = FALSE;
> > > >>>>>> break;
> > > >>>>>>
> > > >>>>>> + case 'Y':
> > > >>>>>> + opt.qos_policy_file = optarg;
> > > >>>>>> + printf(" QoS policy file
> > > \'%s\'\n", optarg);
> > > >>>>>> + break;
> > > >>>>>> +
> > > >>>>> There should also be an update to the OpenSM man
> page for this.
> > > >>>> That and a text file with description of policy file syntax
> > > >>> Good. Thanks.
> > > >>>
> > > >>> -- Hal
> > > >>>
> > > >>>> -- Yevgeny
> > > >>>>
> > > >>>>> -- Hal
> > > >>>>>
> > > >>>>>> case 'y':
> > > >>>>>> opt.exit_on_fatal = FALSE;
> > > >>>>>> printf(" Staying on fatal
> > > initialization
> > > >>>>>> errors\n"); diff --git a/opensm/opensm/osm_subnet.c
> > > >>>>>> b/opensm/opensm/osm_subnet.c index 818d73f..4162522 100644
> > > >>>>>> --- a/opensm/opensm/osm_subnet.c
> > > >>>>>> +++ b/opensm/opensm/osm_subnet.c
> > > >>>>>> @@ -452,6 +452,7 @@ void osm_subn_set_default_opt(IN
> > > osm_subn_opt_t * const p_opt)
> > > >>>>>> p_opt->partition_config_file =
> > > OSM_DEFAULT_PARTITION_CONFIG_FILE;
> > > >>>>>> p_opt->no_partition_enforcement = FALSE;
> > > >>>>>> p_opt->no_qos = TRUE;
> > > >>>>>> + p_opt->qos_policy_file =
> OSM_DEFAULT_QOS_POLICY_FILE;
> > > >>>>>> p_opt->accum_log_file = TRUE;
> > > >>>>>> p_opt->port_profile_switch_nodes = FALSE;
> > > >>>>>> p_opt->pfn_ui_pre_lid_assign = NULL; @@ -1178,6
> > > +1179,9 @@
> > > >>>>>> ib_api_status_t osm_subn_parse_conf_file(IN
> osm_subn_opt_t *
> > > >>>>>> const p_opts)
> > > >>>>>>
> > > >>>>>> opts_unpack_boolean("no_qos", p_key, p_val,
> > > >>>>>> &p_opts->no_qos);
> > > >>>>>>
> > > >>>>>> + opts_unpack_charp("qos_policy_file",
> > > >>>>>> + p_key, p_val,
> > > >>>>>> + &p_opts->qos_policy_file);
> > > >>>>>> +
> > > >>>>>> opts_unpack_boolean("accum_log_file",
> > > >>>>>> p_key, p_val,
> > > >>>>>> &p_opts->accum_log_file);
> > > >>>>>>
> > > >>>>>> @@ -1541,7 +1545,11 @@ ib_api_status_t
> > > osm_subn_write_conf_file(IN osm_subn_opt_t * const p_opts)
> > > >>>>>> fprintf(opts_file,
> > > >>>>>> "#\n# QoS OPTIONS\n#\n"
> > > >>>>>> "# Disable QoS setup\n"
> > > >>>>>> - "no_qos %s\n\n", p_opts->no_qos ?
> > > "TRUE" : "FALSE");
> > > >>>>>> + "no_qos %s\n\n"
> > > >>>>>> + "# QoS policy file to be used\n"
> > > >>>>>> + "qos_policy_file %s\n\n",
> > > >>>>>> + p_opts->no_qos ? "TRUE" : "FALSE",
> > > >>>>>> + p_opts->qos_policy_file);
> > > >>>>>>
> > > >>>>>> subn_dump_qos_options(opts_file,
> > > >>>>>> "QoS default options", "qos",
> > > >>>>>> --
> > > >>>>>> 1.5.1.4
> > > >>>>>>
> > > >>>>>> _______________________________________________
> > > >>>>>> general mailing list
> > > >>>>>> general at lists.openfabrics.org
> > > >>>>>>
> http://lists.openfabrics.org/cgi-bin/mailman/listinfo/general
> > > >>>>>>
> > > >>>>>> To unsubscribe, please visit
> > > >>>>>> http://openib.org/mailman/listinfo/openib-general
> > > >>>>>>
> > > >>
> > > >
> > >
> > > _______________________________________________
> > > general mailing list
> > > general at lists.openfabrics.org
> > > http://lists.openfabrics.org/cgi-bin/mailman/listinfo/general
> > >
> > > To unsubscribe, please visit
> > > http://openib.org/mailman/listinfo/openib-general
> > >
> >
>
More information about the general
mailing list