[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: [Xen-devel] [PATCH 6/6] xl: 'xl list' supports '-c' for global claim information.



On Mon, 2013-03-11 at 14:20 +0000, Konrad Rzeszutek Wilk wrote:
> When guests have XENMEM_claim_pages called, they influence a global
> counter value - which has the cumulative count of the number of
> pages requested by all domains. This value is provided via the
> XENMEM_get_unclaimed_pages hypercall. The value fluctuates quite
> often so the value is stale once it is provided to the user-space.
> However it is useful for diagnostic purposes.
> 
> [v1: s/unclaimed/outstanding/]
> Signed-off-by: Konrad Rzeszutek Wilk <konrad.wilk@xxxxxxxxxx>
> ---
>  tools/libxl/libxl.c         | 12 ++++++++++++
>  tools/libxl/libxl.h         |  1 +
>  tools/libxl/libxl_types.idl |  4 ++++
>  tools/libxl/xl_cmdimpl.c    | 29 +++++++++++++++++++++++++----
>  tools/libxl/xl_cmdtable.c   |  4 +++-
>  5 files changed, 45 insertions(+), 5 deletions(-)
> 
> diff --git a/tools/libxl/libxl.c b/tools/libxl/libxl.c
> index 0745888..fd5d725 100644
> --- a/tools/libxl/libxl.c
> +++ b/tools/libxl/libxl.c
> @@ -4051,6 +4051,18 @@ libxl_numainfo *libxl_get_numainfo(libxl_ctx *ctx, int 
> *nr)
>      return ret;
>  }
>  
> +int libxl_get_claiminfo(libxl_ctx *ctx, libxl_claiminfo *claiminfo)
> +{
> +    long l;
> +
> +    l = xc_domain_get_outstanding_pages(ctx->xch);
> +    if (l == -ENOSYS)

Does this function really return -errno and not -1 + set errno on error?

libxc is a bit crap^Wconfused in this respect but I don't see the
frobbing in the do_memory_op call path to turn from the -1+errno you get
from ioctl() into -errno which some call chains in libxc have.

> +        return l;
> +    claiminfo->claimed = l;
> +
> +    return 0;
> +}
> +
>  const libxl_version_info* libxl_get_version_info(libxl_ctx *ctx)
>  {
>      union {
> diff --git a/tools/libxl/libxl.h b/tools/libxl/libxl.h
> index 538bf93..8d0ab23 100644
> --- a/tools/libxl/libxl.h
> +++ b/tools/libxl/libxl.h
> @@ -581,6 +581,7 @@ int libxl_wait_for_memory_target(libxl_ctx *ctx, uint32_t 
> domid, int wait_secs);
>  
>  /* Parse the claim_mode options */
>  int libxl_parse_claim_mode(const char *s, unsigned int *flag);
> +int libxl_get_claiminfo(libxl_ctx *ctx, libxl_claiminfo *claiminfo);

Most similar interfaces in libxl seem to either return
libxl_claiminfo->claimed directly or return the struct.

Is there likely to be other info in this struct in the future?

>  
>  int libxl_vncviewer_exec(libxl_ctx *ctx, uint32_t domid, int autopass);
>  int libxl_console_exec(libxl_ctx *ctx, uint32_t domid, int cons_num, 
> libxl_console_type type);
> diff --git a/tools/libxl/libxl_types.idl b/tools/libxl/libxl_types.idl
> index 0a8b99a..aa71ed8 100644
> --- a/tools/libxl/libxl_types.idl
> +++ b/tools/libxl/libxl_types.idl
> @@ -509,6 +509,10 @@ libxl_cputopology = Struct("cputopology", [
>      ("node", uint32),
>      ], dir=DIR_OUT)
>  
> +libxl_claiminfo = Struct("claiminfo", [
> +    ("claimed", uint64),

What are the units? Should this be a MemKB or ....

> +    ])
> +
>  libxl_sched_credit_params = Struct("sched_credit_params", [
>      ("tslice_ms", integer),
>      ("ratelimit_us", integer),
[...]
> @@ -4663,18 +4681,21 @@ int main_info(int argc, char **argv)
>      int opt;
>      static struct option opts[] = {
>          {"numa", 0, 0, 'n'},
> +        {"claim", 0, 0, 'c'},

Unlike numa this is just one line, I reckon it could be printed
unconditionally.

>          COMMON_LONG_OPTS,
>          {0, 0, 0, 0}
>      };
> -    int numa = 0;
> +    int numa = 0, claim = 0;
>  
> -    SWITCH_FOREACH_OPT(opt, "hn", opts, "info", 0) {
> +    SWITCH_FOREACH_OPT(opt, "hnc", opts, "info", 0) {
>      case 'n':
>          numa = 1;
>          break;
> +    case 'c':
> +        claim = 1;
>      }
>  
> -    print_info(numa);
> +    print_info(numa, claim);
>      return 0;
>  }
>  
> diff --git a/tools/libxl/xl_cmdtable.c b/tools/libxl/xl_cmdtable.c
> index b4a87ca..a48dbb0 100644
> --- a/tools/libxl/xl_cmdtable.c
> +++ b/tools/libxl/xl_cmdtable.c
> @@ -226,7 +226,9 @@ struct cmd_spec cmd_table[] = {
>      { "info",
>        &main_info, 0, 0,
>        "Get information about Xen host",
> -      "-n, --numa         List host NUMA topology information",
> +      "[-n|-c]",
> +      "-n, --numa         List host NUMA topology information\n"
> +      "-c, --claim        List claim information",
>      },
>      { "sharing",
>        &main_sharing, 0, 0,



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


 


Rackspace

Lists.xenproject.org is hosted with RackSpace, monitoring our
servers 24x7x365 and backed by RackSpace's Fanatical Support®.