From: Minchan Kim <minchan@kernel.org>
To: Andrew Morton <akpm@linux-foundation.org>,
"Kirill A. Shutemov" <kirill@shutemov.name>
Cc: linux-mm@kvack.org, linux-kernel@vger.kernel.org,
Hugh Dickins <hughd@google.com>, Rik van Riel <riel@redhat.com>,
Mel Gorman <mgorman@suse.de>, Michal Hocko <mhocko@suse.cz>,
Johannes Weiner <hannes@cmpxchg.org>,
Vlastimil Babka <vbabka@suse.cz>
Subject: Re: [PATCH 0/5] MADV_FREE refactoring and fix KSM page
Date: Tue, 20 Oct 2015 16:27:56 +0900 [thread overview]
Message-ID: <20151020072756.GE2941@bbox> (raw)
In-Reply-To: <20151020072109.GD2941@bbox>
On Tue, Oct 20, 2015 at 04:21:09PM +0900, Minchan Kim wrote:
> On Mon, Oct 19, 2015 at 07:01:50PM +0900, Minchan Kim wrote:
> > On Mon, Oct 19, 2015 at 03:31:42PM +0900, Minchan Kim wrote:
> > > Hello, it's too late since I sent previos patch.
> > > https://lkml.org/lkml/2015/6/3/37
> > >
> > > This patch is alomost new compared to previos approach.
> > > I think this is more simple, clear and easy to review.
> > >
> > > One thing I should notice is that I have tested this patch
> > > and couldn't find any critical problem so I rebased patchset
> > > onto recent mmotm(ie, mmotm-2015-10-15-15-20) to send formal
> > > patchset. Unfortunately, I start to see sudden discarding of
> > > the page we shouldn't do. IOW, application's valid anonymous page
> > > was disappeared suddenly.
> > >
> > > When I look through THP changes, I think we could lose
> > > dirty bit of pte between freeze_page and unfreeze_page
> > > when we mark it as migration entry and restore it.
> > > So, I added below simple code without enough considering
> > > and cannot see the problem any more.
> > > I hope it's good hint to find right fix this problem.
> > >
> > > diff --git a/mm/huge_memory.c b/mm/huge_memory.c
> > > index d5ea516ffb54..e881c04f5950 100644
> > > --- a/mm/huge_memory.c
> > > +++ b/mm/huge_memory.c
> > > @@ -3138,6 +3138,9 @@ static void unfreeze_page_vma(struct vm_area_struct *vma, struct page *page,
> > > if (is_write_migration_entry(swp_entry))
> > > entry = maybe_mkwrite(entry, vma);
> > >
> > > + if (PageDirty(page))
> > > + SetPageDirty(page);
> >
> > The condition of PageDirty was typo. I didn't add the condition.
> > Just added.
> >
> > SetPageDirty(page);
>
> I reviewed THP refcount redesign patch and It seems below patch fixes
> MADV_FREE problem. It works well for hours.
>
> From 104a0940b4c0f97e61de9fee0fd602926ff28312 Mon Sep 17 00:00:00 2001
> From: Minchan Kim <minchan@kernel.org>
> Date: Tue, 20 Oct 2015 16:00:52 +0900
> Subject: [PATCH] mm: mark head page dirty in split_huge_page
>
> In thp split in old THP refcount, we mappped all of pages
> (ie, head + tails) to pte_mkdirty and mark PG_flags to every
> tail pages.
>
> But with THP refcount redesign, we can lose dirty bit in page table
> and PG_dirty for head page if we want to free the THP page using
typo.
freeze
--
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/ .
Don't email: <a href=mailto:"dont@kvack.org"> email@kvack.org </a>
WARNING: multiple messages have this Message-ID (diff)
From: Minchan Kim <minchan@kernel.org>
To: Andrew Morton <akpm@linux-foundation.org>,
"Kirill A. Shutemov" <kirill@shutemov.name>
Cc: linux-mm@kvack.org, linux-kernel@vger.kernel.org,
Hugh Dickins <hughd@google.com>, Rik van Riel <riel@redhat.com>,
Mel Gorman <mgorman@suse.de>, Michal Hocko <mhocko@suse.cz>,
Johannes Weiner <hannes@cmpxchg.org>,
Vlastimil Babka <vbabka@suse.cz>
Subject: Re: [PATCH 0/5] MADV_FREE refactoring and fix KSM page
Date: Tue, 20 Oct 2015 16:27:56 +0900 [thread overview]
Message-ID: <20151020072756.GE2941@bbox> (raw)
In-Reply-To: <20151020072109.GD2941@bbox>
On Tue, Oct 20, 2015 at 04:21:09PM +0900, Minchan Kim wrote:
> On Mon, Oct 19, 2015 at 07:01:50PM +0900, Minchan Kim wrote:
> > On Mon, Oct 19, 2015 at 03:31:42PM +0900, Minchan Kim wrote:
> > > Hello, it's too late since I sent previos patch.
> > > https://lkml.org/lkml/2015/6/3/37
> > >
> > > This patch is alomost new compared to previos approach.
> > > I think this is more simple, clear and easy to review.
> > >
> > > One thing I should notice is that I have tested this patch
> > > and couldn't find any critical problem so I rebased patchset
> > > onto recent mmotm(ie, mmotm-2015-10-15-15-20) to send formal
> > > patchset. Unfortunately, I start to see sudden discarding of
> > > the page we shouldn't do. IOW, application's valid anonymous page
> > > was disappeared suddenly.
> > >
> > > When I look through THP changes, I think we could lose
> > > dirty bit of pte between freeze_page and unfreeze_page
> > > when we mark it as migration entry and restore it.
> > > So, I added below simple code without enough considering
> > > and cannot see the problem any more.
> > > I hope it's good hint to find right fix this problem.
> > >
> > > diff --git a/mm/huge_memory.c b/mm/huge_memory.c
> > > index d5ea516ffb54..e881c04f5950 100644
> > > --- a/mm/huge_memory.c
> > > +++ b/mm/huge_memory.c
> > > @@ -3138,6 +3138,9 @@ static void unfreeze_page_vma(struct vm_area_struct *vma, struct page *page,
> > > if (is_write_migration_entry(swp_entry))
> > > entry = maybe_mkwrite(entry, vma);
> > >
> > > + if (PageDirty(page))
> > > + SetPageDirty(page);
> >
> > The condition of PageDirty was typo. I didn't add the condition.
> > Just added.
> >
> > SetPageDirty(page);
>
> I reviewed THP refcount redesign patch and It seems below patch fixes
> MADV_FREE problem. It works well for hours.
>
> From 104a0940b4c0f97e61de9fee0fd602926ff28312 Mon Sep 17 00:00:00 2001
> From: Minchan Kim <minchan@kernel.org>
> Date: Tue, 20 Oct 2015 16:00:52 +0900
> Subject: [PATCH] mm: mark head page dirty in split_huge_page
>
> In thp split in old THP refcount, we mappped all of pages
> (ie, head + tails) to pte_mkdirty and mark PG_flags to every
> tail pages.
>
> But with THP refcount redesign, we can lose dirty bit in page table
> and PG_dirty for head page if we want to free the THP page using
typo.
freeze
next prev parent reply other threads:[~2015-10-20 7:28 UTC|newest]
Thread overview: 52+ messages / expand[flat|nested] mbox.gz Atom feed top
2015-10-19 6:31 [PATCH 0/5] MADV_FREE refactoring and fix KSM page Minchan Kim
2015-10-19 6:31 ` Minchan Kim
2015-10-19 6:31 ` [PATCH 1/5] mm: MADV_FREE trivial clean up Minchan Kim
2015-10-19 6:31 ` Minchan Kim
2015-10-19 6:31 ` [PATCH 2/5] mm: skip huge zero page in MADV_FREE Minchan Kim
2015-10-19 6:31 ` Minchan Kim
2015-10-19 6:31 ` [PATCH 3/5] mm: clear PG_dirty to mark page freeable Minchan Kim
2015-10-19 6:31 ` Minchan Kim
2015-10-27 1:28 ` Hugh Dickins
2015-10-27 1:28 ` Hugh Dickins
2015-10-27 6:50 ` Minchan Kim
2015-10-27 6:50 ` Minchan Kim
2015-10-19 6:31 ` [PATCH 4/5] mm: simplify reclaim path for MADV_FREE Minchan Kim
2015-10-19 6:31 ` Minchan Kim
2015-10-27 2:09 ` Hugh Dickins
2015-10-27 2:09 ` Hugh Dickins
2015-10-27 3:44 ` yalin wang
2015-10-27 3:44 ` yalin wang
2015-10-27 7:09 ` Minchan Kim
2015-10-27 7:09 ` Minchan Kim
2015-10-27 7:39 ` yalin wang
2015-10-27 7:39 ` yalin wang
2015-10-27 8:10 ` Minchan Kim
2015-10-27 8:10 ` Minchan Kim
2015-10-27 8:52 ` yalin wang
2015-10-27 8:52 ` yalin wang
2015-10-28 4:03 ` yalin wang
2015-10-28 4:03 ` yalin wang
2015-10-27 6:54 ` Minchan Kim
2015-10-27 6:54 ` Minchan Kim
2015-10-19 6:31 ` [PATCH 5/5] mm: mark stable page dirty in KSM Minchan Kim
2015-10-19 6:31 ` Minchan Kim
2015-10-27 2:23 ` Hugh Dickins
2015-10-27 2:23 ` Hugh Dickins
2015-10-27 6:58 ` Minchan Kim
2015-10-27 6:58 ` Minchan Kim
2015-10-19 10:01 ` [PATCH 0/5] MADV_FREE refactoring and fix KSM page Minchan Kim
2015-10-19 10:01 ` Minchan Kim
2015-10-20 1:38 ` Minchan Kim
2015-10-20 1:38 ` Minchan Kim
2015-10-20 7:21 ` Minchan Kim
2015-10-20 7:21 ` Minchan Kim
2015-10-20 7:27 ` Minchan Kim [this message]
2015-10-20 7:27 ` Minchan Kim
2015-10-20 21:36 ` Andrew Morton
2015-10-20 21:36 ` Andrew Morton
2015-10-20 22:43 ` Kirill A. Shutemov
2015-10-20 22:43 ` Kirill A. Shutemov
2015-10-21 5:11 ` Minchan Kim
2015-10-21 5:11 ` Minchan Kim
2015-10-21 7:50 ` Kirill A. Shutemov
2015-10-21 7:50 ` Kirill A. Shutemov
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=20151020072756.GE2941@bbox \
--to=minchan@kernel.org \
--cc=akpm@linux-foundation.org \
--cc=hannes@cmpxchg.org \
--cc=hughd@google.com \
--cc=kirill@shutemov.name \
--cc=linux-kernel@vger.kernel.org \
--cc=linux-mm@kvack.org \
--cc=mgorman@suse.de \
--cc=mhocko@suse.cz \
--cc=riel@redhat.com \
--cc=vbabka@suse.cz \
/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.