Re: [PATCH v2 5/8] mm/isolation: change pageblock isolation logic to fix freepage counting bugs

From: Vlastimil Babka
Date: Thu Aug 07 2014 - 04:53:15 EST


On 08/07/2014 10:19 AM, Joonsoo Kim wrote:
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.

Vlastimil



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