[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index] [Xen-devel] RE: [PATCH] tmem: fix to 20945 "When tmem is enabled, reserve a fraction of memory"
Hmmm... OK, would you mind putting an #ifndef NDEBUG around the printk("...failing order...)" in tmem_relinquish_pages() for now then? Cleaning this up properly is too much surgery until post-4.0. (Do you want an officially submitted patch?) > -----Original Message----- > From: Keir Fraser [mailto:keir.fraser@xxxxxxxxxxxxx] > Sent: Thursday, February 18, 2010 12:38 AM > To: Dan Magenheimer; Jan Beulich > Cc: xen-devel@xxxxxxxxxxxxxxxxxxx > Subject: Re: [PATCH] tmem: fix to 20945 "When tmem is enabled, reserve > a fraction of memory" > > If you don't want verbosity in the failed-allocation path, remove your > printk. Notice non-tmem code doesn't make a noise in this case. > tmem_relinquish_pages() takes an order parameter, and the normal path > through the allocator unconditionally calls it. Hence it doesn't make > sense > to logically separate order=0 from order>=9 in this case either, from > the > p.o.v. of the caller. > > -- Keir > > On 17/02/2010 21:49, "Dan Magenheimer" <dan.magenheimer@xxxxxxxxxx> > wrote: > > > Hi Keir -- > > > > Hmmm... one other consequence of the change you made to the patch > > (as checked in as 20955 in staging) is that every attempt to allocate > > any 2MB page for a new domain (when memory is scarce) will result > > in a complaint printk'ed from tmem_relinquish_pages() before > > the domain builder falls back to order==0 pages. This > > verbosity is probably not desirable in a product, though > > it may be very desirable with debug enabled as we track > > down other order>0 allocations. > > > > Changing back to the "goto fail" avoids the verbosity without > > losing the debug capability. > > > > Dan > > > >> -----Original Message----- > >> From: Dan Magenheimer > >> Sent: Wednesday, February 17, 2010 8:13 AM > >> To: Jan Beulich; Keir Fraser > >> Cc: xen-devel@xxxxxxxxxxxxxxxxxxx > >> Subject: RE: [PATCH] tmem: fix to 20945 "When tmem is enabled, > reserve > >> a fraction of memory" > >> > >>> From: Jan Beulich [mailto:JBeulich@xxxxxxxxxx] > >>> Subject: Re: [PATCH] tmem: fix to 20945 "When tmem is enabled, > >> reserve > >>> a fraction of memory" > >>> > >>>>>> Keir Fraser <keir.fraser@xxxxxxxxxxxxx> 17.02.10 13:10 >>> > >>>> On 16/02/2010 18:30, "Dan Magenheimer" > <dan.magenheimer@xxxxxxxxxx> > >>> wrote: > >>>> > >>>>> + if ( order == 0) > >>>>> + goto try_tmem; > >>>>> + if ( order >= 9) > >>>>> + goto fail; > >>>> > >>>> Why not try_tmem in the case that order>=9, too, rather than fail > >>> outright? > >>> > >>> It could be done that way, but wouldn't have any effect, as tmem > >>> doesn't even try to relinquish any memory when order > 0. > >> > >> Correct. To explain (if anyone is interested): > >> > >> Tmem maintains queues of order==0 pages internally because > >> if a page is released to the xenheap/domheap, it must be scrubbed. > >> But tmem is highly likely to use the page again (and SOON). > >> If tmem immediately reclaims the page, the scrubbing is wasted > >> cycles. But if it does not and some other xenheap/domheap > allocation > >> obtains the page, the contents of an unscrubbed page could > >> reveal data from another domain so would be a potential > >> security hole. > >> > >> When a domain is being created, a large number of pages > >> may be (scrubbed and) transferred from tmem to Xen/domheap. > >> While this transfer, in combination with the "buddying" > >> in xenheap/domheap, may result in some order>0 chunks of > >> memory, there is no guarantee that it will. > >> > >> I considered adding some kind of "buddying" to tmem's "free" > >> pages (and the interface to tmem_relinquish_pages() from > >> alloc_heap_pages() allows for an order>0 to be requested), > >> but due to fragmentation it would only rarely have any > >> value, especially for order>1, so I never implemented it. > >> > >> So, in the end, the real solution is to change any allocations > >> in Xen, at least any allocations that occur after dom0 is > >> running, to no longer require order>0 allocations. > >> > >> Dan > > _______________________________________________ Xen-devel mailing list Xen-devel@xxxxxxxxxxxxxxxxxxx http://lists.xensource.com/xen-devel
|
Lists.xenproject.org is hosted with RackSpace, monitoring our |