|
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index] Re: [Xen-devel] [PATCH v3 7/7] libxl/vcpu-set - allow to decrease vcpu count on overcommitted guests (v3)
On Wed, 2015-03-25 at 14:42 -0400, Konrad Rzeszutek Wilk wrote:
> On Tue, Mar 24, 2015 at 03:41:46PM +0000, Ian Campbell wrote:
> > On Mon, 2015-03-23 at 14:21 -0400, Konrad Rzeszutek Wilk wrote:
> > > We have a check to warn the user if they are overcommitting.
> > > But the check only checks the hosts CPU amount and does
> > > not take into account the case when the user is trying to fix
> > > the overcommit. That is - they want to limit the amount of
> > > online VCPUs.
> > >
> > > This fix allows the user to offline vCPUs without any
> > > warnings when they are running an overcommitted guest.
> > >
> > > Also fix the extra space in the message.
> > >
> > > Signed-off-by: Konrad Rzeszutek Wilk <konrad.wilk@xxxxxxxxxx>
> > >
> > > ---
> > > [v2: Remove crud code as spotted by Boris]
> > > [v3: Moved crud code removal to another patch]
> > > ---
> > > tools/libxl/xl_cmdimpl.c | 15 ++++++++++++---
> > > 1 file changed, 12 insertions(+), 3 deletions(-)
> > >
> > > diff --git a/tools/libxl/xl_cmdimpl.c b/tools/libxl/xl_cmdimpl.c
> > > index b121d75..d7bd5d5 100644
> > > --- a/tools/libxl/xl_cmdimpl.c
> > > +++ b/tools/libxl/xl_cmdimpl.c
> > > @@ -5238,9 +5238,18 @@ static int vcpuset(uint32_t domid, const char*
> > > nr_vcpus, int check_host)
> > > */
> > > if (check_host) {
> > > unsigned int host_cpu = libxl_get_max_cpus(ctx);
> > > - if (max_vcpus > host_cpu) {
> > > - fprintf(stderr, "You are overcommmitting! You have %d
> > > physical " \
> > > - " CPUs and want %d vCPUs! Aborting, use
> > > --ignore-host to " \
> > > + libxl_dominfo dominfo;
> > > +
> > > + rc = libxl_domain_info(ctx, &dominfo, domid);
> > > + if (rc)
> > > + {
> > > + if (rc == ERROR_DOMAIN_NOTFOUND)
> > > + fprintf(stderr, "Domain %u does not exist.\n", domid);
> > > + return 1;
> >
> > Indentation is wrong on the if.
> >
> > More generally all of these rc == ERROR_DOMAIN_NOTFOUND check and prints
> > are going to get rather tiresome, especially if/when there are other
> > interesting error codes. Perhaps we could arrange for something further
> > down the stack on libxl to log this sort of thing, such that xl can rely
> > on it already having been mentioned?
> >
> > e.g. libxl_domain_info could do it perhaps?
>
> Would this patch work?
Assuming we aren't expecting to lookup domains which don't exist very
often then I think this would be fine.
>
> From 9a0a0e581b29d9aa893d80962053383c235e9ad9 Mon Sep 17 00:00:00 2001
> From: Konrad Rzeszutek Wilk <konrad.wilk@xxxxxxxxxx>
> Date: Wed, 25 Mar 2015 13:36:58 -0400
> Subject: [PATCH v3 4/8] libxl/libxl_domain_info: Log if domain not found.
>
> If we cannot find the domain - log an error (and still
> continue returning an error).
>
> Signed-off-by: Konrad Rzeszutek Wilk <konrad.wilk@xxxxxxxxxx>
> ---
> tools/libxl/libxl.c | 6 ++++--
> 1 file changed, 4 insertions(+), 2 deletions(-)
>
> diff --git a/tools/libxl/libxl.c b/tools/libxl/libxl.c
> index c37d057..181b5bd 100644
> --- a/tools/libxl/libxl.c
> +++ b/tools/libxl/libxl.c
> @@ -707,8 +707,10 @@ int libxl_domain_info(libxl_ctx *ctx, libxl_dominfo
> *info_r,
> LIBXL__LOG_ERRNO(ctx, LIBXL__LOG_ERROR, "getting domain info list");
> return ERROR_FAIL;
> }
> - if (ret==0 || xcinfo.domain != domid) return ERROR_DOMAIN_NOTFOUND;
> -
> + if (ret==0 || xcinfo.domain != domid) {
> + LIBXL__LOG_ERRNO(ctx, LIBXL__LOG_ERROR, "Domain %d not found!",
> domid);
> + return ERROR_DOMAIN_NOTFOUND;
> + }
> if (info_r)
> xcinfo2xlinfo(ctx, &xcinfo, info_r);
> return 0;
> --
> 2.1.0
>
>
>
> And then this patch would become:
>
> From 37d530f04a266e8d707b811bc7583f9d7b6fb18d Mon Sep 17 00:00:00 2001
> From: Konrad Rzeszutek Wilk <konrad.wilk@xxxxxxxxxx>
> Date: Mon, 2 Feb 2015 16:18:39 -0500
> Subject: [PATCH] libxl/vcpu-set - allow to decrease vcpu count on
> overcommitted guests (v3)
>
> We have a check to warn the user if they are overcommitting.
> But the check only checks the hosts CPU amount and does
> not take into account the case when the user is trying to fix
> the overcommit. That is - they want to limit the amount of
> online VCPUs.
>
> This fix allows the user to offline vCPUs without any
> warnings when they are running an overcommitted guest.
>
> Also fix the extra space in the message.
>
> Signed-off-by: Konrad Rzeszutek Wilk <konrad.wilk@xxxxxxxxxx>
>
> ---
> [v2: Remove crud code as spotted by Boris]
> [v3: Moved crud code removal to another patch]
> [v4: Remove the fprintf as it is done in libxl_domain_info]
> [v5: Fix memory leak]
> ---
> tools/libxl/xl_cmdimpl.c | 17 +++++++++++++----
> 1 file changed, 13 insertions(+), 4 deletions(-)
>
> diff --git a/tools/libxl/xl_cmdimpl.c b/tools/libxl/xl_cmdimpl.c
> index b121d75..c77c691 100644
> --- a/tools/libxl/xl_cmdimpl.c
> +++ b/tools/libxl/xl_cmdimpl.c
> @@ -5238,12 +5238,21 @@ static int vcpuset(uint32_t domid, const char*
> nr_vcpus, int check_host)
> */
> if (check_host) {
> unsigned int host_cpu = libxl_get_max_cpus(ctx);
> - if (max_vcpus > host_cpu) {
> - fprintf(stderr, "You are overcommmitting! You have %d physical "
> \
> - " CPUs and want %d vCPUs! Aborting, use --ignore-host to
> " \
> - " continue\n", host_cpu, max_vcpus);
> + libxl_dominfo dominfo;
> +
> + rc = libxl_domain_info(ctx, &dominfo, domid);
> + if (rc)
> return 1;
> +
> + if (max_vcpus > dominfo.vcpu_online && max_vcpus > host_cpu) {
> + fprintf(stderr, "You are overcommmitting! You have %d physical" \
> + " CPUs and want %d vCPUs! Aborting, use --ignore-host
> to" \
> + " continue\n", host_cpu, max_vcpus);
> + rc = 1;
> }
> + libxl_dominfo_dispose(&info);
> + if (rc)
> + return 1;
> }
> rc = libxl_cpu_bitmap_alloc(ctx, &cpumap, max_vcpus);
> if (rc) {
_______________________________________________
Xen-devel mailing list
Xen-devel@xxxxxxxxxxxxx
http://lists.xen.org/xen-devel
|
![]() |
Lists.xenproject.org is hosted with RackSpace, monitoring our |