From mboxrd@z Thu Jan 1 00:00:00 1970 From: =?windows-1252?Q?Roger_Pau_Monn=E9?= Subject: Re: Xen balloon driver improvement (version 1) Date: Thu, 23 Oct 2014 16:30:24 +0200 Message-ID: <54491100.8090100@citrix.com> References: <20141022162930.GA8489@zion.uk.xensource.com> Mime-Version: 1.0 Content-Type: text/plain; charset="us-ascii" Content-Transfer-Encoding: 7bit Return-path: In-Reply-To: <20141022162930.GA8489@zion.uk.xensource.com> List-Unsubscribe: , List-Post: List-Help: List-Subscribe: , Sender: xen-devel-bounces@lists.xen.org Errors-To: xen-devel-bounces@lists.xen.org To: Wei Liu , xen-devel@lists.xen.org Cc: Andrew Cooper , Boris Ostrovsky , David Vrabel , Ian Campbell , Stefano Stabellini List-Id: xen-devel@lists.xenproject.org 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 <> > > ------------------------------------------- > 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.