All of lore.kernel.org
 help / color / mirror / Atom feed
From: Steven Rostedt <rostedt@goodmis.org>
To: David Rientjes <rientjes@google.com>
Cc: Vaibhav Nagarnaik <vnagarnaik@google.com>,
	Ingo Molnar <mingo@redhat.com>,
	Frederic Weisbecker <fweisbec@gmail.com>,
	Michael Rubin <mrubin@google.com>,
	David Sharp <dhsharp@google.com>,
	linux-kernel@vger.kernel.org,
	Peter Zijlstra <peterz@infradead.org>, Mel Gorman <mel@csn.ul.ie>,
	Rik Van Riel <riel@redhat.com>,
	Andrew Morton <akpm@linux-foundation.org>
Subject: Re: [PATCH] trace: Set oom_score_adj to maximum for ring buffer allocating process
Date: Fri, 27 May 2011 08:48:22 -0400	[thread overview]
Message-ID: <1306500502.3857.26.camel@gandalf.stny.rr.com> (raw)
In-Reply-To: <alpine.DEB.2.00.1105270220580.22108@chino.kir.corp.google.com>

On Fri, 2011-05-27 at 02:43 -0700, David Rientjes wrote:

> This problem isn't new, it's always been possible that an allocation that 
> is higher order, using GFP_ATOMIC or GFP_NOWAIT, or utilizing 
> __GFP_NORETRY as I suggested here, would deplete memory at the same time 
> that a GFP_FS allocation on another cpu would invoke the oom killer.
> 
> If that happens between the time when tracing_resize_ring_buffer() goes 
> oom and its nicely written error handling starts freeing memory, then it's 
> possible that another task will be unfairly oom killed.  Note that the 
> suggested solution of test_set_oom_score_adj(OOM_SCORE_ADJ_MAX) doesn't 
> prevent that in all cases: it's possible that another thread on the system 
> also has an oom_score_adj of OOM_SCORE_ADJ_MAX and it would be killed in 
> its place just because it appeared in the tasklist first (which is 
> guaranteed if this is simply an echo command).
> 
> Relying on the oom killer to kill this task for parallel blockable 
> allocations doesn't seem like the best solution for the sole reason that 
> the program that wrote to buffer_size_kb may count on its return value.  
> It may be able to handle an -ENOMEM return value and, perhaps, try to 
> write a smaller value?
> 
> I think what this patch really wants to do is utilize __GFP_NORETRY as 
> previously suggested and, if we're really concerned about parallel 
> allocations in this instance even though the same situation exists all 
> over the kernel, also create an oom notifier with register_oom_notifier() 
> that may be called in oom conditions that would free memory when 
> buffer->record_disabled is non-zero and prevent the oom.  That would 
> increase the size of the ring buffer as large as possible up until oom 
> even though it may not be to what the user requested.
> 
> Otherwise, you'll just want to use oom_killer_disable() to preven the oom 
> killer altogether.

Thanks for the detailed explanation. OK, I'm convinced. The proper
solution looks to be both the use of __GFP_NORETRY and the use of
test_set_oom_score_adj(). I don't think it is necessary to worry about
multiple users of this score adj, as when we are in an OOM situation,
things are just bad to begin with. But Google has to deal with bad
situations more than others, so if it becomes an issue for you, then we
can discuss those changes later.

Vaibhav, can you send an updated patch?

Thanks,

-- Steve



  reply	other threads:[~2011-05-27 12:48 UTC|newest]

Thread overview: 30+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2011-05-26 19:52 [PATCH] trace: Set oom_score_adj to maximum for ring buffer allocating process Vaibhav Nagarnaik
2011-05-26 20:04 ` Steven Rostedt
2011-05-26 20:22   ` David Rientjes
2011-05-26 20:23   ` Vaibhav Nagarnaik
2011-05-26 20:33     ` David Rientjes
2011-05-26 21:00       ` Steven Rostedt
2011-05-26 22:28         ` Vaibhav Nagarnaik
2011-05-26 23:38           ` Steven Rostedt
2011-05-27  9:43             ` David Rientjes
2011-05-27 12:48               ` Steven Rostedt [this message]
2011-05-26 23:23         ` Vaibhav Nagarnaik
2011-05-27 17:58 ` Vaibhav Nagarnaik
2011-05-27 23:22   ` David Rientjes
2011-05-28  0:44     ` Vaibhav Nagarnaik
2011-05-28  1:50       ` Steven Rostedt
2011-05-30  6:23         ` KOSAKI Motohiro
2011-05-30 23:54           ` Vaibhav Nagarnaik
2011-05-30 23:46         ` Vaibhav Nagarnaik
2011-06-07 23:07           ` Steven Rostedt
2011-06-07 23:30             ` Vaibhav Nagarnaik
2011-06-07 23:41   ` [PATCH] trace: Set __GFP_NORETRY flag " Vaibhav Nagarnaik
2011-06-07 23:47     ` Frederic Weisbecker
2011-06-08  0:01     ` [PATCH v2] " Vaibhav Nagarnaik
2011-06-08  2:30       ` David Rientjes
2011-06-09 11:37       ` KOSAKI Motohiro
2011-06-09 12:14         ` Steven Rostedt
2011-06-09 18:41           ` Vaibhav Nagarnaik
2011-06-09 19:42           ` David Rientjes
2011-06-09 19:52             ` Steven Rostedt
2011-07-05 12:54       ` [tip:perf/core] ring-buffer: " tip-bot for Vaibhav Nagarnaik

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=1306500502.3857.26.camel@gandalf.stny.rr.com \
    --to=rostedt@goodmis.org \
    --cc=akpm@linux-foundation.org \
    --cc=dhsharp@google.com \
    --cc=fweisbec@gmail.com \
    --cc=linux-kernel@vger.kernel.org \
    --cc=mel@csn.ul.ie \
    --cc=mingo@redhat.com \
    --cc=mrubin@google.com \
    --cc=peterz@infradead.org \
    --cc=riel@redhat.com \
    --cc=rientjes@google.com \
    --cc=vnagarnaik@google.com \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.