|
|
|
|
|
|
|
|
|
|
xen-devel
[Xen-devel] Re: [PATCH 2/5] xen/balloon: account for pages released duri
On Fri, Aug 19, 2011 at 03:57:17PM +0100, David Vrabel wrote:
> In xen_memory_setup() pages that occur in gaps in the memory map are
> released back to Xen. This reduces the domain's current page count.
You might want to add: "in the hypervisor."
> The Xen balloon driver does not correctly decrease its initial
> current_pages count to reflect this. If 'delta' pages are released
> and the target is adjusted the resulting reservation is always 'delta'
> less than the requested target.
Might want to add:
Wherein delta is reported as (for example):
[ 0.000000] released 261886 pages of unused memory
>
> This affects dom0 if the initial allocation of pages overlaps the PCI
> memory region but won't affect most domU guests that have been setup
> with pseudo-physical memory maps that don't have gaps.
>
> Fix this by asking the hypervisor what the current reservation is when
> starting the balloon driver.
>
> If the domain's targets are managed by xapi, the domain may eventually
> run out of memory and die because xapi currently gets its target
> calculations wrong and whenever it is restarted it always reduces the
> target by 'delta'.
>
> Signed-off-by: David Vrabel <david.vrabel@xxxxxxxxxx>
> ---
> drivers/xen/balloon.c | 7 ++++++-
> 1 files changed, 6 insertions(+), 1 deletions(-)
>
> diff --git a/drivers/xen/balloon.c b/drivers/xen/balloon.c
> index 5dfd8f8..5814022 100644
> --- a/drivers/xen/balloon.c
> +++ b/drivers/xen/balloon.c
> @@ -557,15 +557,20 @@ EXPORT_SYMBOL(free_xenballooned_pages);
>
> static int __init balloon_init(void)
> {
> + domid_t domid = DOMID_SELF;
> unsigned long pfn, extra_pfn_end;
> struct page *page;
> + int ret;
long int?
>
> if (!xen_domain())
> return -ENODEV;
>
> pr_info("xen/balloon: Initialising balloon driver.\n");
>
> - balloon_stats.current_pages = xen_pv_domain() ?
> min(xen_start_info->nr_pages, max_pfn) : max_pfn;
> + ret = HYPERVISOR_memory_op(XENMEM_current_reservation, &domid);
> + if (ret < 0)
> + return ret;
> + balloon_stats.current_pages = ret;
> balloon_stats.target_pages = balloon_stats.current_pages;
> balloon_stats.balloon_low = 0;
> balloon_stats.balloon_high = 0;
> --
> 1.7.2.5
_______________________________________________
Xen-devel mailing list
Xen-devel@xxxxxxxxxxxxxxxxxxx
http://lists.xensource.com/xen-devel
|
<Prev in Thread] |
Current Thread |
[Next in Thread>
|
- [Xen-devel] Re: [PATCH 2/5] xen/balloon: account for pages released during memory setup,
Konrad Rzeszutek Wilk <=
|
|
|
|
|