On Sat, 31 May 2008 10:50:40 +0100 Jeremy Fitzhardinge <jeremy@xxxxxxxx> wrote:
Does __GFP_HIGH necessarily mean that it won't try to do IO to push pages out?
Nope.
__GFP_FS: may enter filesystems
__GFP_IO: may perform IO
__GFP_IO also means "may do swapout". Even when swap is on a regular
file. This is because we do all the fs-related operations up-front
during swapon. So at alloc_pages()-time we can go direct-to-disk-blocks.
So I assume for this application you'll need GFP_NOIO. That's still
heaps better than GFP_ATOMIC, because it can sleep and wait for kswapd
to do stuff, and it can reclaim clean pagecache and clean swapcache.
Whether you should also add __GFP_HIGH to cause the page allocation to
bite harder into the page reserves is unclear to me, sorry.