Re: [PATCH] Get 7% more pages in a pagevec

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

 



On Wed, Dec 06, 2017 at 01:38:42PM +0100, Michal Hocko wrote:
> On Tue 05-12-17 18:25:21, Matthew Wilcox wrote:
> > -/* 14 pointers + two long's align the pagevec structure to a power of two */
> > -#define PAGEVEC_SIZE	14
> > +/* 15 pointers + header align the pagevec structure to a power of two */
> > +#define PAGEVEC_SIZE	15
> 
> And now you have ruined the ultimate constant of the whole MM :p
> But seriously, I have completely missed that pagevec has such a bad
> layout.

It's fun to go back into the historical tree and see why.

First it was two 'int's and an array of 16 pointers.  Marcelo noticed that
was three cachelines instead of two, so he shrank it to two shorts and
an array of 15 pointers:

https://git.kernel.org/pub/scm/linux/kernel/git/tglx/history.git/commit/include/linux/pagevec.h?id=afead7df5a05118052a238c54285e7119da65831

But then he found out that Pentium 2 and Pentium Pro sucked at 16-bit loads,
so he changed it to two longs and an array of 14 pointers:

https://git.kernel.org/pub/scm/linux/kernel/git/tglx/history.git/commit/include/linux/pagevec.h?id=6140f8a54db42320b1d05ce2680b5619210b88ad

I wonder what would have happened if he had benchmarked it with 'char'
instead of 'short'.  I think I have a Pentium 2 in the basement somewhere;
perhaps I'll drag it out and fire it up.

> Acked-by: Michal Hocko <mhocko@xxxxxxxx>

Thanks!

--
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 OMAP]     [Linux MIPS]     [eCos]     [Asterisk Internet PBX]     [Linux API]
  Powered by Linux