Re: [PATCH] General purpose zeroed page slab

Matthew Wilcox
2004-10-18T18:42:10Z

On Mon, Oct 18, 2004 at 02:06:45PM -0400, Martin K. Petersen wrote:
> Andi> The means every user has to memset it to zero before free. Add
> Andi> a comment for that at least.
>
> Andi> Also that's pretty dumb. How about keeping track how much of the
> Andi> page got non zeroed (e.g. by using a few free words in struct
> Andi> page for a coarse grained dirty bitmap)
>
> Andi> Then you could memset on free only the parts that got actually
> Andi> changed, and never waste cache lines for anything else.
>
> Ayup. I'll ponder this a bit. For now I think I'm going to leave the
> page table cache stuff as is and make the general purpose slab a
> separate project. It'll be easy to switch the page tables over later.

It's probably worth doing this with a static cachep in slab.c and only
exposing a get_zeroed_page() / free_zeroed_page() interface, with the
latter doing the memset to 0. I disagree with Andi over the dumbness
of zeroing the whole page. That makes it cache-hot, which is what you
want from a page you allocate from slab.

--
"Next the statesmen will invent cheap lies, putting the blame upon
the nation that is attacked, and every man will be glad of those
conscience-soothing falsities, and will diligently study them, and refuse
to examine any refutations of them; and thus he will by and by convince
himself that the war is just, and will thank God for the better sleep
he enjoys after this process of grotesque self-deception." -- Mark Twain