Re: [PATCH 3/4] mm: Gather more PFNs before sending a TLB to flush unmapped pages

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

 



On Wed, Apr 15, 2015 at 01:42:20PM +0200, Peter Zijlstra wrote:
> On Wed, Apr 15, 2015 at 11:42:55AM +0100, Mel Gorman wrote:
> > +/*
> > + * Use a page to store as many PFNs as possible for batch unmapping. Adjusting
> > + * this trades memory usage for number of IPIs sent
> > + */
> > +#define BATCH_TLBFLUSH_SIZE \
> > +	((PAGE_SIZE - sizeof(struct cpumask) - sizeof(unsigned long)) / sizeof(unsigned long))
> >  
> >  /* Track pages that require TLB flushes */
> >  struct unmap_batch {
> > +	/* Update BATCH_TLBFLUSH_SIZE when adjusting this structure */
> >  	struct cpumask cpumask;
> >  	unsigned long nr_pages;
> >  	unsigned long pfns[BATCH_TLBFLUSH_SIZE];
> 
> The alternative is something like:
> 
> struct unmap_batch {
> 	struct cpumask cpumask;
> 	unsigned long nr_pages;
> 	unsigned long pfnsp[0];
> };
> 
> #define BATCH_TLBFLUSH_SIZE ((PAGE_SIZE - sizeof(struct unmap_batch)) / sizeof(unsigned long))
> 
> and unconditionally allocate 1 page. This saves you from having to worry
> about the layout of struct unmap_batch.

True but then I need to calculate the size of the real array so it's
similar in terms of readability. The plus would be that if the structure
changes then the size calculation is not changed but then the allocation
site and the size calculation must be kept in sync. I did not see a clear
win of one approach over the other so flipped a coin.

-- 
Mel Gorman
SUSE Labs

--
To unsubscribe, send a message with 'unsubscribe linux-mm' in
the body to majordomo@xxxxxxxxx.  For more info on Linux MM,
see: http://www.linux-mm.org/ .
Don't email: <a href=mailto:"dont@xxxxxxxxx";> email@xxxxxxxxx </a>




[Index of Archives]     [Linux ARM Kernel]     [Linux ARM]     [Linux Omap]     [Fedora ARM]     [IETF Annouce]     [Bugtraq]     [Linux]     [Linux OMAP]     [Linux MIPS]     [ECOS]     [Asterisk Internet PBX]     [Linux API]