Re: [PATCH 4/4] maps: /proc/<pid>/pmaps interface - memory maps in granularity of pages
From: Matt Mackall
Date: Fri Aug 17 2007 - 12:57:47 EST
On Fri, Aug 17, 2007 at 02:47:27PM +0800, Fengguang Wu wrote:
> Matt,
>
> It's not easy to do direct performance comparisons between pmaps and
> pagemap/kpagemap. However some close analyzes are still possible :)
>
> 1) code size
> pmaps ~200 LOC
> pagemap/kpagemap ~300 LOC
>
> 2) dataset size
> take for example my running firefox on Intel Core 2:
> VSZ 400 MB
> RSS 64 MB, or 16k pages
> pmaps 64 KB, wc shows 2k lines, or so much page ranges
> pagemap 800 KB, could be heavily optimized by returning partial data
I take it you're in 64-bit mode?
You're right, this data compresses well in many circumstances. I
suspect it will suffer under memory pressure though. That will
fragment the ranges in-memory and also fragment the active bits. The
worst case here is huge, of course, but realistically I'd expect
something like 2x-4x.
But there are still the downsides I have mentioned:
- you don't get page frame numbers
- you can't do random access
And how long does it take to pull the data out? My benchmarks show
greater than 50MB/s (and that's with the version in -mm that's doing
double buffering), so that 800K would take < .016s.
> kpagemap 256 KB
>
> 3) runtime overheads
> pmaps 2k lines of string processing(encode/decode)
> kpagemap 16k seek()/read()s, and context switches (could be
> optimized somehow by doing a PFN sort first, but
> that's also non-trivial overheads)
You can do anywhere between 16k small reads or 1 large read. Depends
what data you're trying to get. Right now, kpagemap is fast enough
that I can do realtime displays of the whole of memory in my desktop
in a GUI written in Python. And Python is fairly horrible for drawing
bitmaps and such.
http://www.selenic.com/Screenshot-kpagemap.png
> So pmaps seems to be a clear winner :)
Except that it's only providing a subset of the data.
--
Mathematics is the supreme nostalgia of our time.
-
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majordomo@xxxxxxxxxxxxxxx
More majordomo info at http://vger.kernel.org/majordomo-info.html
Please read the FAQ at http://www.tux.org/lkml/