[ofa-general] [PATCH 5/7 V3] osm: QoS - adding QoS policy options
Hal Rosenstock
hal.rosenstock at gmail.com
Wed Aug 29 02:57:49 PDT 2007
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.
> >> * 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
> >>
> >
>
>
More information about the general
mailing list