From: Dave Hansen <dave@linux.vnet.ibm.com>
To: linux-mm@kvack.org
Cc: linux-kernel@vger.kernel.org, rientjes@google.com,
James.Bottomley@HansenPartnership.com, hpa@zytor.com,
Dave Hansen <dave@linux.vnet.ibm.com>
Subject: [RFCv2][PATCH 4/4] show page size in /proc/$pid/numa_maps
Date: Fri, 30 Sep 2011 13:32:23 -0700 [thread overview]
Message-ID: <20110930203223.D2196A31@kernel> (raw)
In-Reply-To: <20110930203219.60D507CB@kernel>
The output of /proc/$pid/numa_maps is in terms of number of pages
like anon=22 or dirty=54. Here's some output:
7f4680000000 default file=/hugetlb/bigfile anon=50 dirty=50 N0=50
7f7659600000 default file=/anon_hugepage\040(deleted) anon=50 dirty=50 N0=50
7fff8d425000 default stack anon=50 dirty=50 N0=50
Looks like we have a stack and a couple of anonymous hugetlbfs
areas page which both use the same amount of memory. They don't.
The 'bigfile' uses 1GB pages and takes up ~50GB of space. The
anon_hugepage uses 2MB pages and takes up ~100MB of space while
the stack uses normal 4k pages. You can go over to smaps to
figure out what the page size _really_ is with KernelPageSize
or MMUPageSize. But, I think this is a pretty nasty and
counterintuitive interface as it stands.
The following patch adds a pagesize= field. Note that this only
shows the kernel's notion of page size. For transparent
hugepages, it still shows the base page size. Here's some real
output. Note the anon_hugepage in there.
# cat /proc/`pidof memknobs`/numa_maps
00400000 default file=/root/memknobs pagesize=4KiB dirty=3 active=2 N0=3
00602000 default file=/root/memknobs pagesize=4KiB anon=1 dirty=1 N0=1
00603000 default file=/root/memknobs pagesize=4KiB anon=1 dirty=1 N0=1
00604000 default heap pagesize=4KiB anon=6 dirty=6 N0=6
7f6766216000 default file=/lib/libc-2.9.so pagesize=4KiB mapped=98 mapmax=25 active=97 N0=98
7f676637e000 default file=/lib/libc-2.9.so
7f676657e000 default file=/lib/libc-2.9.so pagesize=4KiB anon=4 dirty=4 N0=4
7f6766582000 default file=/lib/libc-2.9.so pagesize=4KiB anon=1 dirty=1 N0=1
7f6766583000 default pagesize=4KiB anon=3 dirty=3 N0=3
7f6766588000 default file=/lib/ld-2.9.so pagesize=4KiB mapped=25 mapmax=24 N0=25
7f676679d000 default pagesize=4KiB anon=2 dirty=2 N0=2
7f67667a3000 default pagesize=4KiB anon=4 dirty=4 N0=4
7f67667a7000 default file=/lib/ld-2.9.so pagesize=4KiB anon=1 dirty=1 N0=1
7f67667a8000 default file=/lib/ld-2.9.so pagesize=4KiB anon=1 dirty=1 N0=1
7f6766800000 default file=/anon_hugepage\040(deleted) pagesize=2MiB anon=10 dirty=10 N0=10
7fff5b948000 default stack pagesize=4KiB anon=2 dirty=2 N0=2
7fff5b96d000 default
Signed-off-by: Dave Haneen <dave@linux.vnet.ibm.com>
---
linux-2.6.git-dave/fs/proc/task_mmu.c | 5 +++++
1 file changed, 5 insertions(+)
diff -puN fs/proc/task_mmu.c~show-page-size fs/proc/task_mmu.c
--- linux-2.6.git/fs/proc/task_mmu.c~show-page-size 2011-09-30 13:27:55.973467993 -0700
+++ linux-2.6.git-dave/fs/proc/task_mmu.c 2011-09-30 13:27:55.981467979 -0700
@@ -1044,6 +1044,11 @@ static int show_numa_map(struct seq_file
if (!md->pages)
goto out;
+ /* Only interesting for hugetlbfs pages.
+ * Transparent hugepages are still pagesize=4k */
+ seq_puts(m, " pagesize=");
+ seq_print_pow2(m, vma_kernel_pagesize(vma));
+
if (md->anon)
seq_printf(m, " anon=%lu", md->anon);
_
--
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/ .
Fight unfair telecom internet charges in Canada: sign http://stopthemeter.ca/
Don't email: <a href=mailto:"dont@kvack.org"> email@kvack.org </a>
next prev parent reply other threads:[~2011-09-30 20:32 UTC|newest]
Thread overview: 7+ messages / expand[flat|nested] mbox.gz Atom feed top
2011-09-30 20:32 [RFCv2][PATCH 1/4] break units out of string_get_size() Dave Hansen
2011-09-30 20:32 ` [RFCv2][PATCH 2/4] add string_get_size_pow2() Dave Hansen
2011-09-30 20:32 ` [RFCv2][PATCH 3/4] add seq_print_pow2() function Dave Hansen
2011-09-30 20:32 ` Dave Hansen [this message]
2011-09-30 21:29 ` [RFCv2][PATCH 1/4] break units out of string_get_size() H. Peter Anvin
2011-09-30 22:46 ` Dave Hansen
2011-09-30 22:47 ` H. Peter Anvin
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=20110930203223.D2196A31@kernel \
--to=dave@linux.vnet.ibm.com \
--cc=James.Bottomley@HansenPartnership.com \
--cc=hpa@zytor.com \
--cc=linux-kernel@vger.kernel.org \
--cc=linux-mm@kvack.org \
--cc=rientjes@google.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 a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).