[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index] Re: [PATCH] memory: arrange to conserve on DMA reservation
On Mon, Jun 16, 2025 at 04:23:40PM +0200, Jan Beulich wrote: > On 16.06.2025 15:27, Roger Pau Monné wrote: > > On Tue, Feb 25, 2025 at 03:58:34PM +0100, Jan Beulich wrote: > >> Entities building domains are expected to deal with higher order > >> allocation attempts (for populating a new domain) failing. If we set > >> aside a reservation for DMA, try to avoid taking higher order pages from > >> that reserve pool. > >> > >> Instead favor order-0 ones which often can still be > >> supplied from higher addressed memory, even if we've run out of > >> large/huge pages there. > > > > I would maybe write that last sentence as: force non zero order > > allocations to use the non-DMA region, and if the region cannot > > fulfill the request return an error to the caller for it to retry with > > a smaller order. Effectively this limits allocations from the DMA > > region to only be of order 0 during physmap domain population. > > I can take this text, sure. > > >> --- a/xen/common/memory.c > >> +++ b/xen/common/memory.c > >> @@ -192,6 +192,14 @@ static void populate_physmap(struct memo > >> * delayed. > >> */ > >> a->memflags |= MEMF_no_icache_flush; > >> + > >> + /* > >> + * Heuristically assume that during domain construction the > >> caller is > >> + * capable of falling back to order-0 allocations, allowing us to > >> + * conserve on memory otherwise held back for DMA purposes. > >> + */ > >> + if ( a->extent_order ) > >> + a->memflags |= MEMF_no_dma; > > > > For PV domains: is it possible for toolstack to try to allocate a > > certain amount of pages from the DMA pool for the benefit of the > > domain? > > Not directly at least. To benefit the domain, it would also need to be > told where in PFN space those pages would have ended up. My question makes no sense anyway if MEMF_no_dma isn't exposed to the hypercall interface. > > I also wonder if it would make sense to attempt to implement the > > logic on the toolstack side: meminit_{hvm,pv}()? > > > > No strong opinion, but slightly less logic in the hypervisor, and > > won't change the interface for possibly existing toolstacks that don't > > pass MEMF_no_dma on purpose. > > MEMF_no_dma isn't exposed outside of the hypervisor. Oh, I see. One question I have though, on systems with a low amount of memory (let's say 8GB), does this lead to an increase in domain construction time due to having to fallback to order 0 allocations when running out of non-DMA memory? Thanks, Roger.
|
![]() |
Lists.xenproject.org is hosted with RackSpace, monitoring our |