Commit 146500e9 authored by Matthew Wilcox's avatar Matthew Wilcox Committed by Linus Torvalds

mm: get 7% more pages in a pagevec

We don't have to use an entire 'long' for the number of elements in the
pagevec; we know it's a number between 0 and 14 (now 15).  So we can
store it in a char, and then the bool packs next to it and we still have
two or six bytes of padding for more elements in the header.  That gives
us space to cram in an extra page.

Link: http://lkml.kernel.org/r/20171206022521.GM26021@bombadil.infradead.orgSigned-off-by: default avatarMatthew Wilcox <mawilcox@microsoft.com>
Acked-by: default avatarMichal Hocko <mhocko@suse.com>
Signed-off-by: default avatarAndrew Morton <akpm@linux-foundation.org>
Signed-off-by: default avatarLinus Torvalds <torvalds@linux-foundation.org>
parent 977fbdcd
...@@ -9,14 +9,14 @@ ...@@ -9,14 +9,14 @@
#ifndef _LINUX_PAGEVEC_H #ifndef _LINUX_PAGEVEC_H
#define _LINUX_PAGEVEC_H #define _LINUX_PAGEVEC_H
/* 14 pointers + two long's align the pagevec structure to a power of two */ /* 15 pointers + header align the pagevec structure to a power of two */
#define PAGEVEC_SIZE 14 #define PAGEVEC_SIZE 15
struct page; struct page;
struct address_space; struct address_space;
struct pagevec { struct pagevec {
unsigned long nr; unsigned char nr;
bool percpu_pvec_drained; bool percpu_pvec_drained;
struct page *pages[PAGEVEC_SIZE]; struct page *pages[PAGEVEC_SIZE];
}; };
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment