From: Andrea Arcangeli <aarcange@redhat.com>
To: Mel Gorman <mel@csn.ul.ie>
Cc: raz ben yehuda <raziebe@gmail.com>,
lkml <linux-kernel@vger.kernel.org>,
riel@redhat.com, kosaki.motohiro@jp.fujitsu.com,
akpm@linux-foundation.org
Subject: Re: 2.6.38 page_test regression
Date: Fri, 15 Apr 2011 01:32:26 +0200 [thread overview]
Message-ID: <20110414233226.GI15707@random.random> (raw)
In-Reply-To: <20110414215327.GI11871@csn.ul.ie>
On Thu, Apr 14, 2011 at 10:53:27PM +0100, Mel Gorman wrote:
> On Thu, Apr 14, 2011 at 11:07:23PM +0300, raz ben yehuda wrote:
> > bah. Mel is correct. I did mean page_test ( in my defense it is in the
> > msg ).
> > Here some more information:
> > 1. I manage to lower the regression to 2 sha1's:
> > 32dba98e085f8b2b4345887df9abf5e0e93bfc12 to
> > 71e3aac0724ffe8918992d76acfe3aad7d8724a5.
> > though I had to remark wait_split_huge_page for the sake of
> > compilation. up to 32dba98e085f8b2b4345887df9abf5e0e93bfc12 there is no
> > regression.
> >
> > 2. I booted 2.6.37-rc5 you gave me. same regression is there.
>
> Extremely long shot - try this patch.
>
> diff --git a/mm/memory.c b/mm/memory.c
> index c50a195..a39baaf 100644
> --- a/mm/memory.c
> +++ b/mm/memory.c
> @@ -3317,7 +3317,7 @@ int handle_mm_fault(struct mm_struct *mm, struct vm_area_struct *vma,
> * run pte_offset_map on the pmd, if an huge pmd could
> * materialize from under us from a different thread.
> */
> - if (unlikely(__pte_alloc(mm, vma, pmd, address)))
> + if (unlikely(!pmd_present(*(pmd))) && __pte_alloc(mm, vma, pmd, address))
> return VM_FAULT_OOM;
> /* if an huge pmd materialized from under us just retry later */
> if (unlikely(pmd_trans_huge(*pmd)))
This was fast...
This definitely fixes a regression: the previous pte_alloc_map would
have checked pte_none (pte_none not safe anymore but pte_present is
safe) before taking the PT lock in __pte_alloc_map.
It's also obviously safe, the only chance a huge pmd can materialize
from under us is it wasn't present and it's correct conversion of the
old pte_alloc_one exactly. So we need it.
I'm quite optimistic it'll solve the problem.
Thanks a lot,
Andrea
next prev parent reply other threads:[~2011-04-14 23:33 UTC|newest]
Thread overview: 13+ messages / expand[flat|nested] mbox.gz Atom feed top
[not found] <1302692638.15225.14.camel@raz.scalemp.com>
[not found] ` <20110413125146.GR29444@random.random>
2011-04-13 13:48 ` 2.6.38 sbrk regression raz ben yehuda
2011-04-13 14:06 ` raz ben yehuda
2011-04-13 17:21 ` Andrea Arcangeli
2011-04-14 8:13 ` raz ben yehuda
2011-04-14 11:49 ` raz ben yehuda
2011-04-14 15:09 ` Andrea Arcangeli
2011-04-14 20:07 ` 2.6.38 page_test regression raz ben yehuda
2011-04-14 21:53 ` Mel Gorman
2011-04-14 23:16 ` Mel Gorman
2011-04-14 23:38 ` Andrea Arcangeli
2011-04-14 23:32 ` Andrea Arcangeli [this message]
2011-04-14 23:44 ` Andrea Arcangeli
2011-04-15 9:11 ` Mel Gorman
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=20110414233226.GI15707@random.random \
--to=aarcange@redhat.com \
--cc=akpm@linux-foundation.org \
--cc=kosaki.motohiro@jp.fujitsu.com \
--cc=linux-kernel@vger.kernel.org \
--cc=mel@csn.ul.ie \
--cc=raziebe@gmail.com \
--cc=riel@redhat.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.