Return-Path: Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1755473AbcCCHmF (ORCPT ); Thu, 3 Mar 2016 02:42:05 -0500 Received: from mail-pa0-f49.google.com ([209.85.220.49]:32857 "EHLO mail-pa0-f49.google.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1751279AbcCCHmE (ORCPT ); Thu, 3 Mar 2016 02:42:04 -0500 From: Naoya Horiguchi To: linux-mm@kvack.org Cc: "Kirill A. Shutemov" , Hugh Dickins , Andrew Morton , Dave Hansen , Andrea Arcangeli , Mel Gorman , Michal Hocko , Vlastimil Babka , Pavel Emelyanov , linux-kernel@vger.kernel.org, Naoya Horiguchi , Naoya Horiguchi Subject: [PATCH v1 00/11] mm: page migration enhancement for thp Date: Thu, 3 Mar 2016 16:41:47 +0900 Message-Id: <1456990918-30906-1-git-send-email-n-horiguchi@ah.jp.nec.com> X-Mailer: git-send-email 2.7.0 Sender: linux-kernel-owner@vger.kernel.org List-ID: X-Mailing-List: linux-kernel@vger.kernel.org Content-Length: 3039 Lines: 72 Hi everyone, 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. pmd_present() is not simple and it's not enough by itself to determine whether a given pmd is a pmd migration entry. See patch 3/11 and 5/11 for details. Here're topics which might be helpful to start discussion: - at this point, this functionality is limited to x86_64. - there's alrealy an implementation of thp migration in autonuma code of which this patchset doesn't touch anything because it works fine as it is. - fallback to thp split: current implementation just fails a migration trial if thp migration fails. It's possible to retry migration after splitting the thp, but that's not included in this version. Any comments or advices are welcomed. Thanks, Naoya Horiguchi --- Summary: Naoya Horiguchi (11): mm: mempolicy: add queue_pages_node_check() mm: thp: introduce CONFIG_ARCH_ENABLE_HUGEPAGE_MIGRATION mm: thp: add helpers related to thp/pmd 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: fix race between unpoisoning and freeing migrate source page 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 arch/x86/Kconfig | 4 + arch/x86/include/asm/pgtable.h | 28 ++++++ arch/x86/include/asm/pgtable_64.h | 2 + arch/x86/include/asm/pgtable_types.h | 8 +- arch/x86/mm/gup.c | 3 + fs/proc/task_mmu.c | 25 +++-- include/asm-generic/pgtable.h | 34 ++++++- include/linux/huge_mm.h | 17 ++++ include/linux/swapops.h | 64 +++++++++++++ mm/Kconfig | 3 + mm/gup.c | 8 ++ mm/huge_memory.c | 175 +++++++++++++++++++++++++++++++++-- mm/memcontrol.c | 2 + mm/memory-failure.c | 41 ++++---- mm/memory.c | 5 + mm/memory_hotplug.c | 8 ++ mm/mempolicy.c | 110 ++++++++++++++++------ mm/migrate.c | 57 +++++++++--- mm/page_isolation.c | 8 ++ mm/rmap.c | 7 +- 20 files changed, 527 insertions(+), 82 deletions(-)