From: Steven Rostedt <rostedt@goodmis.org>
To: Vaibhav Nagarnaik <vnagarnaik@google.com>
Cc: David Rientjes <rientjes@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>,
David Rientjes <rientjes@google.com>,
Andrew Morton <akpm@linux-foundation.org>
Subject: Re: [PATCH] trace: Set oom_score_adj to maximum for ring buffer allocating process
Date: Thu, 26 May 2011 19:38:38 -0400 [thread overview]
Message-ID: <1306453118.3857.20.camel@gandalf.stny.rr.com> (raw)
In-Reply-To: <BANLkTimK44fQeJJFkNzT6rBuuz=FDJ8K0w@mail.gmail.com>
[ I added to the Cc people that understand MM more than I do ]
On Thu, 2011-05-26 at 15:28 -0700, Vaibhav Nagarnaik wrote:
> On Thu, May 26, 2011 at 2:00 PM, Steven Rostedt <rostedt@goodmis.org> wrote:
> > But the issue is, if the process increasing the size of the ring buffer
> > causes the oom, it will not handle the SIGKILL until after the ring
> > buffer has finished allocating. Now, if it failed to allocate, then we
> > are fine, but if it does not fail, but now we start killing processes,
> > then we may be in trouble.
> >
>
> If I understand correctly, if a fatal signal is pending on a process
> while allocation is called, the allocation fails. Then we handle the
> freeing up memory correctly, though the echo gets killed once we return
> from the allocation process.
>
> > I like the NORETRY better. But then, would this mean that if we have a
> > lot of cached filesystems, we wont be able to extend the ring buffer?
>
> It doesn't seem so. I talked with the mm- team and I understand that
> even if NORETRY is set, cached pages will be flushed out and allocation
> will succeed. But it still does not address the situation when the ring
> buffer allocation is going on and another process invokes OOM. If the
> oom_score_adj is not set to maximum, then random processes will still be
> killed before ring buffer allocation fails.
>
> >
> > I'm thinking the oom killer used here got lucky. As it killed this task,
> > we were still out of memory, and the ring buffer failed to get the
> > memory it needed and freed up everything that it previously allocated,
> > and returned. Then the process calling this function would be killed by
> > the OOM. Ideally, the process shouldn't be killed and the ring buffer
> > just returned -ENOMEM to the user.
>
> What do you think of this?
>
> test_set_oom_score_adj(MAXIMUM);
> allocate_ring_buffer(GFP_KERNEL | __GFP_NORETRY);
> test_set_oom_score_adj(original);
>
> This makes sure that the allocation fails much sooner and more
> gracefully. If oom-killer is invoked in any circumstance, then the ring
> buffer allocation process gives up memory and is killed.
I don't know. But as I never seen this function before, I went and took
a look. This test_set_oom_score_adj() is new, and coincidentally written
by another google developer ;)
As there's not really a precedence to this, if those that I added to the
Cc, give their acks, I'm happy to apply this for the next merge window.
-- Steve
next prev parent reply other threads:[~2011-05-26 23:38 UTC|newest]
Thread overview: 30+ messages / expand[flat|nested] mbox.gz Atom feed top
2011-05-26 19:52 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 [this message]
2011-05-27 9:43 ` David Rientjes
2011-05-27 12:48 ` Steven Rostedt
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=1306453118.3857.20.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 a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox
all inboxes | Powered by JetHome®