From: Dave Hansen <haveblue@us.ibm.com>
To: Matt Mackall <mpm@selenic.com>
Cc: Andrew Morton <akpm@linux-foundation.org>,
linux-kernel@vger.kernel.org,
Rusty Russell <rusty@rustcorp.com.au>,
Jeremy Fitzhardinge <jeremy@goop.org>,
David Rientjes <rientjes@google.com>,
Fengguang Wu <wfg@mail.ustc.edu.cn>
Subject: Re: [PATCH 10/11] maps3: add /proc/kpagecount and /proc/kpageflags interfaces
Date: Mon, 15 Oct 2007 16:34:57 -0700 [thread overview]
Message-ID: <1192491297.6118.129.camel@localhost> (raw)
In-Reply-To: <20071015231106.GX19691@waste.org>
On Mon, 2007-10-15 at 18:11 -0500, Matt Mackall wrote:
> > Could we just have /proc/kpagereferenced? Is there a legitimate need
> > for other flags to be visible?
>
> Referenced, dirty, uptodate, lru, active, slab, writeback, reclaim,
> and buddy all look like they might be interesting to me from the point
> of view of watching what's happening in the VM graphically in
> real-time.
This is true, but it forces a lot of logic from the kernel to be run in
userspace to figure out what is going on. Looking at mainline today:
#define PG_reclaim 17 /* To be reclaimed asap */
...
#define PG_readahead PG_reclaim /* Reminder to do async read-ahead */
All of a sudden, to figure out which flag it actually is, we need to
have all of the logic that the kernel does.
Does this establish a fixed user<->kernel ABI that will keep us from
doing this in the future:
-#define PG_slab 7 /* slab debug (Suparna wants this) */
+#define PG_slab 14 /* slab debug (Suparna wants this) */
Or, even something like this:
-#define PageSlab(page) test_bit(PG_slab, &(page)->flags)
+#define PageSlab(page) (!PageLRU(page) && !PageHighmem(page))
If we actually had several (or even still one file) that exposed this
state, independent of the actual content of page->flags, I think we'd be
better off. I think that's the difference between a fun, super-useful
debugging feature and one that can stay in mainline and have
applications stay using it (without breaking) for a long time.
The flags you listed are things that I would imagine will always exist,
logically. But, we might not always have a specific page flag for pages
under writeback or in the buddy list for that matter. PG_buddy isn't
that old. Perhaps that would be better abstracted to something like
page_in_main_allocator().
-- Dave
next prev parent reply other threads:[~2007-10-15 23:35 UTC|newest]
Thread overview: 39+ messages / expand[flat|nested] mbox.gz Atom feed top
2007-10-15 22:25 [PATCH 0/11] maps3: pagemap monitoring v3 Matt Mackall
2007-10-15 22:25 ` [PATCH 1/11] maps3: add proportional set size accounting in smaps Matt Mackall
2007-10-15 23:36 ` David Rientjes
2007-10-16 0:18 ` Matt Mackall
2007-10-16 2:24 ` David Rientjes
2007-10-15 22:25 ` [PATCH 2/11] maps3: introduce task_size_of for all arches Matt Mackall
2007-10-15 23:45 ` David Rientjes
2007-10-16 0:36 ` Dave Hansen
2007-10-16 2:26 ` David Rientjes
2007-10-16 17:18 ` maps3: introduce task_size_of for all arches (updated v4) Dave Hansen
2007-10-16 17:25 ` David Rientjes
2007-10-15 22:26 ` [PATCH 3/11] maps3: move is_swap_pte Matt Mackall
2007-10-15 22:26 ` [PATCH 4/11] maps3: introduce a generic page walker Matt Mackall
2007-10-15 22:40 ` Jeremy Fitzhardinge
2007-10-15 23:05 ` Dave Hansen
2007-10-15 23:20 ` Jeremy Fitzhardinge
2007-10-15 23:30 ` Matt Mackall
2007-10-16 4:58 ` David Rientjes
2007-10-15 22:26 ` [PATCH 5/11] maps3: use pagewalker in clear_refs and smaps Matt Mackall
2007-10-16 5:03 ` David Rientjes
2007-10-15 22:26 ` [PATCH 6/11] maps3: simplify interdependence of maps " Matt Mackall
2007-10-15 22:26 ` [PATCH 7/11] maps3: move clear_refs code to task_mmu.c Matt Mackall
2007-10-16 5:11 ` David Rientjes
2007-10-15 22:26 ` [PATCH 8/11] maps3: regroup task_mmu by interface Matt Mackall
2007-10-15 22:26 ` [PATCH 9/11] maps3: add /proc/pid/pagemap interface Matt Mackall
2007-10-15 22:26 ` [PATCH 10/11] maps3: add /proc/kpagecount and /proc/kpageflags interfaces Matt Mackall
2007-10-15 22:48 ` Dave Hansen
2007-10-15 23:11 ` Matt Mackall
2007-10-15 23:34 ` Dave Hansen [this message]
2007-10-16 0:35 ` Matt Mackall
2007-10-16 0:49 ` Dave Hansen
2007-10-16 0:58 ` Matt Mackall
2007-10-16 1:07 ` Dave Hansen
2007-10-15 22:26 ` [PATCH 11/11] maps3: make page monitoring /proc file optional Matt Mackall
2007-10-15 22:49 ` Dave Hansen
2007-10-15 22:51 ` Jeremy Fitzhardinge
2007-10-16 0:03 ` Rusty Russell
2007-10-16 0:20 ` Matt Mackall
2007-10-16 5:25 ` 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=1192491297.6118.129.camel@localhost \
--to=haveblue@us.ibm.com \
--cc=akpm@linux-foundation.org \
--cc=jeremy@goop.org \
--cc=linux-kernel@vger.kernel.org \
--cc=mpm@selenic.com \
--cc=rientjes@google.com \
--cc=rusty@rustcorp.com.au \
--cc=wfg@mail.ustc.edu.cn \
/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.