|
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index] Re: [Xen-devel] [PATCH] libxl: Wait for ballooning if free memory is increasing
On Wednesday, January 21, 2015 10:22:53 PM 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
> retry as long as the amount of free memory is increasing on each
> iteration of the loop.
>
> ---
> tools/libxl/xl_cmdimpl.c | 14 +++++++++++---
> 1 file changed, 11 insertions(+), 3 deletions(-)
>
> diff --git a/tools/libxl/xl_cmdimpl.c b/tools/libxl/xl_cmdimpl.c
> index 0b02a6c..f87efc0 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,13 @@ static int freemem(uint32_t domid,
> libxl_domain_build_info *b_info) if (rc < 0)
> return rc;
>
> - retries--;
> + /* only decrement retry count if free_memkb is not increasing */
> + if (free_memkb <= free_memkb_prev) {
> + retries--;
> + } else {
> + retries = MAX_RETRIES;
> + free_memkb_prev = free_memkb;
> + }
> } while (retries > 0);
>
> return ERROR_NOMEM;
Ping?
_______________________________________________
Xen-devel mailing list
Xen-devel@xxxxxxxxxxxxx
http://lists.xen.org/xen-devel
|
![]() |
Lists.xenproject.org is hosted with RackSpace, monitoring our |