[PATCH] libxl: support getting and setting parameters for the Credit2

Jim Fehlig jfehlig at suse.com
Thu Jan 30 00:41:42 UTC 2020


On 1/29/20 4:05 AM, Dario Faggioli wrote:
> With Credit2 being Xen default scheduler, it's definitely the case to
> allow Credit2's scheduling parameters to be get and set via libvirt.

Indeed. Thanks for the patch!

> This is easy, as Credit and Credit2 have (at least as of now) the very
> same parameters ('weight' and 'cap'). So we can just let credit2 pass
> the scheduler-type check and the same code will work for both.
> 
> Signed-off-by: Dario Faggioli <dfaggioli at suse.com>
> ---
> Cc: Jim Fehlig <jfehlig at suse.com>
> ---
>   src/libxl/libxl_driver.c | 18 +++++++++++++-----
>   1 file changed, 13 insertions(+), 5 deletions(-)
> 
> diff --git a/src/libxl/libxl_driver.c b/src/libxl/libxl_driver.c
> index e0a8ec5c24..78ca77d0f6 100644
> --- a/src/libxl/libxl_driver.c
> +++ b/src/libxl/libxl_driver.c
> @@ -75,6 +75,7 @@ VIR_LOG_INIT("libxl.libxl_driver");
>   
>   /* Number of Xen scheduler parameters */
>   #define XEN_SCHED_CREDIT_NPARAM   2
> +#define XEN_SCHED_CREDIT2_NPARAM  2

Since the number of parameters supported is the same, I would prefer using 
XEN_SCHED_CREDIT_NPARAM and delay introducing the new define until credit2 
supports more parameters.

>   #define LIBXL_CHECK_DOM0_GOTO(name, label) \
>       do { \
> @@ -4586,6 +4587,8 @@ libxlDomainGetSchedulerType(virDomainPtr dom, int *nparams)
>           break;
>       case LIBXL_SCHEDULER_CREDIT2:
>           name = "credit2";
> +        if (nparams)
> +            *nparams = XEN_SCHED_CREDIT2_NPARAM;
>           break;
>       case LIBXL_SCHEDULER_ARINC653:
>           name = "arinc653";
> @@ -4632,11 +4635,11 @@ libxlDomainGetSchedulerParametersFlags(virDomainPtr dom,
>       if (virDomainObjCheckActive(vm) < 0)
>           goto cleanup;
>   
> +    /* Only credit and credit2 are supported for now. */
>       sched_id = libxl_get_scheduler(cfg->ctx);
> -
> -    if (sched_id != LIBXL_SCHEDULER_CREDIT) {
> +    if (sched_id != LIBXL_SCHEDULER_CREDIT && sched_id != LIBXL_SCHEDULER_CREDIT2) {
>           virReportError(VIR_ERR_INTERNAL_ERROR, "%s",
> -                       _("Only 'credit' scheduler is supported"));
> +                       _("Only 'credit' and 'credit2' schedulers are supported"));
>           goto cleanup;
>       }
>   
> @@ -4657,6 +4660,9 @@ libxlDomainGetSchedulerParametersFlags(virDomainPtr dom,
>               goto cleanup;
>       }
>   
> +    /* Credit and Credit2 have the same number (two) of parameters,
> +     * so this is ok for both, at least as long as that stays true. */
> +    G_STATIC_ASSERT(XEN_SCHED_CREDIT_NPARAM == XEN_SCHED2_CREDIT_NPARAM);

s/XEN_SCHED2_CREDIT_NPARAM/XEN_SCHED_CREDIT2_NPARAM/

But this hunk can be dropped if using XEN_SCHED_CREDIT_NPARAM for credit and 
credit2.

>       if (*nparams > XEN_SCHED_CREDIT_NPARAM)
>           *nparams = XEN_SCHED_CREDIT_NPARAM;
>       ret = 0;
> @@ -4711,9 +4717,11 @@ libxlDomainSetSchedulerParametersFlags(virDomainPtr dom,
>   
>       sched_id = libxl_get_scheduler(cfg->ctx);
>   
> -    if (sched_id != LIBXL_SCHEDULER_CREDIT) {
> +    /* Only credit and credit2 are supported for now. */
> +    sched_id = libxl_get_scheduler(cfg->ctx);

We just retrieved sched_id a few lines above, no need to fetch it again.

> +    if (sched_id != LIBXL_SCHEDULER_CREDIT && sched_id != LIBXL_SCHEDULER_CREDIT2) {
>           virReportError(VIR_ERR_INTERNAL_ERROR, "%s",
> -                       _("Only 'credit' scheduler is supported"));
> +                       _("Only 'credit' and 'credit2' schedulers are supported"));
>           goto endjob;
>   >    }

No need to respin this trivial patch

Reviewed-by: Jim Fehlig<jfehlig at suse.com>

I've fixed up the minor issues and pushed it.

Regards,
Jim




More information about the libvir-list mailing list