From: Johannes Weiner <jweiner@redhat.com>
To: David Rientjes <rientjes@google.com>
Cc: Andrew Morton <akpm@linux-foundation.org>,
KAMEZAWA Hiroyuki <kamezawa.hiroyu@jp.fujitsu.com>,
Andrea Arcangeli <aarcange@redhat.com>,
linux-mm@kvack.org
Subject: Re: [patch v2] thp, memcg: split hugepage for memcg oom on cow
Date: Fri, 27 Apr 2012 02:15:33 +0200 [thread overview]
Message-ID: <20120427001533.GD1791@redhat.com> (raw)
In-Reply-To: <alpine.DEB.2.00.1204261402020.28376@chino.kir.corp.google.com>
On Thu, Apr 26, 2012 at 02:05:11PM -0700, David Rientjes wrote:
> On Thu, 26 Apr 2012, Johannes Weiner wrote:
>
> > > I agree it's more robust if do_huge_pmd_wp_page() were modified later and
> > > mistakenly returned VM_FAULT_OOM without the page being split, but
> > > __split_huge_page_pmd() has the drawback of also requiring to retake
> > > mm->page_table_lock to test whether orig_pmd is still legitimate so it
> > > will be slower. Do you feel strongly about the way it's currently written
> > > which will be faster at runtime?
> >
> > If you can't accomodate for a hugepage, this code runs 511 times in
> > the worst case before you also can't fit a regular page anymore. And
> > compare it to the cost of the splitting itself and the subsequent 4k
> > COW break faults...
> >
> > I don't think it's a path worth optimizing for at all, especially if
> > it includes sprinkling undocumented split_huge_pages around, and the
> > fix could be as self-contained as something like this...
> >
>
> I disagree that we should be unnecessarily taking mm->page_table_lock
> which is already strongly contended if all cpus are pagefaulting on the
> same process (and I'll be posting a patch to address specifically those
> slowdowns since thp is _much_ slower on page fault tests) when we can
> already do it in do_huge_pmd_wp_page(). If you'd like to add a comment
> for the split_huge_page() in that function if it's not clear enough from
> my VM_FAULT_OOM comment in handle_mm_fault(), then feel free to add it but
> I thought it was rather trivial to understand.
Come on, it's not "trivial to understand" why the page in the parent
is split because the child failed to allocate a replacement, shortly
before returning "out of memory". You have to look at a different
file to make sense of it. Such cross-dependencies between functions
simply suck and made problems in the past. The least you could do is
properly document them in _both_ places if you insist on adding them
in the first place.
Btw, is restarting the full page table walk even necessary? You
already have the pmd, know/hope it's been split, and hold the mmap_sem
for reading, so it can't go back to being huge or none. You should be
able to fall through to the pte lookup and handle_pte_fault(), no?
--
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/ .
Fight unfair telecom internet charges in Canada: sign http://stopthemeter.ca/
Don't email: <a href=mailto:"dont@kvack.org"> email@kvack.org </a>
prev parent reply other threads:[~2012-04-27 0:15 UTC|newest]
Thread overview: 14+ messages / expand[flat|nested] mbox.gz Atom feed top
2012-04-04 1:56 [patch] thp, memcg: split hugepage for memcg oom on cow David Rientjes
2012-04-09 9:10 ` KAMEZAWA Hiroyuki
2012-04-10 0:23 ` David Rientjes
2012-04-10 0:43 ` KAMEZAWA Hiroyuki
2012-04-10 0:49 ` KAMEZAWA Hiroyuki
2012-04-10 5:41 ` David Rientjes
2012-04-10 5:42 ` [patch v2] " David Rientjes
2012-04-10 5:59 ` KAMEZAWA Hiroyuki
2012-04-11 14:20 ` Johannes Weiner
2012-04-23 23:15 ` David Rientjes
2012-04-25 21:01 ` David Rientjes
2012-04-26 9:06 ` Johannes Weiner
2012-04-26 21:05 ` David Rientjes
2012-04-27 0:15 ` Johannes Weiner [this message]
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=20120427001533.GD1791@redhat.com \
--to=jweiner@redhat.com \
--cc=aarcange@redhat.com \
--cc=akpm@linux-foundation.org \
--cc=kamezawa.hiroyu@jp.fujitsu.com \
--cc=linux-mm@kvack.org \
--cc=rientjes@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.