From: Zi Yan <zi.yan@cs.rutgers.edu>
To: kirill.shutemov@linux.intel.com,
Andrea Arcangeli <aarcange@redhat.com>,
Michal Hocko <mhocko@kernel.org>
Cc: linux-kernel@vger.kernel.org, linux-mm@kvack.org,
minchan@kernel.org, vbabka@suse.cz, mgorman@techsingularity.net,
n-horiguchi@ah.jp.nec.com, khandual@linux.vnet.ibm.com,
akpm@linux-foundation.org
Subject: Re: [PATCH v3 00/14] mm: page migration enhancement for thp
Date: Thu, 23 Feb 2017 10:12:09 -0600 [thread overview]
Message-ID: <58AF09D9.3050401@cs.rutgers.edu> (raw)
In-Reply-To: <20170205161252.85004-1-zi.yan@sent.com>
[-- Attachment #1: Type: text/plain, Size: 4876 bytes --]
Ping.
Just want to get comments on THP migration part (Patch 4-14). If they
look OK, I can rebase THP migration part on mmotm-2017-02-22-16-28 and
send them out for merging.
Thanks.
Zi Yan wrote:
> From: Zi Yan <ziy@nvidia.com>
>
> Hi all,
>
> The patches are rebased on mmotm-2017-02-01-15-35 with feedbacks from
> Naoya Horiguchi's v2 patches.
>
> I fix a bug in zap_pmd_range() and include the fixes in Patches 1-3.
> The racy check in zap_pmd_range() can miss pmd_protnone and pmd_migration_entry,
> which leads to PTE page table not freed.
>
> In Patch 4, I move _PAGE_SWP_SOFT_DIRTY to bit 1. Because bit 6 (used in v2)
> can be set by some CPUs by mistake and the new swap entry format does not use
> bit 1-4.
>
> I also adjust two core migration functions, set_pmd_migration_entry() and
> remove_migration_pmd(), to use Kirill A. Shutemov's page_vma_mapped_walk()
> function. Patch 8 needs Kirill's comments, since I also add changes
> to his page_vma_mapped_walk() function with pmd_migration_entry handling.
>
> In Patch 8, I replace pmdp_huge_get_and_clear() with pmdp_huge_clear_flush()
> in set_pmd_migration_entry() to avoid data corruption after page migration.
>
> In Patch 9, I include is_pmd_migration_entry() in pmd_none_or_trans_huge_or_clear_bad().
> Otherwise, a pmd_migration_entry is treated as pmd_bad and cleared, which
> leads to deposited PTE page table not freed.
>
> I personally use this patchset with my customized kernel to test frequent
> page migrations by replacing page reclaim with page migration.
> The bugs fixed in Patches 1-3 and 8 was discovered while I am testing my kernel.
> I did a 16-hour stress test that has ~7 billion total page migrations.
> No error or data corruption was found.
>
>
> General description
> ===========================================
>
> This patchset enhances page migration functionality to handle thp migration
> for various page migration's callers:
> - mbind(2)
> - move_pages(2)
> - migrate_pages(2)
> - cgroup/cpuset migration
> - memory hotremove
> - soft offline
>
> The main benefit is that we can avoid unnecessary thp splits, which helps us
> avoid performance decrease when your applications handles NUMA optimization on
> their own.
>
> The implementation is similar to that of normal page migration, the key point
> is that we modify a pmd to a pmd migration entry in swap-entry like format.
>
>
> Any comments or advices are welcomed.
>
> Best Regards,
> Yan Zi
>
> Naoya Horiguchi (11):
> mm: x86: move _PAGE_SWP_SOFT_DIRTY from bit 7 to bit 1
> mm: mempolicy: add queue_pages_node_check()
> mm: thp: introduce separate TTU flag for thp freezing
> mm: thp: introduce CONFIG_ARCH_ENABLE_THP_MIGRATION
> mm: thp: enable thp migration in generic path
> mm: thp: check pmd migration entry in common path
> mm: soft-dirty: keep soft-dirty bits over thp migration
> mm: hwpoison: soft offline supports thp migration
> mm: mempolicy: mbind and migrate_pages support thp migration
> mm: migrate: move_pages() supports thp migration
> mm: memory_hotplug: memory hotremove supports thp migration
>
> Zi Yan (3):
> mm: thp: make __split_huge_pmd_locked visible.
> mm: thp: create new __zap_huge_pmd_locked function.
> mm: use pmd lock instead of racy checks in zap_pmd_range()
>
> arch/x86/Kconfig | 4 +
> arch/x86/include/asm/pgtable.h | 17 ++
> arch/x86/include/asm/pgtable_64.h | 2 +
> arch/x86/include/asm/pgtable_types.h | 10 +-
> arch/x86/mm/gup.c | 4 +-
> fs/proc/task_mmu.c | 37 +++--
> include/asm-generic/pgtable.h | 105 ++++--------
> include/linux/huge_mm.h | 36 ++++-
> include/linux/rmap.h | 1 +
> include/linux/swapops.h | 146 ++++++++++++++++-
> mm/Kconfig | 3 +
> mm/gup.c | 20 ++-
> mm/huge_memory.c | 302 +++++++++++++++++++++++++++++------
> mm/madvise.c | 2 +
> mm/memcontrol.c | 2 +
> mm/memory-failure.c | 31 ++--
> mm/memory.c | 33 ++--
> mm/memory_hotplug.c | 17 +-
> mm/mempolicy.c | 124 ++++++++++----
> mm/migrate.c | 66 ++++++--
> mm/mprotect.c | 6 +-
> mm/mremap.c | 2 +-
> mm/page_vma_mapped.c | 13 +-
> mm/pagewalk.c | 2 +
> mm/pgtable-generic.c | 3 +-
> mm/rmap.c | 21 ++-
> 26 files changed, 770 insertions(+), 239 deletions(-)
>
--
Best Regards,
Yan Zi
[-- Attachment #2: OpenPGP digital signature --]
[-- Type: application/pgp-signature, Size: 537 bytes --]
WARNING: multiple messages have this Message-ID (diff)
From: Zi Yan <zi.yan@cs.rutgers.edu>
To: <kirill.shutemov@linux.intel.com>,
Andrea Arcangeli <aarcange@redhat.com>,
Michal Hocko <mhocko@kernel.org>
Cc: <linux-kernel@vger.kernel.org>, <linux-mm@kvack.org>,
<minchan@kernel.org>, <vbabka@suse.cz>,
<mgorman@techsingularity.net>, <n-horiguchi@ah.jp.nec.com>,
<khandual@linux.vnet.ibm.com>, <akpm@linux-foundation.org>
Subject: Re: [PATCH v3 00/14] mm: page migration enhancement for thp
Date: Thu, 23 Feb 2017 10:12:09 -0600 [thread overview]
Message-ID: <58AF09D9.3050401@cs.rutgers.edu> (raw)
In-Reply-To: <20170205161252.85004-1-zi.yan@sent.com>
[-- Attachment #1: Type: text/plain, Size: 4876 bytes --]
Ping.
Just want to get comments on THP migration part (Patch 4-14). If they
look OK, I can rebase THP migration part on mmotm-2017-02-22-16-28 and
send them out for merging.
Thanks.
Zi Yan wrote:
> From: Zi Yan <ziy@nvidia.com>
>
> Hi all,
>
> The patches are rebased on mmotm-2017-02-01-15-35 with feedbacks from
> Naoya Horiguchi's v2 patches.
>
> I fix a bug in zap_pmd_range() and include the fixes in Patches 1-3.
> The racy check in zap_pmd_range() can miss pmd_protnone and pmd_migration_entry,
> which leads to PTE page table not freed.
>
> In Patch 4, I move _PAGE_SWP_SOFT_DIRTY to bit 1. Because bit 6 (used in v2)
> can be set by some CPUs by mistake and the new swap entry format does not use
> bit 1-4.
>
> I also adjust two core migration functions, set_pmd_migration_entry() and
> remove_migration_pmd(), to use Kirill A. Shutemov's page_vma_mapped_walk()
> function. Patch 8 needs Kirill's comments, since I also add changes
> to his page_vma_mapped_walk() function with pmd_migration_entry handling.
>
> In Patch 8, I replace pmdp_huge_get_and_clear() with pmdp_huge_clear_flush()
> in set_pmd_migration_entry() to avoid data corruption after page migration.
>
> In Patch 9, I include is_pmd_migration_entry() in pmd_none_or_trans_huge_or_clear_bad().
> Otherwise, a pmd_migration_entry is treated as pmd_bad and cleared, which
> leads to deposited PTE page table not freed.
>
> I personally use this patchset with my customized kernel to test frequent
> page migrations by replacing page reclaim with page migration.
> The bugs fixed in Patches 1-3 and 8 was discovered while I am testing my kernel.
> I did a 16-hour stress test that has ~7 billion total page migrations.
> No error or data corruption was found.
>
>
> General description
> ===========================================
>
> This patchset enhances page migration functionality to handle thp migration
> for various page migration's callers:
> - mbind(2)
> - move_pages(2)
> - migrate_pages(2)
> - cgroup/cpuset migration
> - memory hotremove
> - soft offline
>
> The main benefit is that we can avoid unnecessary thp splits, which helps us
> avoid performance decrease when your applications handles NUMA optimization on
> their own.
>
> The implementation is similar to that of normal page migration, the key point
> is that we modify a pmd to a pmd migration entry in swap-entry like format.
>
>
> Any comments or advices are welcomed.
>
> Best Regards,
> Yan Zi
>
> Naoya Horiguchi (11):
> mm: x86: move _PAGE_SWP_SOFT_DIRTY from bit 7 to bit 1
> mm: mempolicy: add queue_pages_node_check()
> mm: thp: introduce separate TTU flag for thp freezing
> mm: thp: introduce CONFIG_ARCH_ENABLE_THP_MIGRATION
> mm: thp: enable thp migration in generic path
> mm: thp: check pmd migration entry in common path
> mm: soft-dirty: keep soft-dirty bits over thp migration
> mm: hwpoison: soft offline supports thp migration
> mm: mempolicy: mbind and migrate_pages support thp migration
> mm: migrate: move_pages() supports thp migration
> mm: memory_hotplug: memory hotremove supports thp migration
>
> Zi Yan (3):
> mm: thp: make __split_huge_pmd_locked visible.
> mm: thp: create new __zap_huge_pmd_locked function.
> mm: use pmd lock instead of racy checks in zap_pmd_range()
>
> arch/x86/Kconfig | 4 +
> arch/x86/include/asm/pgtable.h | 17 ++
> arch/x86/include/asm/pgtable_64.h | 2 +
> arch/x86/include/asm/pgtable_types.h | 10 +-
> arch/x86/mm/gup.c | 4 +-
> fs/proc/task_mmu.c | 37 +++--
> include/asm-generic/pgtable.h | 105 ++++--------
> include/linux/huge_mm.h | 36 ++++-
> include/linux/rmap.h | 1 +
> include/linux/swapops.h | 146 ++++++++++++++++-
> mm/Kconfig | 3 +
> mm/gup.c | 20 ++-
> mm/huge_memory.c | 302 +++++++++++++++++++++++++++++------
> mm/madvise.c | 2 +
> mm/memcontrol.c | 2 +
> mm/memory-failure.c | 31 ++--
> mm/memory.c | 33 ++--
> mm/memory_hotplug.c | 17 +-
> mm/mempolicy.c | 124 ++++++++++----
> mm/migrate.c | 66 ++++++--
> mm/mprotect.c | 6 +-
> mm/mremap.c | 2 +-
> mm/page_vma_mapped.c | 13 +-
> mm/pagewalk.c | 2 +
> mm/pgtable-generic.c | 3 +-
> mm/rmap.c | 21 ++-
> 26 files changed, 770 insertions(+), 239 deletions(-)
>
--
Best Regards,
Yan Zi
[-- Attachment #2: OpenPGP digital signature --]
[-- Type: application/pgp-signature, Size: 537 bytes --]
next prev parent reply other threads:[~2017-02-23 16:12 UTC|newest]
Thread overview: 87+ messages / expand[flat|nested] mbox.gz Atom feed top
2017-02-05 16:12 [PATCH v3 00/14] mm: page migration enhancement for thp Zi Yan
2017-02-05 16:12 ` Zi Yan
2017-02-05 16:12 ` [PATCH v3 01/14] mm: thp: make __split_huge_pmd_locked visible Zi Yan
2017-02-05 16:12 ` Zi Yan
2017-02-06 6:12 ` Naoya Horiguchi
2017-02-06 6:12 ` Naoya Horiguchi
2017-02-06 12:10 ` Zi Yan
2017-02-06 15:02 ` Matthew Wilcox
2017-02-06 15:02 ` Matthew Wilcox
2017-02-06 15:03 ` Zi Yan
2017-02-05 16:12 ` [PATCH v3 02/14] mm: thp: create new __zap_huge_pmd_locked function Zi Yan
2017-02-05 16:12 ` Zi Yan
2017-02-05 16:12 ` [PATCH v3 03/14] mm: use pmd lock instead of racy checks in zap_pmd_range() Zi Yan
2017-02-05 16:12 ` Zi Yan
2017-02-06 4:02 ` Hillf Danton
2017-02-06 4:02 ` Hillf Danton
2017-02-06 4:14 ` Zi Yan
2017-02-06 4:14 ` Zi Yan
2017-02-06 7:43 ` Naoya Horiguchi
2017-02-06 7:43 ` Naoya Horiguchi
2017-02-06 13:02 ` Zi Yan
2017-02-06 23:22 ` Naoya Horiguchi
2017-02-06 23:22 ` Naoya Horiguchi
2017-02-06 16:07 ` Kirill A. Shutemov
2017-02-06 16:07 ` Kirill A. Shutemov
2017-02-06 16:32 ` Zi Yan
2017-02-06 17:35 ` Kirill A. Shutemov
2017-02-06 17:35 ` Kirill A. Shutemov
2017-02-07 13:55 ` Aneesh Kumar K.V
2017-02-07 13:55 ` Aneesh Kumar K.V
2017-02-07 14:12 ` Zi Yan
2017-02-07 14:19 ` Kirill A. Shutemov
2017-02-07 14:19 ` Kirill A. Shutemov
2017-02-07 15:11 ` Zi Yan
2017-02-07 15:11 ` Zi Yan
2017-02-07 16:37 ` Kirill A. Shutemov
2017-02-07 16:37 ` Kirill A. Shutemov
2017-02-07 17:14 ` Zi Yan
2017-02-07 17:14 ` Zi Yan
2017-02-07 17:45 ` Kirill A. Shutemov
2017-02-07 17:45 ` Kirill A. Shutemov
2017-02-13 0:25 ` Zi Yan
2017-02-13 0:25 ` Zi Yan
2017-02-13 10:59 ` Kirill A. Shutemov
2017-02-13 10:59 ` Kirill A. Shutemov
2017-02-13 14:40 ` Andrea Arcangeli
2017-02-13 14:40 ` Andrea Arcangeli
2017-02-05 16:12 ` [PATCH v3 04/14] mm: x86: move _PAGE_SWP_SOFT_DIRTY from bit 7 to bit 1 Zi Yan
2017-02-05 16:12 ` Zi Yan
2017-02-09 9:14 ` Naoya Horiguchi
2017-02-09 9:14 ` Naoya Horiguchi
2017-02-09 15:07 ` Zi Yan
2017-02-05 16:12 ` [PATCH v3 05/14] mm: mempolicy: add queue_pages_node_check() Zi Yan
2017-02-05 16:12 ` Zi Yan
2017-02-05 16:12 ` [PATCH v3 06/14] mm: thp: introduce separate TTU flag for thp freezing Zi Yan
2017-02-05 16:12 ` Zi Yan
2017-02-05 16:12 ` [PATCH v3 07/14] mm: thp: introduce CONFIG_ARCH_ENABLE_THP_MIGRATION Zi Yan
2017-02-05 16:12 ` Zi Yan
2017-02-05 16:12 ` [PATCH v3 08/14] mm: thp: enable thp migration in generic path Zi Yan
2017-02-05 16:12 ` Zi Yan
2017-02-09 9:15 ` Naoya Horiguchi
2017-02-09 9:15 ` Naoya Horiguchi
2017-02-09 15:17 ` Zi Yan
2017-02-09 23:04 ` Naoya Horiguchi
2017-02-09 23:04 ` Naoya Horiguchi
2017-02-14 20:13 ` Zi Yan
2017-02-14 20:13 ` Zi Yan
2017-02-05 16:12 ` [PATCH v3 09/14] mm: thp: check pmd migration entry in common path Zi Yan
2017-02-05 16:12 ` Zi Yan
2017-02-09 9:16 ` Naoya Horiguchi
2017-02-09 9:16 ` Naoya Horiguchi
2017-02-09 17:36 ` Zi Yan
2017-02-05 16:12 ` [PATCH v3 10/14] mm: soft-dirty: keep soft-dirty bits over thp migration Zi Yan
2017-02-05 16:12 ` Zi Yan
2017-02-05 16:12 ` [PATCH v3 11/14] mm: hwpoison: soft offline supports " Zi Yan
2017-02-05 16:12 ` Zi Yan
2017-02-05 16:12 ` [PATCH v3 12/14] mm: mempolicy: mbind and migrate_pages support " Zi Yan
2017-02-05 16:12 ` Zi Yan
2017-02-05 16:12 ` [PATCH v3 13/14] mm: migrate: move_pages() supports " Zi Yan
2017-02-05 16:12 ` Zi Yan
2017-02-09 9:16 ` Naoya Horiguchi
2017-02-09 9:16 ` Naoya Horiguchi
2017-02-09 17:37 ` Zi Yan
2017-02-05 16:12 ` [PATCH v3 14/14] mm: memory_hotplug: memory hotremove " Zi Yan
2017-02-05 16:12 ` Zi Yan
2017-02-23 16:12 ` Zi Yan [this message]
2017-02-23 16:12 ` [PATCH v3 00/14] mm: page migration enhancement for thp Zi Yan
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=58AF09D9.3050401@cs.rutgers.edu \
--to=zi.yan@cs.rutgers.edu \
--cc=aarcange@redhat.com \
--cc=akpm@linux-foundation.org \
--cc=khandual@linux.vnet.ibm.com \
--cc=kirill.shutemov@linux.intel.com \
--cc=linux-kernel@vger.kernel.org \
--cc=linux-mm@kvack.org \
--cc=mgorman@techsingularity.net \
--cc=mhocko@kernel.org \
--cc=minchan@kernel.org \
--cc=n-horiguchi@ah.jp.nec.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.