From: Andrea Arcangeli <aarcange@redhat.com>
To: Daisuke Nishimura <nishimura@mxp.nes.nec.co.jp>
Cc: linux-mm@kvack.org, Marcelo Tosatti <mtosatti@redhat.com>,
Adam Litke <agl@us.ibm.com>, Avi Kivity <avi@redhat.com>,
Izik Eidus <ieidus@redhat.com>,
Hugh Dickins <hugh.dickins@tiscali.co.uk>,
Nick Piggin <npiggin@suse.de>, Rik van Riel <riel@redhat.com>,
Mel Gorman <mel@csn.ul.ie>, Andi Kleen <andi@firstfloor.org>,
Dave Hansen <dave@linux.vnet.ibm.com>,
Benjamin Herrenschmidt <benh@kernel.crashing.org>,
Ingo Molnar <mingo@elte.hu>, Mike Travis <travis@sgi.com>,
KAMEZAWA Hiroyuki <kamezawa.hiroyu@jp.fujitsu.com>,
Christoph Lameter <cl@linux-foundation.org>,
Chris Wright <chrisw@sous-sol.org>,
Andrew Morton <akpm@linux-foundation.org>
Subject: Re: [PATCH 25 of 28] transparent hugepage core
Date: Mon, 4 Jan 2010 17:04:37 +0100 [thread overview]
Message-ID: <20100104160437.GE17401@random.random> (raw)
In-Reply-To: <20100104151649.34f6c469.nishimura@mxp.nes.nec.co.jp>
Hi,
On Mon, Jan 04, 2010 at 03:16:49PM +0900, Daisuke Nishimura wrote:
> IIUC, page_add_new_anon_rmap()(and add_page_to_lru_list(), which will be called
> by the call path) will update zone state of NR_ANON_PAGES and NR_ACTIVE_ANON.
> Shouldn't we also modify zone state codes to support transparent hugepage support ?
Correct. I did more changes in the last weeks besides the work on
khugepaged. This is the relevant one that you couldn't see and that
already takes care of the above. Maybe I should send a new update for
this and other bits even if the last bit of khugepaged isn't working
yet. Otherwise wait a little more and get the whole thing working. Let
me know. This is combined with other changes to the split logic that
now transfers the single hugeanonpage to 512 anonpages.
----
Subject: transparent hugepage vmstat
From: Andrea Arcangeli <aarcange@redhat.com>
Add hugepage stat information to /proc/vmstat and /proc/meminfo.
Signed-off-by: Andrea Arcangeli <aarcange@redhat.com>
---
diff --git a/fs/proc/meminfo.c b/fs/proc/meminfo.c
--- a/fs/proc/meminfo.c
+++ b/fs/proc/meminfo.c
@@ -101,6 +101,9 @@ static int meminfo_proc_show(struct seq_
#ifdef CONFIG_MEMORY_FAILURE
"HardwareCorrupted: %5lu kB\n"
#endif
+#ifdef CONFIG_TRANSPARENT_HUGEPAGE
+ "AnonHugePages: %8lu kB\n"
+#endif
,
K(i.totalram),
K(i.freeram),
@@ -151,6 +154,10 @@ static int meminfo_proc_show(struct seq_
#ifdef CONFIG_MEMORY_FAILURE
,atomic_long_read(&mce_bad_pages) << (PAGE_SHIFT - 10)
#endif
+#ifdef CONFIG_TRANSPARENT_HUGEPAGE
+ ,K(global_page_state(NR_ANON_TRANSPARENT_HUGEPAGES) *
+ HPAGE_PMD_NR)
+#endif
);
hugetlb_report_meminfo(m);
diff --git a/include/linux/mmzone.h b/include/linux/mmzone.h
--- a/include/linux/mmzone.h
+++ b/include/linux/mmzone.h
@@ -112,6 +112,9 @@ enum zone_stat_item {
NUMA_LOCAL, /* allocation from local node */
NUMA_OTHER, /* allocation from other node */
#endif
+#ifdef CONFIG_TRANSPARENT_HUGEPAGE
+ NR_ANON_TRANSPARENT_HUGEPAGES,
+#endif
NR_VM_ZONE_STAT_ITEMS };
/*
diff --git a/mm/huge_memory.c b/mm/huge_memory.c
--- a/mm/huge_memory.c
+++ b/mm/huge_memory.c
@@ -725,6 +725,10 @@ static void __split_huge_page_refcount(s
put_page(page_tail);
}
+ __dec_zone_page_state(page, NR_ANON_TRANSPARENT_HUGEPAGES);
+ __mod_zone_page_state(page_zone(page), NR_ANON_PAGES,
+ HPAGE_PMD_NR);
+
ClearPageCompound(page);
compound_unlock(page);
}
diff --git a/mm/rmap.c b/mm/rmap.c
--- a/mm/rmap.c
+++ b/mm/rmap.c
@@ -692,8 +692,13 @@ void page_add_anon_rmap(struct page *pag
{
int first = atomic_inc_and_test(&page->_mapcount);
VM_BUG_ON(PageTail(page));
- if (first)
- __inc_zone_page_state(page, NR_ANON_PAGES);
+ if (first) {
+ if (!PageCompound(page))
+ __inc_zone_page_state(page, NR_ANON_PAGES);
+ else
+ __inc_zone_page_state(page,
+ NR_ANON_TRANSPARENT_HUGEPAGES);
+ }
if (unlikely(PageKsm(page)))
return;
@@ -722,7 +727,10 @@ void page_add_new_anon_rmap(struct page
VM_BUG_ON(PageTail(page));
SetPageSwapBacked(page);
atomic_set(&page->_mapcount, 0); /* increment count (starts at -1) */
- __inc_zone_page_state(page, NR_ANON_PAGES);
+ if (!PageCompound(page))
+ __inc_zone_page_state(page, NR_ANON_PAGES);
+ else
+ __inc_zone_page_state(page, NR_ANON_TRANSPARENT_HUGEPAGES);
__page_set_anon_rmap(page, vma, address);
if (page_evictable(page, vma))
lru_cache_add_lru(page, LRU_ACTIVE_ANON);
@@ -770,7 +778,11 @@ void page_remove_rmap(struct page *page)
}
if (PageAnon(page)) {
mem_cgroup_uncharge_page(page);
- __dec_zone_page_state(page, NR_ANON_PAGES);
+ if (!PageCompound(page))
+ __dec_zone_page_state(page, NR_ANON_PAGES);
+ else
+ __dec_zone_page_state(page,
+ NR_ANON_TRANSPARENT_HUGEPAGES);
} else {
__dec_zone_page_state(page, NR_FILE_MAPPED);
mem_cgroup_update_file_mapped(page, -1);
diff --git a/mm/vmstat.c b/mm/vmstat.c
--- a/mm/vmstat.c
+++ b/mm/vmstat.c
@@ -655,6 +655,9 @@ static const char * const vmstat_text[]
"numa_local",
"numa_other",
#endif
+#ifdef CONFIG_TRANSPARENT_HUGEPAGE
+ "nr_anon_transparent_hugepages",
+#endif
#ifdef CONFIG_VM_EVENT_COUNTERS
"pgpgin",
--
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>
next prev parent reply other threads:[~2010-01-04 16:05 UTC|newest]
Thread overview: 90+ messages / expand[flat|nested] mbox.gz Atom feed top
2009-12-17 19:00 [PATCH 00 of 28] Transparent Hugepage support #2 Andrea Arcangeli
2009-12-17 19:00 ` [PATCH 01 of 28] compound_lock Andrea Arcangeli
2009-12-17 19:46 ` Christoph Lameter
2009-12-18 14:27 ` Andrea Arcangeli
2009-12-17 19:00 ` [PATCH 02 of 28] alter compound get_page/put_page Andrea Arcangeli
2009-12-17 19:50 ` Christoph Lameter
2009-12-18 14:30 ` Andrea Arcangeli
2009-12-17 19:00 ` [PATCH 03 of 28] clear compound mapping Andrea Arcangeli
2009-12-17 19:00 ` [PATCH 04 of 28] add native_set_pmd_at Andrea Arcangeli
2009-12-17 19:00 ` [PATCH 05 of 28] add pmd paravirt ops Andrea Arcangeli
2009-12-17 19:00 ` [PATCH 06 of 28] no paravirt version of pmd ops Andrea Arcangeli
2009-12-17 19:00 ` [PATCH 07 of 28] export maybe_mkwrite Andrea Arcangeli
2009-12-17 19:00 ` [PATCH 08 of 28] comment reminder in destroy_compound_page Andrea Arcangeli
2009-12-17 19:00 ` [PATCH 09 of 28] config_transparent_hugepage Andrea Arcangeli
2009-12-17 19:00 ` [PATCH 10 of 28] add pmd mangling functions to x86 Andrea Arcangeli
2009-12-18 18:56 ` Mel Gorman
2009-12-19 15:27 ` Andrea Arcangeli
2009-12-17 19:00 ` [PATCH 11 of 28] add pmd mangling generic functions Andrea Arcangeli
2009-12-17 19:00 ` [PATCH 12 of 28] special pmd_trans_* functions Andrea Arcangeli
2009-12-17 19:00 ` [PATCH 13 of 28] bail out gup_fast on freezed pmd Andrea Arcangeli
2009-12-18 18:59 ` Mel Gorman
2009-12-19 15:48 ` Andrea Arcangeli
2009-12-17 19:00 ` [PATCH 14 of 28] pte alloc trans splitting Andrea Arcangeli
2009-12-18 19:03 ` Mel Gorman
2009-12-19 15:59 ` Andrea Arcangeli
2009-12-21 19:57 ` Mel Gorman
2009-12-17 19:00 ` [PATCH 15 of 28] add pmd mmu_notifier helpers Andrea Arcangeli
2009-12-17 19:00 ` [PATCH 16 of 28] clear page compound Andrea Arcangeli
2009-12-17 19:00 ` [PATCH 17 of 28] add pmd_huge_pte to mm_struct Andrea Arcangeli
2009-12-17 19:00 ` [PATCH 18 of 28] ensure mapcount is taken on head pages Andrea Arcangeli
2009-12-17 19:00 ` [PATCH 19 of 28] split_huge_page_mm/vma Andrea Arcangeli
2009-12-17 19:00 ` [PATCH 20 of 28] split_huge_page paging Andrea Arcangeli
2009-12-17 19:00 ` [PATCH 21 of 28] pmd_trans_huge migrate bugcheck Andrea Arcangeli
2009-12-17 19:00 ` [PATCH 22 of 28] clear_huge_page fix Andrea Arcangeli
2009-12-18 19:16 ` Mel Gorman
2009-12-17 19:00 ` [PATCH 23 of 28] clear_copy_huge_page Andrea Arcangeli
2009-12-17 19:00 ` [PATCH 24 of 28] kvm mmu transparent hugepage support Andrea Arcangeli
2009-12-17 19:00 ` [PATCH 25 of 28] transparent hugepage core Andrea Arcangeli
2009-12-18 20:03 ` Mel Gorman
2009-12-19 16:41 ` Andrea Arcangeli
2009-12-21 20:31 ` Mel Gorman
2009-12-23 0:06 ` Andrea Arcangeli
2009-12-23 6:09 ` Paul Mundt
2009-12-23 6:09 ` Paul Mundt
2010-01-03 18:38 ` Mel Gorman
2010-01-04 15:49 ` Andrea Arcangeli
2010-01-04 16:58 ` Christoph Lameter
2010-01-04 6:16 ` Daisuke Nishimura
2010-01-04 16:04 ` Andrea Arcangeli [this message]
2009-12-17 19:00 ` [PATCH 26 of 28] madvise(MADV_HUGEPAGE) Andrea Arcangeli
2009-12-17 19:00 ` [PATCH 27 of 28] memcg compound Andrea Arcangeli
2009-12-18 1:27 ` KAMEZAWA Hiroyuki
2009-12-18 16:02 ` Andrea Arcangeli
2009-12-17 19:00 ` [PATCH 28 of 28] memcg huge memory Andrea Arcangeli
2009-12-18 1:33 ` KAMEZAWA Hiroyuki
2009-12-18 16:04 ` Andrea Arcangeli
2009-12-18 23:06 ` KAMEZAWA Hiroyuki
2009-12-20 18:39 ` Andrea Arcangeli
2009-12-21 0:26 ` KAMEZAWA Hiroyuki
2009-12-21 1:24 ` Daisuke Nishimura
2009-12-21 3:52 ` KAMEZAWA Hiroyuki
2009-12-21 4:33 ` Daisuke Nishimura
2009-12-25 4:17 ` Daisuke Nishimura
2009-12-25 4:37 ` KAMEZAWA Hiroyuki
2009-12-24 10:00 ` Balbir Singh
2009-12-24 11:40 ` Andrea Arcangeli
2009-12-24 12:07 ` Balbir Singh
2009-12-17 19:54 ` [PATCH 00 of 28] Transparent Hugepage support #2 Christoph Lameter
2009-12-17 19:58 ` Rik van Riel
2009-12-17 20:09 ` Christoph Lameter
2009-12-18 5:12 ` Ingo Molnar
2009-12-18 6:18 ` KOSAKI Motohiro
2009-12-18 18:28 ` Christoph Lameter
2009-12-18 18:41 ` Dave Hansen
2009-12-18 19:17 ` Mike Travis
2009-12-18 19:28 ` Swap on flash SSDs Dave Hansen
2009-12-18 19:38 ` Andi Kleen
2009-12-18 19:39 ` Ingo Molnar
2009-12-18 20:13 ` Linus Torvalds
2009-12-18 20:31 ` Ingo Molnar
2009-12-19 18:38 ` Jörn Engel
2009-12-18 14:05 ` [PATCH 00 of 28] Transparent Hugepage support #2 Andrea Arcangeli
2009-12-18 18:33 ` Christoph Lameter
2009-12-19 15:09 ` Andrea Arcangeli
2009-12-17 20:47 ` Mike Travis
2009-12-18 3:28 ` Rik van Riel
2009-12-18 14:12 ` Andrea Arcangeli
2009-12-18 12:52 ` Avi Kivity
2009-12-18 18:47 ` Dave Hansen
2009-12-19 15:20 ` Andrea Arcangeli
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=20100104160437.GE17401@random.random \
--to=aarcange@redhat.com \
--cc=agl@us.ibm.com \
--cc=akpm@linux-foundation.org \
--cc=andi@firstfloor.org \
--cc=avi@redhat.com \
--cc=benh@kernel.crashing.org \
--cc=chrisw@sous-sol.org \
--cc=cl@linux-foundation.org \
--cc=dave@linux.vnet.ibm.com \
--cc=hugh.dickins@tiscali.co.uk \
--cc=ieidus@redhat.com \
--cc=kamezawa.hiroyu@jp.fujitsu.com \
--cc=linux-mm@kvack.org \
--cc=mel@csn.ul.ie \
--cc=mingo@elte.hu \
--cc=mtosatti@redhat.com \
--cc=nishimura@mxp.nes.nec.co.jp \
--cc=npiggin@suse.de \
--cc=riel@redhat.com \
--cc=travis@sgi.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.