linux-kernel.vger.kernel.org archive mirror
 help / color / mirror / Atom feed
* [patch] fs, seq_file: fallback to vmalloc instead of oom kill processes
@ 2014-11-26 22:16 David Rientjes
  2014-11-26 22:24 ` Andrew Morton
  0 siblings, 1 reply; 5+ messages in thread
From: David Rientjes @ 2014-11-26 22:16 UTC (permalink / raw)
  To: Andrew Morton; +Cc: Heiko Carstens, Christoph Hellwig, Al Viro, linux-kernel

Since commit 058504edd026 ("fs/seq_file: fallback to vmalloc allocation"),
seq_buf_alloc() falls back to vmalloc() when the kmalloc() for contiguous
memory fails.  This was done to address order-4 slab allocations for
reading /proc/stat on large machines and noticed because
PAGE_ALLOC_COSTLY_ORDER < 4, so there is no infinite loop in the page
allocator when allocating new slab for such high-order allocations.

Contiguous memory isn't necessary for caller of seq_buf_alloc(), however.
Other GFP_KERNEL high-order allocations that are <=
PAGE_ALLOC_COSTLY_ORDER will simply loop forever in the page allocator
and oom kill processes as a result.

We don't want to kill processes so that we can allocate contiguous memory
in situations when contiguous memory isn't necessary.

This patch does the kmalloc() allocation with __GFP_NORETRY for
high-order allocations.  This still utilizes memory compaction and direct 
reclaim in the allocation path, the only difference is that it will fail 
immediately instead of oom kill processes when out of memory.

Signed-off-by: David Rientjes <rientjes@google.com>
---
 fs/seq_file.c | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/fs/seq_file.c b/fs/seq_file.c
--- a/fs/seq_file.c
+++ b/fs/seq_file.c
@@ -36,7 +36,7 @@ static void *seq_buf_alloc(unsigned long size)
 {
 	void *buf;
 
-	buf = kmalloc(size, GFP_KERNEL | __GFP_NOWARN);
+	buf = kmalloc(size, GFP_KERNEL | __GFP_NORETRY | __GFP_NOWARN);
 	if (!buf && size > PAGE_SIZE)
 		buf = vmalloc(size);
 	return buf;

^ permalink raw reply	[flat|nested] 5+ messages in thread

end of thread, other threads:[~2014-11-26 22:48 UTC | newest]

Thread overview: 5+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2014-11-26 22:16 [patch] fs, seq_file: fallback to vmalloc instead of oom kill processes David Rientjes
2014-11-26 22:24 ` Andrew Morton
2014-11-26 22:38   ` Joe Perches
2014-11-26 22:40   ` David Rientjes
2014-11-26 22:48     ` Andrew Morton

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).