Thread (45 messages) 45 messages, 13 authors, 2009-11-25

Re: [PATCH 0/7] Kill PF_MEMALLOC abuse

From: KOSAKI Motohiro <hidden>
Date: 2009-11-17 08:33:47
Also in: lkml

On Tue, 17 Nov 2009, KOSAKI Motohiro wrote:
quoted
PF_MEMALLOC have following effects.
  (1) Ignore zone watermark
  (2) Don't call reclaim although allocation failure, instead return ENOMEM
  (3) Don't invoke OOM Killer
  (4) Don't retry internally in page alloc

Some subsystem paid attention (1) only, and start to use PF_MEMALLOC abuse.
But, the fact is, PF_MEMALLOC is the promise of "I have lots freeable memory.
if I allocate few memory, I can return more much meory to the system!".
Non MM subsystem must not use PF_MEMALLOC. Memory reclaim
need few memory, anyone must not prevent it. Otherwise the system cause
mysterious hang-up and/or OOM Killer invokation.

if many subsystem will be able to use emergency memory without any
usage rule, it isn't for emergency. it can become empty easily.

Plus, characteristics (2)-(4) mean PF_MEMALLOC don't fit to general
high priority memory allocation.

Thus, We kill all PF_MEMALLOC usage in no MM subsystem.
I agree in principle with removing non-VM users of PF_MEMALLOC, but I 
think it should be left to the individual subsystem maintainers to apply 
or ack since the allocations may depend on the __GFP_NORETRY | ~__GFP_WAIT 
behavior of PF_MEMALLOC.  This could be potentially dangerous for a 
PF_MEMALLOC user if allocations made by the kthread, for example, should 
never retry for orders smaller than PAGE_ALLOC_COSTLY_ORDER or block on 
direct reclaim.
if there is so such reason. we might need to implement another MM trick.
but keeping this strage usage is not a option. All memory freeing activity
(e.g. page out, task killing) need some memory. we need to protect its
emergency memory. otherwise linux reliability decrease dramatically when
the system face to memory stress.





--
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>
Keyboard shortcuts
hback out one level
jnext message in thread
kprevious message in thread
ldrill in
Escclose help / fold thread tree
?toggle this help