Re: [PATCH] mm, page_alloc: optimize batch count in free_pcppages_bulk()

From: JoonSoo Kim
Date: Wed Aug 07 2013 - 15:08:25 EST


Hello, Andrew.

2013/8/7 Andrew Morton <akpm@xxxxxxxxxxxxxxxxxxxx>:
> On Tue, 6 Aug 2013 17:40:40 +0900 Joonsoo Kim <iamjoonsoo.kim@xxxxxxx> wrote:
>
>> If we use a division operation, we can compute a batch count more closed
>> to ideal value. With this value, we can finish our job within
>> MIGRATE_PCPTYPES iteration. In addition, batching to free more pages
>> may be helpful to cache usage.
>>
>
> hm, maybe. The .text got 120 bytes larger so the code now will
> eject two of someone else's cachelines, which can't be good. I need
> more convincing, please ;)
>
> (bss got larger too - I don't have a clue why this happens).

In my testing, it makes .text just 64 byes larger.
I think that I cannot avoid such few increasing size.

Current round-robin freeing algorithm access 'struct page' at random
order, because
it change it's migrate type and list on every iteration and a page on
different list
may be far from each other. If we do more batch free, we have more
probability to access
adjacent 'struct page' than before, so I think that this is
cache-friendly. But this is just
theoretical argument, so I'm not sure whether it is useful or not :)

Thanks.
--
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/