aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorDave Hansen <dave@linux.vnet.ibm.com>2011-03-22 19:33:01 -0400
committerLinus Torvalds <torvalds@linux-foundation.org>2011-03-22 20:44:04 -0400
commit4031a219d8913da40ade5a6e5b538cc61e975cc8 (patch)
treeead7acfa743ef31f5be6dc9cae1fc70cefd72bf0
parent22e057c5923e60debad318cbeaee33033b110bc8 (diff)
smaps: have smaps show transparent huge pages
Now that the mere act of _looking_ at /proc/$pid/smaps will not destroy transparent huge pages, tell how much of the VMA is actually mapped with them. This way, we can make sure that we're getting THPs where we expect to see them. Signed-off-by: Dave Hansen <dave@linux.vnet.ibm.com> Acked-by: Mel Gorman <mel@csn.ul.ie> Acked-by: David Rientjes <rientjes@google.com> Reviewed-by: Eric B Munson <emunson@mgebm.net> Tested-by: Eric B Munson <emunson@mgebm.net> Cc: Michael J Wolf <mjwolf@us.ibm.com> Cc: Andrea Arcangeli <aarcange@redhat.com> Cc: Johannes Weiner <hannes@cmpxchg.org> Cc: Matt Mackall <mpm@selenic.com> Cc: Jeremy Fitzhardinge <jeremy@goop.org> Signed-off-by: Andrew Morton <akpm@linux-foundation.org> Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
-rw-r--r--fs/proc/task_mmu.c4
1 files changed, 4 insertions, 0 deletions
diff --git a/fs/proc/task_mmu.c b/fs/proc/task_mmu.c
index 26f9cc00102c..93381aae9363 100644
--- a/fs/proc/task_mmu.c
+++ b/fs/proc/task_mmu.c
@@ -331,6 +331,7 @@ struct mem_size_stats {
331 unsigned long private_dirty; 331 unsigned long private_dirty;
332 unsigned long referenced; 332 unsigned long referenced;
333 unsigned long anonymous; 333 unsigned long anonymous;
334 unsigned long anonymous_thp;
334 unsigned long swap; 335 unsigned long swap;
335 u64 pss; 336 u64 pss;
336}; 337};
@@ -396,6 +397,7 @@ static int smaps_pte_range(pmd_t *pmd, unsigned long addr, unsigned long end,
396 smaps_pte_entry(*(pte_t *)pmd, addr, 397 smaps_pte_entry(*(pte_t *)pmd, addr,
397 HPAGE_PMD_SIZE, walk); 398 HPAGE_PMD_SIZE, walk);
398 spin_unlock(&walk->mm->page_table_lock); 399 spin_unlock(&walk->mm->page_table_lock);
400 mss->anonymous_thp += HPAGE_PMD_SIZE;
399 return 0; 401 return 0;
400 } 402 }
401 } else { 403 } else {
@@ -444,6 +446,7 @@ static int show_smap(struct seq_file *m, void *v)
444 "Private_Dirty: %8lu kB\n" 446 "Private_Dirty: %8lu kB\n"
445 "Referenced: %8lu kB\n" 447 "Referenced: %8lu kB\n"
446 "Anonymous: %8lu kB\n" 448 "Anonymous: %8lu kB\n"
449 "AnonHugePages: %8lu kB\n"
447 "Swap: %8lu kB\n" 450 "Swap: %8lu kB\n"
448 "KernelPageSize: %8lu kB\n" 451 "KernelPageSize: %8lu kB\n"
449 "MMUPageSize: %8lu kB\n" 452 "MMUPageSize: %8lu kB\n"
@@ -457,6 +460,7 @@ static int show_smap(struct seq_file *m, void *v)
457 mss.private_dirty >> 10, 460 mss.private_dirty >> 10,
458 mss.referenced >> 10, 461 mss.referenced >> 10,
459 mss.anonymous >> 10, 462 mss.anonymous >> 10,
463 mss.anonymous_thp >> 10,
460 mss.swap >> 10, 464 mss.swap >> 10,
461 vma_kernel_pagesize(vma) >> 10, 465 vma_kernel_pagesize(vma) >> 10,
462 vma_mmu_pagesize(vma) >> 10, 466 vma_mmu_pagesize(vma) >> 10,