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>