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
Subject: Re: [PATCH] trace: Set oom_score_adj to maximum for ring buffer allocating process
Date: Thu, 26 May 2011 17:00:12 -0400 [thread overview]
Message-ID: <1306443612.3857.15.camel@gandalf.stny.rr.com> (raw)
In-Reply-To: <alpine.DEB.2.00.1105261328200.29812@chino.kir.corp.google.com>
On Thu, 2011-05-26 at 13:33 -0700, David Rientjes wrote:
> On Thu, 26 May 2011, Vaibhav Nagarnaik wrote:
>
>
> Not sure that's true, this is allocating with kzalloc_node(GFP_KERNEL),
> correct? If current is oom killed, it will have access to all memory
> reserves which will increase the liklihood that the allocation will
> succeed before handling the SIGKILL.
Actually it uses get_free_page()
>
> > This API is now being used in other parts of kernel too, where it knows
> > that the allocation could cause OOM.
> >
>
> What's wrong with using __GFP_NORETRY to avoid oom killing entirely and
I have no problem with NORETRY.
> then failing the ring buffer memory allocation? Seems like a better
> solution than relying on the oom killer, since there may be other threads
> with a max oom_score_adj as well that would appear in the tasklist first
> and get killed unnecessarily. Is there some ring buffer code that can't
> handle failing allocations appropriately?
The ring buffer code can handle failed allocations just fine, and will
free up the pages it allocated before a full success. It allocates the
pages one at a time and adds it to a list. After all pages it wants to
allocate has successfully been allocated, it then applies them to the
ring buffer. If it fails an allocation, all pages are freed that were
not added to the ring buffer yet.
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.
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?
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.
-- Steve
next prev parent reply other threads:[~2011-05-26 21:00 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 [this message]
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
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=1306443612.3857.15.camel@gandalf.stny.rr.com \
--to=rostedt@goodmis.org \
--cc=dhsharp@google.com \
--cc=fweisbec@gmail.com \
--cc=linux-kernel@vger.kernel.org \
--cc=mingo@redhat.com \
--cc=mrubin@google.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®