|
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index] Re: [Xen-devel] [PATCH] xl: check for meaningful combination of sedf config file parameters
On Mon, 2012-06-04 at 15:01 +0100, Dario Faggioli wrote:
> As we do it in the implementation of `xl sched-sedf -d ...', some
> consistency checking is needed while parsing the sedf scheduling
> parameters provided via config file. Not doing this results in the call
> libxl_domain_sched_params_set() to fail, and no parameters being
> enforced for the domain.
>
> Note we do this at config file parsing time as that gives us the chance
> of bailing out early. It would have been pointless to add it within
> sched_sedf_domain_set() (in libxl), as the very same thing is
> done in the hypervisor, and the result is being checked and returned
> to the caller already.
>
> Signed-off-by: Dario Faggioli <dario.faggioli@xxxxxxxxxx>
>
> diff --git a/tools/libxl/xl_cmdimpl.c b/tools/libxl/xl_cmdimpl.c
> --- a/tools/libxl/xl_cmdimpl.c
> +++ b/tools/libxl/xl_cmdimpl.c
> @@ -561,6 +561,7 @@ static void parse_config_data(const char
> long l;
> XLU_Config *config;
> XLU_ConfigList *cpus, *vbds, *nics, *pcis, *cvfbs, *cpuids;
> + int opt_w = 0, opt_p = 0, opt_s = 0;
These names don't make much sense in this context.
Perhaps you can just check each interesting option against the
corresponding LIBXL_DOAIN_SCHED_PARAM_DEFAULT? That might make some long
lines. Perhaps pulling this out into a separate valid_sched_params()
would help with that?
> int pci_power_mgmt = 0;
> int pci_msitranslate = 1;
> int pci_permissive = 0;
> @@ -632,18 +633,36 @@ static void parse_config_data(const char
>
> /* the following is the actual config parsing with overriding
> * values in the structures */
> - if (!xlu_cfg_get_long (config, "cpu_weight", &l, 0))
> + if (!xlu_cfg_get_long (config, "cpu_weight", &l, 0)) {
> b_info->sched_params.weight = l;
> + opt_w = 1;
> + }
> if (!xlu_cfg_get_long (config, "cap", &l, 0))
> b_info->sched_params.cap = l;
> - if (!xlu_cfg_get_long (config, "period", &l, 0))
> + if (!xlu_cfg_get_long (config, "period", &l, 0)) {
> b_info->sched_params.period = l;
> - if (!xlu_cfg_get_long (config, "slice", &l, 0))
> + opt_p = 1;
> + }
> + if (!xlu_cfg_get_long (config, "slice", &l, 0)) {
> b_info->sched_params.slice = l;
> + opt_s = 1;
> + }
> if (!xlu_cfg_get_long (config, "latency", &l, 0))
> b_info->sched_params.latency = l;
> if (!xlu_cfg_get_long (config, "extratime", &l, 0))
> b_info->sched_params.extratime = l;
> + /* The sedf scheduler needs some more consistency checking */
> + if (opt_w && (opt_p || opt_s)) {
> + fprintf(stderr, "Either specify a weight OR a period and slice\n");
Does this constrain you from setting valid combinations of credit*
parameters? I think not since period and slice are SEDF specific.
> + exit(1);
> + }
> + if (opt_w) {
> + b_info->sched_params.slice = 0;
> + b_info->sched_params.period = 0;
> + }
> + if (opt_p || opt_s)
> + b_info->sched_params.weight = 0;
> +
>
> if (!xlu_cfg_get_long (config, "vcpus", &l, 0)) {
> b_info->max_vcpus = l;
_______________________________________________
Xen-devel mailing list
Xen-devel@xxxxxxxxxxxxx
http://lists.xen.org/xen-devel
|
![]() |
Lists.xenproject.org is hosted with RackSpace, monitoring our |