Responding to myself...

m...@bruningsystems.com wrote:
Hi Jim,
Jim Mauro wrote:

mdb's memstat is cool in how it summarizes things, but it takes a very
long time to run on large systems. memstat is walking page lists, so
it should be quite accurate.
If you can live with the run time of ::memstat, it's currently your
best bet for memory accounting.

I have implemented a version of ::memstat that runs about 3 times faster on my 2GB laptop, and gives the almost exactly the results as the original memstat. Here is what I do... Instead of using the page walker which basically walks hash chains, I read in the pages off of the memseg list, and then just go through them. So, does this
sound reasonable? The code for the modified memstat routine  is attached.
See the README.memstat file for instructions on building and using.
It would be even faster if there was a way to simply mmap each page_t array.
This would get rid of mdb_alloc calls, and get rid of the copy between user
and kernel space of the page_t that is done by mdb_vread. I can see that mdb eventually calls kvm_read, but it might be nice if there was a way to do mmap
using the mdb modapi.  Something like mdb_mmap(...).
Any thoughts?

max

_______________________________________________
perf-discuss mailing list
perf-discuss@opensolaris.org

Reply via email to