Re: [RFC][PATCH] Remove cgroup member from struct page

From: KAMEZAWA Hiroyuki
Date: Mon Sep 01 2008 - 03:16:20 EST


On Mon, 1 Sep 2008 16:56:44 +1000
Nick Piggin <nickpiggin@xxxxxxxxxxxx> wrote:

> On Monday 01 September 2008 10:01, KAMEZAWA Hiroyuki wrote:
> > On Sun, 31 Aug 2008 23:17:56 +0530
> >
> > Balbir Singh <balbir@xxxxxxxxxxxxxxxxxx> wrote:
> > > This is a rewrite of a patch I had written long back to remove struct
> > > page (I shared the patches with Kamezawa, but never posted them anywhere
> > > else). I spent the weekend, cleaning them up for 2.6.27-rc5-mmotm (29 Aug
> > > 2008).
> >
> > It's just because I think there is no strong requirements for 64bit
> > count/mapcount. There is no ZERO_PAGE() for ANON (by Nick Piggin. I add him
> > to CC.) (shmem still use it but impact is not big.)
>
> I think it would be nice to reduce the impact when it is not configured
> anyway. Normally I would not mind so much, but this is something that
> many distros will want to enable but fewer users will make use of it.
>
> I think it is always a very good idea to try to reduce struct page size.
> When looking at the performance impact though, just be careful with the
> alignment of struct page... I actually think it is going to be a
> performance win in many cases to make struct page 64 bytes.
>
On 32bit, sizeof(struct page) = 32bytes + 4bytes(page_cgroup)
On 64bit, sizeof(struct page) = 56bytes + 8bytes(page_cgroup)
So, 32bit case is a problem.

>
> If you do that, it might even be an idea to allocate flat arrays with
> bootmem. It would just be slightly more tricky more tricky to fit this
> in with the memory model. But that's not a requirement, just an idea
> for a small optimisation.
>
If we make mem_res_controller available only under SPARSEMEM, I think we can
do in very straightfoward way.

Thanks,
-Kame

--
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majordomo@xxxxxxxxxxxxxxx
More majordomo info at http://vger.kernel.org/majordomo-info.html
Please read the FAQ at http://www.tux.org/lkml/