All of lore.kernel.org
 help / color / mirror / Atom feed
From: Wanpeng Li <liwanp@linux.vnet.ibm.com>
To: Naoya Horiguchi <n-horiguchi@ah.jp.nec.com>
Cc: linux-mm@kvack.org, Andrew Morton <akpm@linux-foundation.org>,
	Mel Gorman <mgorman@suse.de>, Hugh Dickins <hughd@google.com>,
	KOSAKI Motohiro <kosaki.motohiro@jp.fujitsu.com>,
	Andi Kleen <andi@firstfloor.org>, Hillf Danton <dhillf@gmail.com>,
	Michal Hocko <mhocko@suse.cz>, Rik van Riel <riel@redhat.com>,
	"Aneesh Kumar K.V" <aneesh.kumar@linux.vnet.ibm.com>,
	linux-kernel@vger.kernel.org,
	Naoya Horiguchi <nao.horiguchi@gmail.com>
Subject: Re: [PATCH 1/8] migrate: make core migration code aware of hugepage
Date: Wed, 24 Jul 2013 10:28:28 +0800	[thread overview]
Message-ID: <20130724022828.GC22680@hacker.(null)> (raw)
In-Reply-To: <1374183272-10153-2-git-send-email-n-horiguchi@ah.jp.nec.com>

On Thu, Jul 18, 2013 at 05:34:25PM -0400, Naoya Horiguchi wrote:
>Before enabling each user of page migration to support hugepage,
>this patch enables the list of pages for migration to link not only
>LRU pages, but also hugepages. As a result, putback_movable_pages()
>and migrate_pages() can handle both of LRU pages and hugepages.
>
>ChangeLog v3:
> - revert introducing migrate_movable_pages
> - add isolate_huge_page
>
>ChangeLog v2:
> - move code removing VM_HUGETLB from vma_migratable check into a
>   separate patch
> - hold hugetlb_lock in putback_active_hugepage
> - update comment near the definition of hugetlb_lock
>
>Signed-off-by: Naoya Horiguchi <n-horiguchi@ah.jp.nec.com>

Reviewed-by: Wanpeng Li <liwanp@linux.vnet.ibm.com>

>---
> include/linux/hugetlb.h |  6 ++++++
> mm/hugetlb.c            | 32 +++++++++++++++++++++++++++++++-
> mm/migrate.c            | 10 +++++++++-
> 3 files changed, 46 insertions(+), 2 deletions(-)
>
>diff --git v3.11-rc1.orig/include/linux/hugetlb.h v3.11-rc1/include/linux/hugetlb.h
>index c2b1801..0b7a9e7 100644
>--- v3.11-rc1.orig/include/linux/hugetlb.h
>+++ v3.11-rc1/include/linux/hugetlb.h
>@@ -66,6 +66,9 @@ int hugetlb_reserve_pages(struct inode *inode, long from, long to,
> 						vm_flags_t vm_flags);
> void hugetlb_unreserve_pages(struct inode *inode, long offset, long freed);
> int dequeue_hwpoisoned_huge_page(struct page *page);
>+bool isolate_huge_page(struct page *page, struct list_head *l);
>+void putback_active_hugepage(struct page *page);
>+void putback_active_hugepages(struct list_head *l);
> void copy_huge_page(struct page *dst, struct page *src);
>
> #ifdef CONFIG_ARCH_WANT_HUGE_PMD_SHARE
>@@ -134,6 +137,9 @@ static inline int dequeue_hwpoisoned_huge_page(struct page *page)
> 	return 0;
> }
>
>+#define isolate_huge_page(p, l) false
>+#define putback_active_hugepage(p)
>+#define putback_active_hugepages(l)
> static inline void copy_huge_page(struct page *dst, struct page *src)
> {
> }
>diff --git v3.11-rc1.orig/mm/hugetlb.c v3.11-rc1/mm/hugetlb.c
>index 83aff0a..4c48a70 100644
>--- v3.11-rc1.orig/mm/hugetlb.c
>+++ v3.11-rc1/mm/hugetlb.c
>@@ -48,7 +48,8 @@ static unsigned long __initdata default_hstate_max_huge_pages;
> static unsigned long __initdata default_hstate_size;
>
> /*
>- * Protects updates to hugepage_freelists, nr_huge_pages, and free_huge_pages
>+ * Protects updates to hugepage_freelists, hugepage_activelist, nr_huge_pages,
>+ * free_huge_pages, and surplus_huge_pages.
>  */
> DEFINE_SPINLOCK(hugetlb_lock);
>
>@@ -3431,3 +3432,32 @@ int dequeue_hwpoisoned_huge_page(struct page *hpage)
> 	return ret;
> }
> #endif
>+
>+bool isolate_huge_page(struct page *page, struct list_head *l)
>+{
>+	VM_BUG_ON(!PageHead(page));
>+	if (!get_page_unless_zero(page))
>+		return false;
>+	spin_lock(&hugetlb_lock);
>+	list_move_tail(&page->lru, l);
>+	spin_unlock(&hugetlb_lock);
>+	return true;
>+}
>+
>+void putback_active_hugepage(struct page *page)
>+{
>+	VM_BUG_ON(!PageHead(page));
>+	spin_lock(&hugetlb_lock);
>+	list_move_tail(&page->lru, &(page_hstate(page))->hugepage_activelist);
>+	spin_unlock(&hugetlb_lock);
>+	put_page(page);
>+}
>+
>+void putback_active_hugepages(struct list_head *l)
>+{
>+	struct page *page;
>+	struct page *page2;
>+
>+	list_for_each_entry_safe(page, page2, l, lru)
>+		putback_active_hugepage(page);
>+}
>diff --git v3.11-rc1.orig/mm/migrate.c v3.11-rc1/mm/migrate.c
>index 6f0c244..b44a067 100644
>--- v3.11-rc1.orig/mm/migrate.c
>+++ v3.11-rc1/mm/migrate.c
>@@ -100,6 +100,10 @@ void putback_movable_pages(struct list_head *l)
> 	struct page *page2;
>
> 	list_for_each_entry_safe(page, page2, l, lru) {
>+		if (unlikely(PageHuge(page))) {
>+			putback_active_hugepage(page);
>+			continue;
>+		}
> 		list_del(&page->lru);
> 		dec_zone_page_state(page, NR_ISOLATED_ANON +
> 				page_is_file_cache(page));
>@@ -1025,7 +1029,11 @@ int migrate_pages(struct list_head *from, new_page_t get_new_page,
> 		list_for_each_entry_safe(page, page2, from, lru) {
> 			cond_resched();
>
>-			rc = unmap_and_move(get_new_page, private,
>+			if (PageHuge(page))
>+				rc = unmap_and_move_huge_page(get_new_page,
>+						private, page, pass > 2, mode);
>+			else
>+				rc = unmap_and_move(get_new_page, private,
> 						page, pass > 2, mode);
>
> 			switch(rc) {
>-- 
>1.8.3.1
>
>--
>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>

--
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>

  parent reply	other threads:[~2013-07-24  2:29 UTC|newest]

Thread overview: 74+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2013-07-18 21:34 [PATCH v3 0/8] extend hugepage migration Naoya Horiguchi
2013-07-18 21:34 ` Naoya Horiguchi
2013-07-18 21:34 ` [PATCH 1/8] migrate: make core migration code aware of hugepage Naoya Horiguchi
2013-07-18 21:34   ` Naoya Horiguchi
2013-07-19  2:38   ` Hillf Danton
2013-07-19  2:38     ` Hillf Danton
2013-07-19  3:18     ` Naoya Horiguchi
2013-07-19  3:18       ` Naoya Horiguchi
2013-07-19  4:04       ` Hillf Danton
2013-07-19  4:04         ` Hillf Danton
2013-07-19  5:09         ` Naoya Horiguchi
2013-07-19  5:09           ` Naoya Horiguchi
2013-07-24  2:28   ` Wanpeng Li [this message]
2013-07-24  2:28   ` Wanpeng Li
2013-07-18 21:34 ` [PATCH 2/8] soft-offline: use migrate_pages() instead of migrate_huge_page() Naoya Horiguchi
2013-07-18 21:34   ` Naoya Horiguchi
2013-07-24  2:40   ` Wanpeng Li
2013-07-24  2:40   ` Wanpeng Li
2013-07-18 21:34 ` [PATCH 3/8] migrate: add hugepage migration code to migrate_pages() Naoya Horiguchi
2013-07-18 21:34   ` Naoya Horiguchi
2013-07-19  3:05   ` Hillf Danton
2013-07-19  3:05     ` Hillf Danton
2013-07-19  4:13     ` Naoya Horiguchi
2013-07-19  4:13       ` Naoya Horiguchi
2013-07-24  3:33   ` Wanpeng Li
2013-07-24  3:33   ` Wanpeng Li
2013-07-18 21:34 ` [PATCH 4/8] migrate: add hugepage migration code to move_pages() Naoya Horiguchi
2013-07-18 21:34   ` Naoya Horiguchi
2013-07-19  3:36   ` Hillf Danton
2013-07-19  3:36     ` Hillf Danton
2013-07-19  4:36     ` Naoya Horiguchi
2013-07-19  4:36       ` Naoya Horiguchi
2013-07-24  3:41   ` Wanpeng Li
2013-07-24  3:41   ` Wanpeng Li
2013-07-18 21:34 ` [PATCH 5/8] mbind: add hugepage migration code to mbind() Naoya Horiguchi
2013-07-18 21:34   ` Naoya Horiguchi
2013-07-24  3:43   ` Wanpeng Li
2013-07-24  3:43   ` Wanpeng Li
2013-07-18 21:34 ` [PATCH 6/8] migrate: remove VM_HUGETLB from vma flag check in vma_migratable() Naoya Horiguchi
2013-07-18 21:34   ` Naoya Horiguchi
2013-07-19  5:26   ` Hillf Danton
2013-07-19  5:26     ` Hillf Danton
2013-07-24  3:45   ` Wanpeng Li
2013-07-24  3:45   ` Wanpeng Li
2013-07-18 21:34 ` [PATCH 7/8] memory-hotplug: enable memory hotplug to handle hugepage Naoya Horiguchi
2013-07-18 21:34   ` Naoya Horiguchi
2013-07-19  5:40   ` Hillf Danton
2013-07-19  5:40     ` Hillf Danton
2013-07-19 14:39     ` Naoya Horiguchi
2013-07-19 14:39       ` Naoya Horiguchi
2013-07-20 10:04       ` Hillf Danton
2013-07-20 10:04         ` Hillf Danton
2013-07-24  6:10   ` Wanpeng Li
2013-07-24  6:10   ` Wanpeng Li
     [not found]   ` <51ef6fd0.1019310a.5683.345bSMTPIN_ADDED_BROKEN@mx.google.com>
2013-07-24  6:26     ` Naoya Horiguchi
2013-07-24  6:26       ` Naoya Horiguchi
2013-07-18 21:34 ` [PATCH 8/8] prepare to remove /proc/sys/vm/hugepages_treat_as_movable Naoya Horiguchi
2013-07-18 21:34   ` Naoya Horiguchi
2013-07-24  3:46   ` Wanpeng Li
2013-07-24  3:46   ` Wanpeng Li
2013-07-19 15:33 ` [PATCH v3 0/8] extend hugepage migration Andi Kleen
2013-07-19 15:33   ` Andi Kleen
2013-07-19 15:49   ` Naoya Horiguchi
2013-07-19 15:49     ` Naoya Horiguchi
2013-07-19 17:33     ` Andi Kleen
2013-07-19 17:33       ` Andi Kleen
  -- strict thread matches above, loose matches on Subject: below --
2013-07-25  4:54 [PATCH v4 " Naoya Horiguchi
2013-07-25  4:54 ` [PATCH 1/8] migrate: make core migration code aware of hugepage Naoya Horiguchi
2013-07-25  4:54   ` Naoya Horiguchi
2013-07-25  6:06   ` Hillf Danton
2013-07-25  6:06     ` Hillf Danton
2013-07-30 18:28   ` Aneesh Kumar K.V
2013-07-30 18:28     ` Aneesh Kumar K.V
2013-07-30 18:48     ` Naoya Horiguchi
2013-07-30 18:48       ` Naoya Horiguchi

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='20130724022828.GC22680@hacker.(null)' \
    --to=liwanp@linux.vnet.ibm.com \
    --cc=akpm@linux-foundation.org \
    --cc=andi@firstfloor.org \
    --cc=aneesh.kumar@linux.vnet.ibm.com \
    --cc=dhillf@gmail.com \
    --cc=hughd@google.com \
    --cc=kosaki.motohiro@jp.fujitsu.com \
    --cc=linux-kernel@vger.kernel.org \
    --cc=linux-mm@kvack.org \
    --cc=mgorman@suse.de \
    --cc=mhocko@suse.cz \
    --cc=n-horiguchi@ah.jp.nec.com \
    --cc=nao.horiguchi@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.