[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index] Re: [Xen-devel] [PATCH v3] libxl: Wait for ballooning if free memory is increasing
On Monday, February 02, 2015 02:35:39 PM Ian Campbell wrote: > On Fri, 2015-01-30 at 14:01 -0700, Mike Latimer wrote: > > During domain startup, all required memory ballooning must complete > > within a maximum window of 33 seconds (3 retries, 11 seconds of delay). > > If not, domain creation is aborted with a 'failed to free memory' error. > > > > In order to accommodate large domains or slower hardware (which require > > substantially longer to balloon memory) the free memory process should > > continue retrying if the amount of free memory is increasing on each > > iteration of the loop. > > Sorry for not spotting this earlier, but to accept a patch into the Xen > code base we need a Signed-off-by: > http://wiki.xen.org/wiki/Submitting_Xen_Patches#Signing_off_a_patch > > You can provide one in this thread rather than resending if that is more > convenient. Sorry, I should have caught that myself. If's it's okay to provide it here: Signed-off-by: Mike Latimer <mlatimer@xxxxxxxx> > For my part: Acked-by: Ian Campbell <ian.campbell@xxxxxxxxxx> Thanks, Mike > > --- > > > > tools/libxl/xl_cmdimpl.c | 17 ++++++++++++++--- > > 1 file changed, 14 insertions(+), 3 deletions(-) > > > > diff --git a/tools/libxl/xl_cmdimpl.c b/tools/libxl/xl_cmdimpl.c > > index 0b02a6c..9ff3c4f 100644 > > --- a/tools/libxl/xl_cmdimpl.c > > +++ b/tools/libxl/xl_cmdimpl.c > > @@ -2194,8 +2194,9 @@ static int preserve_domain(uint32_t *r_domid, > > libxl_event *event,> > > static int freemem(uint32_t domid, libxl_domain_build_info *b_info) > > { > > > > - int rc, retries = 3; > > - uint32_t need_memkb, free_memkb; > > + int rc, retries; > > + const int MAX_RETRIES = 3; > > + uint32_t need_memkb, free_memkb, free_memkb_prev = 0; > > > > if (!autoballoon) > > > > return 0; > > > > @@ -2204,6 +2205,7 @@ static int freemem(uint32_t domid, > > libxl_domain_build_info *b_info)> > > if (rc < 0) > > > > return rc; > > > > + retries = MAX_RETRIES; > > > > do { > > > > rc = libxl_get_free_memory(ctx, &free_memkb); > > if (rc < 0) > > > > @@ -2228,7 +2230,16 @@ static int freemem(uint32_t domid, > > libxl_domain_build_info *b_info)> > > if (rc < 0) > > > > return rc; > > > > - retries--; > > + /* > > + * If the amount of free mem has increased on this iteration > > (i.e. > > + * some progress has been made) then reset the retry counter. > > + */ > > + if (free_memkb > free_memkb_prev) { > > + retries = MAX_RETRIES; > > + free_memkb_prev = free_memkb; > > + } else { > > + retries--; > > + } > > > > } while (retries > 0); > > > > return ERROR_NOMEM; _______________________________________________ Xen-devel mailing list Xen-devel@xxxxxxxxxxxxx http://lists.xen.org/xen-devel
|
Lists.xenproject.org is hosted with RackSpace, monitoring our |