Re: [PATCH v2 5/8] mm/isolation: change pageblock isolation logic to fix freepage counting bugs
From: Joonsoo Kim <hidden>
Date: 2014-08-07 12:26:17
Also in:
lkml
2014-08-07 17:53 GMT+09:00 Vlastimil Babka [off-list ref]:
On 08/07/2014 10:19 AM, Joonsoo Kim wrote:quoted
quoted
Is it needed to disable the pcp list? Shouldn't drain be enough? After the drain you already are sure that future freeing will see MIGRATE_ISOLATE and skip pcp list anyway, so why disable it completely?Yes, it is needed. Until we move freepages from normal buddy list to isolate buddy list, freepages could be allocated by others. In this case, they could be moved to pcp list. When it is flushed from pcp list to buddy list, we need to check whether it is on isolate migratetype pageblock or not. But, we don't want that hook in free_pcppages_bulk() because it is page allocator's normal freepath. To remove it, we shoule disable the pcp list here.Ah, right. I thought that everything going to pcp lists would be through freeing which would already observe the isolate migratetype and skip pcplist. I forgot about the direct filling of pcplists from buddy list. You're right that we don't want extra hooks there. Still, couldn't this be solved in a simpler way via another pcplist drain after the pages are moved from normal to isolate buddy list? Should be even faster because instead of disable - drain - enable (5 all-cpu kicks, since each pageset_update does 2 kicks) you have drain - drain (2 kicks). While it's true that pageset_update is single-zone operation, I guess we would easily benefit from having a single-zone drain operation as well.
I hope so, but, it's not possible. Consider following situation.
Page A: on pcplist of CPU2 and it is on isolate pageblock.
CPU 1 CPU 2
drain pcplist
wait IPI finished move A to normal buddy list
finish IPI
A is moved to pcplist by allocation request
move doesn't catch A,
because it is on pcplist.
drain pcplist
wait IPI finished move A to normal buddy list
finish IPI
A is moved to pcplist by allocation request
repeat!!
It could happen infinitely, though, low possibility.
Thanks.
--
To unsubscribe, send a message with 'unsubscribe linux-mm' in
the body to majordomo@kvack.org. For more info on Linux MM,
see: http://www.linux-mm.org/ .
Don't email: <a href=mailto:"dont@kvack.org"> email@kvack.org </a>