|
|
|
|
|
|
|
|
|
|
xen-devel
Re: [Xen-devel] [PATCH] x86: use 'dom0_mem' to limit the number of pages
On Tue, 2011-08-16 at 13:29 +0100, David Vrabel wrote:
> On 16/08/11 01:31, Konrad Rzeszutek Wilk wrote:
> > On Mon, Aug 15, 2011 at 07:08:33PM +0100, David Vrabel wrote:
> >> x86: use 'dom0_mem' to limit the number of pages for dom0
> >>
> >> Use the 'dom0_mem' command line option to set the maximum number of
> >> pages for dom0. dom0 can use then use the XENMEM_maximum_reservation
> >> memory op to automatically find this limit and reduce the size of any
> >> page tables etc.
> >
> > So .. I was actually curious about this -how did this use to work
> > with 2.6.18? In there, if you did 'dom0_mem=max:2GB' it would limit the
> > amount of memory - so how does it do that?
>
> I don't know. I've not really looked at how the older kernels did it.
The classic-Xen kernels didn't try and munge the pseudo-physical (i.e.
RAM) address map with the machine (i.e. I/O) address map together in the
way pvops does, they just treated them as two orthogonal address spaces
(which has it's own issues, /proc/iomem is a complete fiction for
example). They don't really suffer from the same issues wrt e.g.
tracking where the I/O hole was before you clipped the initial amount of
RAM and all that.
The key difference is that classic-Xen kernels called both
XENMEM_memory_map and XENMEM_machine_memory_map and dealt with both,
whereas pvops (dom0) calls XENMEM_machine_memory_map and tries to figure
out how much of the E820_RAM therein it can actually use based on
nr_pages and such. You've used XENMEM_maximum_reservation in your
followup series which I think is a suitable surrogate for calling
XENMEM_memory_map (although I didn't check).
The linkage between mm setup and balloon driver setup in the classic
kernels was more explicit too IIRC.
> >> diff -r 8d6edc3d26d2 -r 1ec6c392d40f xen/arch/x86/domain_build.c
> >> --- a/xen/arch/x86/domain_build.c Sat Aug 13 10:14:58 2011 +0100
> >> +++ b/xen/arch/x86/domain_build.c Mon Aug 15 11:42:37 2011 +0100
> >> @@ -254,6 +254,8 @@ static unsigned long __init compute_dom0
> >> }
> >> #endif
> >>
> >> + d->max_pages = min(max_pages, avail);
> >> +
> >
> > don't you need the amount of p2m as well? Or is that all limited
> > by d->max_pages?
>
> Do you mean the initial p2m supplied by Xen? I think that just covers
> the initial pages.
I think so too.
> The p2m structure maintained by the kernel appears to be dynamically
> allocated based on what mappings are required.
IIRC it is expanded around start of day to cover the start of day max
mappings etc (using BRK space) and further expanded later on
dynamically.
>
> David
>
> _______________________________________________
> Xen-devel mailing list
> Xen-devel@xxxxxxxxxxxxxxxxxxx
> http://lists.xensource.com/xen-devel
_______________________________________________
Xen-devel mailing list
Xen-devel@xxxxxxxxxxxxxxxxxxx
http://lists.xensource.com/xen-devel
|
|
|
|
|