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: [RFCv3][PATCH 4/4] show page size in /proc/$pid/numa_maps
Date: Fri, 30 Sep 2011 17:09:00 -0700 [thread overview]
Message-ID: <20111001000900.BD9248B8@kernel> (raw)
In-Reply-To: <20111001000856.DD623081@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 16:41:06.125953955 -0700
+++ linux-2.6.git-dave/fs/proc/task_mmu.c 2011-09-30 16:41:06.133953941 -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);
_
WARNING: multiple messages have this Message-ID (diff)
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: [RFCv3][PATCH 4/4] show page size in /proc/$pid/numa_maps
Date: Fri, 30 Sep 2011 17:09:00 -0700 [thread overview]
Message-ID: <20111001000900.BD9248B8@kernel> (raw)
In-Reply-To: <20111001000856.DD623081@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 16:41:06.125953955 -0700
+++ linux-2.6.git-dave/fs/proc/task_mmu.c 2011-09-30 16:41:06.133953941 -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-10-01 0:09 UTC|newest]
Thread overview: 40+ messages / expand[flat|nested] mbox.gz Atom feed top
2011-10-01 0:08 [RFCv3][PATCH 1/4] replace string_get_size() arrays Dave Hansen
2011-10-01 0:08 ` Dave Hansen
2011-10-01 0:08 ` [RFCv3][PATCH 2/4] add string_get_size_pow2() Dave Hansen
2011-10-01 0:08 ` Dave Hansen
2011-10-01 0:08 ` [RFCv3][PATCH 3/4] add seq_print_pow2() function Dave Hansen
2011-10-01 0:08 ` Dave Hansen
2011-10-01 0:09 ` Dave Hansen [this message]
2011-10-01 0:09 ` [RFCv3][PATCH 4/4] show page size in /proc/$pid/numa_maps Dave Hansen
2011-10-05 6:50 ` David Rientjes
2011-10-05 6:50 ` David Rientjes
2011-10-05 7:09 ` Eric Dumazet
2011-10-05 7:09 ` Eric Dumazet
2011-10-05 7:23 ` David Rientjes
2011-10-05 7:23 ` David Rientjes
2011-10-05 8:54 ` Eric Dumazet
2011-10-05 8:54 ` Eric Dumazet
2011-10-05 19:19 ` David Rientjes
2011-10-05 19:19 ` David Rientjes
2011-10-05 15:22 ` Dave Hansen
2011-10-05 15:22 ` Dave Hansen
2011-10-05 16:28 ` Eric Dumazet
2011-10-05 16:28 ` Eric Dumazet
2011-10-05 19:24 ` David Rientjes
2011-10-05 19:24 ` David Rientjes
2011-10-05 15:21 ` Dave Hansen
2011-10-05 15:21 ` Dave Hansen
2011-10-01 19:29 ` [RFCv3][PATCH 1/4] replace string_get_size() arrays Joe Perches
2011-10-01 19:29 ` Joe Perches
2011-10-01 19:33 ` Joe Perches
2011-10-01 19:33 ` Joe Perches
2011-10-04 19:35 ` Dave Hansen
2011-10-04 19:35 ` Dave Hansen
2011-10-04 20:42 ` Joe Perches
2011-10-04 20:42 ` Joe Perches
2011-10-04 20:51 ` Dave Hansen
2011-10-04 20:51 ` Dave Hansen
2011-10-04 21:18 ` Joe Perches
2011-10-04 21:18 ` Joe Perches
2011-10-05 6:58 ` David Rientjes
2011-10-05 6:58 ` David Rientjes
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=20111001000900.BD9248B8@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 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.