From: KAMEZAWA Hiroyuki <kamezawa.hiroyu@jp.fujitsu.com>
To: Konstantin Khlebnikov <khlebnikov@openvz.org>
Cc: Andrew Morton <akpm@linux-foundation.org>,
Hugh Dickins <hughd@google.com>,
linux-mm@kvack.org, linux-kernel@vger.kernel.org
Subject: Re: [PATCH 3/3] mm: adjust rss counters for migration entiries
Date: Wed, 11 Jan 2012 14:41:25 +0900 [thread overview]
Message-ID: <20120111144125.0c61f35f.kamezawa.hiroyu@jp.fujitsu.com> (raw)
In-Reply-To: <20120106173856.11700.98858.stgit@zurg>
On Fri, 06 Jan 2012 21:38:56 +0400
Konstantin Khlebnikov <khlebnikov@openvz.org> wrote:
> Memory migration fill pte with migration entry and it didn't update rss counters.
> Then it replace migration entry with new page (or old one if migration was failed).
> But between this two passes this pte can be unmaped, or task can fork child and
> it will get copy of this migration entry. Nobody account this into rss counters.
>
> This patch properly adjust rss counters for migration entries in zap_pte_range()
> and copy_one_pte(). Thus we avoid extra atomic operations on migration fast-path.
>
> Signed-off-by: Konstantin Khlebnikov <khlebnikov@openvz.org>
It's better to show wheter this is a bug-fix or not in changelog.
IIUC, the bug-fix is the 1st harf of this patch + patch [2/3].
Your new bug-check code is in patch[1/3] and 2nd half of this patch.
I think it's better to do bug-fix 1st and add bug-check later.
So, could you reorder patches to bug-fix and new-bug-check ?
To the logic itself,
Acked-by: KAMEZAWA Hiroyuki <kamezawa.hiroyu@jp.fujitsu.com>
Please CC when you repost.
> ---
> mm/memory.c | 37 ++++++++++++++++++++++++++++---------
> 1 files changed, 28 insertions(+), 9 deletions(-)
>
> diff --git a/mm/memory.c b/mm/memory.c
> index 829d437..2f96ffc 100644
> --- a/mm/memory.c
> +++ b/mm/memory.c
> @@ -878,15 +878,24 @@ copy_one_pte(struct mm_struct *dst_mm, struct mm_struct *src_mm,
> }
> if (likely(!non_swap_entry(entry)))
> rss[MM_SWAPENTS]++;
> - else if (is_write_migration_entry(entry) &&
> - is_cow_mapping(vm_flags)) {
> - /*
> - * COW mappings require pages in both parent
> - * and child to be set to read.
> - */
> - make_migration_entry_read(&entry);
> - pte = swp_entry_to_pte(entry);
> - set_pte_at(src_mm, addr, src_pte, pte);
> + else if (is_migration_entry(entry)) {
> + page = migration_entry_to_page(entry);
> +
> + if (PageAnon(page))
> + rss[MM_ANONPAGES]++;
> + else
> + rss[MM_FILEPAGES]++;
> +
> + if (is_write_migration_entry(entry) &&
> + is_cow_mapping(vm_flags)) {
> + /*
> + * COW mappings require pages in both
> + * parent and child to be set to read.
> + */
> + make_migration_entry_read(&entry);
> + pte = swp_entry_to_pte(entry);
> + set_pte_at(src_mm, addr, src_pte, pte);
> + }
> }
> }
> goto out_set_pte;
> @@ -1191,6 +1200,16 @@ again:
>
> if (!non_swap_entry(entry))
> rss[MM_SWAPENTS]--;
> + else if (is_migration_entry(entry)) {
> + struct page *page;
> +
> + page = migration_entry_to_page(entry);
> +
> + if (PageAnon(page))
> + rss[MM_ANONPAGES]--;
> + else
> + rss[MM_FILEPAGES]--;
> + }
> if (unlikely(!free_swap_and_cache(entry)))
> print_bad_pte(vma, addr, ptent, NULL);
> }
>
> --
> 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>
>
--
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>
next prev parent reply other threads:[~2012-01-11 5:42 UTC|newest]
Thread overview: 12+ messages / expand[flat|nested] mbox.gz Atom feed top
2012-01-06 17:38 [PATCH 1/3] mm: add rss counters consistency check Konstantin Khlebnikov
2012-01-06 17:38 ` [PATCH 2/3] mm: postpone migrated page mapping reset Konstantin Khlebnikov
2012-01-06 17:38 ` [PATCH 3/3] mm: adjust rss counters for migration entiries Konstantin Khlebnikov
2012-01-06 17:45 ` Konstantin Khlebnikov
2012-01-11 5:41 ` KAMEZAWA Hiroyuki [this message]
2012-01-11 8:23 ` Konstantin Khlebnikov
2012-01-11 8:41 ` KAMEZAWA Hiroyuki
2012-01-18 23:21 ` Andrew Morton
2012-01-24 1:42 ` Hugh Dickins
2012-01-24 7:08 ` Konstantin Khlebnikov
2012-01-25 23:01 ` Hugh Dickins
2012-01-26 0:20 ` Andrew Morton
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=20120111144125.0c61f35f.kamezawa.hiroyu@jp.fujitsu.com \
--to=kamezawa.hiroyu@jp.fujitsu.com \
--cc=akpm@linux-foundation.org \
--cc=hughd@google.com \
--cc=khlebnikov@openvz.org \
--cc=linux-kernel@vger.kernel.org \
--cc=linux-mm@kvack.org \
/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