Re: question on NUMA page migration

From: Peter Zijlstra
Date: Fri Oct 19 2012 - 12:39:09 EST


On Fri, 2012-10-19 at 11:53 -0400, Rik van Riel wrote:
>
> If we do need the extra refcount, why is normal
> page migration safe? :)

Its mostly a matter of how convoluted you make the code, regular page
migration is about as bad as you can get

Normal does:

follow_page(FOLL_GET) +1

isolate_lru_page() +1

put_page() -1

ending up with a page with a single reference (for anon, or one extra
each for the mapping and buffer).

And while I suppose I could do a put_page() in migrate_misplaced_page()
that makes the function frob the page-count depending on the return
value.

I always try and avoid conditional locks/refs, therefore the code ends
up doing:

page = vm_normal_page()
if (page) {
get_page()

migrate_misplaced_page()

put_page()
}


where migrate_misplaced_page() does isolate_lru_page()/putback_lru_page,
and this leaves the page-count invariant.

We got a ref, therefore we must put a ref, is easier than we got a ref
and must put except when...
--
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/