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

Re: [Xen-devel] Xen balloon driver improvement (version 1)



El 22/10/14 a les 18.29, Wei Liu ha escrit:
> Hi all
> 
> This is my initial design to improve Xen balloon driver.
> 
> PDF version with graphs can be found at
> 
> http://xenbits.xen.org/people/liuw/xen-balloon-driver-improvement.pdf
> 
> % Xen Balloon Driver Improvement
> % Wei Liu <<wei.liu2@xxxxxxxxxx>>
> 
> -------------------------------------------
> Version     Date         Changes
> -------     ----         ------------------
>   1         22/10/2014   Initial version.
> -------------------------------------------
> 
> ## Motives
> 
> 1. Balloon pages fragments guest physical address space.
> 1. Balloon compaction infrastructure can migrate ballooned pages from
>    start of zone to end of zone, hence creating contiguous guest physical
>    address space.
> 1. Having contiguous guest physical address enables some options to
>    improve performance.
> 
> ## Goal of improvement
> 
> Balloon driver makes use of as many huge pages as possible,
> defragmenting both guest address space and Xen pages. This should be
> achieved without any particular hypervisor side feature.
> 
> ## Design and implementation
> 
> When balloon driver is asked to increase / decrease reservation, it
> will always start with huge page. However, due to resource
> availability in both hypervisor and guest, it's not always possible to
> get hold of a huge page. In that case the driver will fall back to use
> normal size page. Balloon driver later will try to coalesce small size
> pages into huge page. As time goes by, both Xen and guest should use
> more and more huge pages.

All this looks quite complicated IMHO, it's adding a lot of logic to the
balloon driver. Can't you just ask the memory subsystem to allocate a
page (or pages) from a specific physical range, and force it to page
out/move what's there at allocation time?

For example I know FreeBSD has contigmalloc(9)[1] which I think could be
used to achieve this. You could start asking for pages starting at
maxpfn and go down from there, keeping fragmentation at a minimum.

[1]
https://www.freebsd.org/cgi/man.cgi?query=contigmalloc&apropos=0&sektion=0&manpath=FreeBSD+10.1-RELEASE&arch=default&format=html

Roger.

_______________________________________________
Xen-devel mailing list
Xen-devel@xxxxxxxxxxxxx
http://lists.xen.org/xen-devel


 


Rackspace

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