[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index] [Xen-devel] Re: blkback/2.6.38: Use 'vzalloc' for page arrays ...
On Fri, Mar 11, 2011 at 06:57:19PM -0800, Daniel Stodden wrote: > commit ef19ebb7c4fe3e647cbc8d5bd6601a27bc6ab408 > Author: Konrad Rzeszutek Wilk <konrad.wilk@xxxxxxxxxx> > Date: Tue Mar 1 16:26:10 2011 -0500 > Previously we would allocate the array for page using 'kmalloc' > which we can as easily do with 'vzalloc'. > > Sure? Vmalloc goes in numbers of pages. The overhead from that switch is > not huge (except for that xen_blkbk allocation), but the default vector > sizes don't justify vm area construction work either. > > Mind if I'll push back with a couple kmallocs? Not at all! This is great - I haven't yet completly gone through the commits (there is a TODO in one of them - for the flush/barrier stuff), and you are already reviewing it. Thank you! Will definitly update it to be kmallocs. > > The pre-allocation of pages > was done a bit differently in the past - it used to be that > the balloon driver would export "alloc_empty_pages_and_pagevec" > which would have in one function created an array, allocated > the pages, balloned the pages out (so the memory behind those > pages would be non-present), and provide us those pages. > > - for (i = 0; i < mmap_pages; i++) > + for (i = 0; i < mmap_pages; i++) { > blkbk->pending_grant_handles[i] = BLKBACK_INVALID_HANDLE; > - > + blkbk->pending_pages[i] = alloc_page(GFP_KERNEL | > __GFP_HIGHMEM); > > This is broken if CONFIG_HIGHMEM is actually set, because the current > code won't bother mapping that page: Ooops. > > (XEN) mm.c:3795:d0 Could not find L1 PTE for address 8fb51000 > > Second, the memory overhead of not ballooning than frame out anymore is > admittedly not gigantic, but doesn't look so sweet either. > > Why are we doing this? We still need a page struct for starting I/O on > that foreign frame. The new M2P path won't touch those matters, unless > I've been missing some important pieces. It only covers our way back > from ptes to the mfn. > > This was OK as those pages were shared between other guest and > the only thing we needed was to "swizzel" the MFN of those pages > to point to the other guest MFN. We can still "swizzel" the MFNs > using the M2P (and P2M) override API calls, but for the sake of > simplicity we are dropping the balloon API calls. We can return > to those later on. > > So it's just transient for balloon.c maintenance? If so, the old > get_empty_pages_and_pagevec always carried a and_pagevec too many. :o) > Should just take a caller side vector, so coming up with a new call > would actually be a nice opportunity imho. <nods> Right. I didn't want to do until the patches that Daniel Kipper and David de Graaf were completed - as they do some surgery on the balloon code. Perhaps later on when all of that settles. > > Cheers, > Daniel > _______________________________________________ Xen-devel mailing list Xen-devel@xxxxxxxxxxxxxxxxxxx http://lists.xensource.com/xen-devel
|
Lists.xenproject.org is hosted with RackSpace, monitoring our |