[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
|
Lists.xenproject.org is hosted with RackSpace, monitoring our |