On Wed, May 05, 2010 at 02:55:38PM +0100, Mel Gorman wrote:
That explains it! But anything can call alloc_pages(order>0) with some
semaphore held.
Yes success rate will be slightly worse but this also applies to all
regular vmscan paths that don't send IPI but they only flush the local
queue with lru_add_drain, simply pages won't be freed until there will
be some other cpu holding the refcount on them, it is not specific to
compaction.c but it applies to vmscan.c and vmscan likely not wanting
to send an IPI flood because it could too if it wanted.
But I guess I should at least use lru_add_drain() in replacement of
migrate_prep...
I don't know if IPI is measurable, but it usually is...
lru_add_drain_all->schedule_on_each_cpu->flush_work
Where? I never triggered other issues in the page allocator with
lockdep, just this one pops up.
--