From: David Rientjes <rientjes@google.com>
To: Dave Hansen <dave@linux.vnet.ibm.com>
Cc: linux-mm@kvack.org, linux-kernel@vger.kernel.org,
James.Bottomley@hansenpartnership.com, hpa@zytor.com
Subject: Re: [RFCv3][PATCH 4/4] show page size in /proc/$pid/numa_maps
Date: Tue, 4 Oct 2011 23:50:16 -0700 (PDT) [thread overview]
Message-ID: <alpine.DEB.2.00.1110042344250.16359@chino.kir.corp.google.com> (raw)
In-Reply-To: <20111001000900.BD9248B8@kernel>
On Fri, 30 Sep 2011, Dave Hansen wrote:
>
> 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
>
This would be great if all the /proc/pid/numa_maps consumers were human,
but unfortuantely that's not the case.
I understand that this patchset was probably the result of me asking for
the pagesize= to be specified in each line and using pagesize=4K and
pagesize=2M as examples, but that exact usage is probably not what we
want.
As long as there are scripts that go through and read this information
(we have some internally), expressing them with differing units just makes
it more difficult to parse. I'd rather them just be the byte count.
That way, 1G pages would just show pagesize=1073741824. I don't think
that's too long and is much easier to parse systematically.
> 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 */
Strange comment style (and may not be 4K if thp is extended beyond x86).
> + 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-05 6:50 UTC|newest]
Thread overview: 20+ 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 ` [RFCv3][PATCH 2/4] add string_get_size_pow2() Dave Hansen
2011-10-01 0:08 ` [RFCv3][PATCH 3/4] add seq_print_pow2() function Dave Hansen
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 [this message]
2011-10-05 7:09 ` Eric Dumazet
2011-10-05 7:23 ` David Rientjes
2011-10-05 8:54 ` Eric Dumazet
2011-10-05 19:19 ` David Rientjes
2011-10-05 15:22 ` Dave Hansen
2011-10-05 16:28 ` Eric Dumazet
2011-10-05 19:24 ` David Rientjes
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:33 ` Joe Perches
2011-10-04 19:35 ` Dave Hansen
2011-10-04 20:42 ` Joe Perches
2011-10-04 20:51 ` Dave Hansen
2011-10-04 21:18 ` Joe Perches
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=alpine.DEB.2.00.1110042344250.16359@chino.kir.corp.google.com \
--to=rientjes@google.com \
--cc=James.Bottomley@hansenpartnership.com \
--cc=dave@linux.vnet.ibm.com \
--cc=hpa@zytor.com \
--cc=linux-kernel@vger.kernel.org \
--cc=linux-mm@kvack.org \
/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