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

[Xen-devel] Re: [PATCH 1/7] xen: use maximum reservation to limit amount of usable RAM



On Thu, Sep 15, 2011 at 01:29:22PM +0100, David Vrabel wrote:
> From: David Vrabel <david.vrabel@xxxxxxxxxx>
> 
> Use the domain's maximum reservation to limit the amount of extra RAM
> for the memory balloon. This reduces the size of the pages tables and
> the amount of reserved low memory (which defaults to about 1/32 of the
> total RAM).
> 
> On a system with 8 GiB of RAM with the domain limited to 1 GiB the
> kernel reports:
> 
> Before:
> 
> Memory: 627792k/4472000k available
> 
> After:
> 
> Memory: 549740k/11132224k available
> 
> A increase of about 76 MiB (~1.5% of the unused 7 GiB).  The reserved
> low memory is also reduced from 253 MiB to 32 MiB.  The total
> additional usable RAM is 329 MiB.
> 
> For dom0, this requires at patch to Xen ('x86: use 'dom0_mem' to limit
> the number of pages for dom0')[1].

Not going to pick this one up as it already is in 3.1.

> 
> [1] http://lists.xensource.com/archives/html/xen-devel/2011-08/msg00567.html
> 
> Signed-off-by: David Vrabel <david.vrabel@xxxxxxxxxx>
> ---
>  arch/x86/xen/setup.c |   19 +++++++++++++++++++
>  1 files changed, 19 insertions(+), 0 deletions(-)
> 
> diff --git a/arch/x86/xen/setup.c b/arch/x86/xen/setup.c
> index df118a8..c3b8d44 100644
> --- a/arch/x86/xen/setup.c
> +++ b/arch/x86/xen/setup.c
> @@ -184,6 +184,19 @@ static unsigned long __init xen_set_identity(const 
> struct e820entry *list,
>                                       PFN_UP(start_pci), PFN_DOWN(last));
>       return identity;
>  }
> +
> +static unsigned long __init xen_get_max_pages(void)
> +{
> +     unsigned long max_pages = MAX_DOMAIN_PAGES;
> +     domid_t domid = DOMID_SELF;
> +     int ret;
> +
> +     ret = HYPERVISOR_memory_op(XENMEM_maximum_reservation, &domid);
> +     if (ret > 0)
> +             max_pages = ret;
> +     return min(max_pages, MAX_DOMAIN_PAGES);
> +}
> +
>  /**
>   * machine_specific_memory_setup - Hook for machine specific memory setup.
>   **/
> @@ -292,6 +305,12 @@ char * __init xen_memory_setup(void)
>  
>       sanitize_e820_map(e820.map, ARRAY_SIZE(e820.map), &e820.nr_map);
>  
> +     extra_limit = xen_get_max_pages();
> +     if (extra_limit >= max_pfn)
> +             extra_pages = extra_limit - max_pfn;
> +     else
> +             extra_pages = 0;
> +
>       extra_pages += xen_return_unused_memory(xen_start_info->nr_pages, 
> &e820);
>  
>       /*
> -- 
> 1.7.2.5

_______________________________________________
Xen-devel mailing list
Xen-devel@xxxxxxxxxxxxxxxxxxx
http://lists.xensource.com/xen-devel


 


Rackspace

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