All of lore.kernel.org
 help / color / mirror / Atom feed
From: Dario Faggioli <dario.faggioli@citrix.com>
To: Chong Li <lichong659@gmail.com>
Cc: Chong Li <chong.li@wustl.edu>,
	wei.liu2@citrix.com, Sisu Xi <xisisu@gmail.com>,
	george.dunlap@eu.citrix.com, ian.jackson@eu.citrix.com,
	xen-devel@lists.xen.org, ian.campbell@eu.citrix.com,
	Meng Xu <mengxu@cis.upenn.edu>,
	dgolomb@seas.upenn.edu
Subject: Re: [PATCH v3 for Xen 4.6 3/4] libxl: enable per-VCPU parameter settings for RTDS scheduler
Date: Tue, 7 Jul 2015 18:23:56 +0200	[thread overview]
Message-ID: <1436286236.22672.149.camel@citrix.com> (raw)
In-Reply-To: <1435545899-22751-4-git-send-email-chong.li@wustl.edu>


[-- Attachment #1.1: Type: text/plain, Size: 5358 bytes --]

On Sun, 2015-06-28 at 21:44 -0500, Chong Li wrote:
> Add libxl_vcpu_sched_params_get/set and sched_rtds_vcpu_get/set functions to support
> per-VCPU settings.
> 
> Changes on PATCH v2:
> 
> 1) New data structure (libxl_vcpu_sched_params and libxl_sched_params) to help per-VCPU settings.
> 
> 2) sched_rtds_vcpu_get now can return a random subset of the parameters of the VCPUs of a specific domain.
> 
> Signed-off-by: Chong Li <chong.li@wustl.edu>
> Signed-off-by: Meng Xu <mengxu@cis.upenn.edu>
> Signed-off-by: Sisu Xi <xisisu@gmail.com>
> 
So, apart from what IanC said already, I think this patch is mostly
fine, apart from:
 - the changelog needing to improve, as explained already while
   reviewing one other patch in the series (that, in fact, applies to
   all of them)
 - comments/documentation about the new behavior of per domain
   scheduling API calls looks to be missing to me...
 - some coding style issues (see below).

> +static int sched_rtds_vcpu_get(libxl__gc *gc, uint32_t domid,
> +                               libxl_vcpu_sched_params *scinfo)
> +{
> +    uint16_t num_vcpus;
> +    int rc, i;
> +    xc_dominfo_t info;
> +    xen_domctl_schedparam_vcpu_t *vcpus;
> +
> +    if (scinfo->num_vcpus == 0) {
> +        rc = xc_domain_getinfo(CTX->xch, domid, 1, &info);
> +        if (rc < 0) {
> +            LOGE(ERROR, "getting domain info");
> +            return ERROR_FAIL;
> +        }
> +        num_vcpus = info.max_vcpu_id + 1;
> +    } else
> +        num_vcpus = scinfo->num_vcpus;
> +
> +    GCNEW_ARRAY(vcpus, num_vcpus);
> +
> +    if (scinfo->num_vcpus > 0)
> +        for(i=0; i < num_vcpus; i++)
spaces ("for (...")

> +static int sched_rtds_vcpu_set(libxl__gc *gc, uint32_t domid,
> +                               const libxl_vcpu_sched_params *scinfo)
> +{
> +    int rc;
> +    int i;
> +    uint16_t max_vcpuid;
> +    xc_dominfo_t info;
> +    xen_domctl_schedparam_vcpu_t *vcpus;
> +    int num_vcpus;
> +
> +    rc = xc_domain_getinfo(CTX->xch, domid, 1, &info);
> +    if (rc < 0) {
> +        LOGE(ERROR, "getting domain info");
> +        return ERROR_FAIL;
> +    }
> +    max_vcpuid = info.max_vcpu_id;
> +
> +    if (scinfo->num_vcpus > 0) {
> +        num_vcpus = scinfo->num_vcpus;
> +        GCNEW_ARRAY(vcpus, num_vcpus);
> +        for (i = 0; i < num_vcpus; i++) {
> +            if (scinfo->vcpus[i].vcpuid < 0 ||
> +                    scinfo->vcpus[i].vcpuid > max_vcpuid) {
> +                LOG(ERROR, "VCPU index is out of range, "
> +                           "valid values are within range from 0 to %d",
> +                           max_vcpuid);
> +                return ERROR_INVAL;
> +            }
> +            vcpus[i].vcpuid = scinfo->vcpus[i].vcpuid;
> +
> +            rc = sched_rtds_validate_params(gc,
> +                    scinfo->vcpus[i].period, scinfo->vcpus[i].budget,
> +                    &vcpus[i].s.rtds.period, &vcpus[i].s.rtds.budget);
> +            if (rc)
> +                return ERROR_INVAL;
> +        }
> +    } else {
> +        num_vcpus = max_vcpuid + 1;
> +	GCNEW_ARRAY(vcpus, num_vcpus);
>
Indentation.

> --- a/tools/libxl/libxl.h
> +++ b/tools/libxl/libxl.h
> @@ -200,6 +200,16 @@
>  #define LIBXL_HAVE_DEVICETREE_PASSTHROUGH 1
>  
>  /*
> + * libxl_vcpu_sched_params is used to get/set per-vcpu params
> +*/
> +#define LIBXL_HAVE_VCPU_SCHED_PARAMS 1
> +
> +/*
> + * libxl_sched_params is used to store per-vcpu params
> +*/
> +#define LIBXL_SCHED_PARAMS 1
> +
> +/*
>   * libxl ABI compatibility
>   *
>   * The only guarantee which libxl makes regarding ABI compatibility
> @@ -1554,10 +1564,17 @@ int libxl_sched_credit_params_set(libxl_ctx *ctx, uint32_t poolid,
>  #define LIBXL_DOMAIN_SCHED_PARAM_EXTRATIME_DEFAULT -1
>  #define LIBXL_DOMAIN_SCHED_PARAM_BUDGET_DEFAULT    -1
>  
> +/* Per-VCPU parameters*/
> +#define LIBXL_DOMAIN_SCHED_PARAM_VCPU_INDEX_DEFAULT -1
> +
>  int libxl_domain_sched_params_get(libxl_ctx *ctx, uint32_t domid,
>                                    libxl_domain_sched_params *params);
>  int libxl_domain_sched_params_set(libxl_ctx *ctx, uint32_t domid,
>                                    const libxl_domain_sched_params *params);
> +int libxl_vcpu_sched_params_get(libxl_ctx *ctx, uint32_t domid,
> +                                  libxl_vcpu_sched_params *params);
> +int libxl_vcpu_sched_params_set(libxl_ctx *ctx, uint32_t domid,
> +                                  const libxl_vcpu_sched_params *params);
>
Didn't we say that we wanted the fact that now, at least for RTDS,
libxl_domain_sched_params_*() deals with default parameters to be
documented in a comment somewhere? Have I missed it?

I appreciate that this is happening in lower levels, and that libxl is
just reporting it, but, still, it is something that I would like to find
in the headers of the library, in order to be able to tell the
differences between  libxl_vcpu_sched_params_* and
libxl_domain_sched_params_* ... Ian?

Regards,
Dario
-- 
<<This happens because I choose it to happen!>> (Raistlin Majere)
-----------------------------------------------------------------
Dario Faggioli, Ph.D, http://about.me/dario.faggioli
Senior Software Engineer, Citrix Systems R&D Ltd., Cambridge (UK)

[-- Attachment #1.2: This is a digitally signed message part --]
[-- Type: application/pgp-signature, Size: 181 bytes --]

[-- Attachment #2: Type: text/plain, Size: 126 bytes --]

_______________________________________________
Xen-devel mailing list
Xen-devel@lists.xen.org
http://lists.xen.org/xen-devel

  parent reply	other threads:[~2015-07-07 16:23 UTC|newest]

Thread overview: 39+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2015-06-29  2:44 [PATCH v3 for Xen 4.6 0/4] Enable per-VCPU parameter settings for RTDS scheduler Chong Li
2015-06-29  2:44 ` [PATCH v3 for Xen 4.6 1/4] xen: enable " Chong Li
2015-07-07  8:59   ` Jan Beulich
2015-07-07 14:39     ` Dario Faggioli
2015-07-08  6:06       ` Meng Xu
2015-07-08  8:33         ` Dario Faggioli
2015-07-09  1:16           ` Meng Xu
2015-07-10  9:51             ` Dario Faggioli
2015-07-07 14:55     ` Dario Faggioli
2015-07-07 16:09       ` Jan Beulich
2015-07-07 15:33     ` Chong Li
2015-07-07 15:41       ` Jan Beulich
2015-07-07 15:46       ` Dario Faggioli
2015-07-07 14:51   ` Dario Faggioli
2015-06-29  2:44 ` [PATCH v3 for Xen 4.6 2/4] libxc: " Chong Li
2015-06-30 12:22   ` Ian Campbell
2015-06-30 15:18     ` Chong Li
2015-06-30 15:32       ` Ian Campbell
2015-06-30 15:57         ` Chong Li
2015-06-30 16:04           ` Ian Campbell
2015-06-29  2:44 ` [PATCH v3 for Xen 4.6 3/4] libxl: " Chong Li
2015-06-30 12:26   ` Ian Campbell
2015-06-30 15:42     ` Chong Li
2015-06-30 15:57       ` Ian Campbell
2015-06-30 16:10         ` Chong Li
2015-06-30 16:19           ` Ian Campbell
2015-06-30 16:53             ` Chong Li
2015-07-01  0:54             ` Meng Xu
2015-07-01  8:48               ` Ian Campbell
2015-07-01 12:50                 ` Dario Faggioli
2015-07-01 16:59                   ` Chong Li
2015-07-07 16:23   ` Dario Faggioli [this message]
2015-07-08 14:35     ` Chong Li
2015-07-08 14:45       ` Dario Faggioli
2015-06-29  2:44 ` [PATCH v3 for Xen 4.6 4/4] xl: " Chong Li
2015-07-07 15:34   ` Dario Faggioli
2015-07-07 16:01     ` Chong Li
2015-07-07 15:16 ` [PATCH v3 for Xen 4.6 0/4] Enable " Dario Faggioli
2015-07-07 16:11   ` Chong Li

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=1436286236.22672.149.camel@citrix.com \
    --to=dario.faggioli@citrix.com \
    --cc=chong.li@wustl.edu \
    --cc=dgolomb@seas.upenn.edu \
    --cc=george.dunlap@eu.citrix.com \
    --cc=ian.campbell@eu.citrix.com \
    --cc=ian.jackson@eu.citrix.com \
    --cc=lichong659@gmail.com \
    --cc=mengxu@cis.upenn.edu \
    --cc=wei.liu2@citrix.com \
    --cc=xen-devel@lists.xen.org \
    --cc=xisisu@gmail.com \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.