> From: Konrad Rzeszutek Wilk [mailto:[email protected]] > Sent: Tuesday, March 19, 2013 10:44 AM > To: Dan Magenheimer > Cc: Wanpeng Li; Greg Kroah-Hartman; Andrew Morton; Seth Jennings; Minchan > Kim; [email protected]; > [email protected] > Subject: Re: [PATCH v2 1/4] introduce zero filled pages handler > > On Sat, Mar 16, 2013 at 2:24 PM, Dan Magenheimer > <[email protected]> wrote: > >> From: Konrad Rzeszutek Wilk [mailto:[email protected]] > >> Subject: Re: [PATCH v2 1/4] introduce zero filled pages handler > >> > >> > + > >> > + for (pos = 0; pos < PAGE_SIZE / sizeof(*page); pos++) { > >> > + if (page[pos]) > >> > + return false; > >> > >> Perhaps allocate a static page filled with zeros and just do memcmp? > > > > That seems like a bad idea. Why compare two different > > memory locations when comparing one memory location > > to a register will do? > > Good point. I was hoping there was an fast memcmp that would > do fancy SSE registers. But it is memory against memory instead of > registers. > > Perhaps a cunning trick would be to check (as a shortcircuit) > check against 'empty_zero_page' and if that check fails, then try > to do the check for each byte in the code?
Curious about this, I added some code to check for this case. In my test run, the conditional "if (page == ZERO_PAGE(0))" was never true, for >200000 pages passed through frontswap that were zero-filled. My test run is certainly not conclusive, but perhaps some other code in the swap subsystem disqualifies ZERO_PAGE as a candidate for swapping? Or maybe it is accessed frequently enough that it never falls out of the active-anonymous page queue? Dan P.S. In arch/x86/include/asm/pgtable.h: #define ZERO_PAGE(vaddr) (virt_to_page(empty_zero_page)) -- To unsubscribe from this list: send the line "unsubscribe linux-kernel" in the body of a message to [email protected] More majordomo info at http://vger.kernel.org/majordomo-info.html Please read the FAQ at http://www.tux.org/lkml/

