On 5/11/06, Roch Bourbonnais - Performance Engineering
<[EMAIL PROTECTED]> wrote:

Certainly something we'll have to tackle.  How about a zpool
memstat (or zpool -m iostat) variation that would report at
least freemem and the amount evictable cached data ?

Would that work for you ?

-r

Suppose I have a system with 32 GB of RAM and 50 GB of ZFS file
systems running a fairly light load - a single JVM that uses about one
GB of RAM.  The first time that backups run, the free memory as
reported by vmstat will drop to nearly zero.  For all practical
purposes, it will not return to having a significant amount of free
RAM until the system reboots.  This breaks the capacity planning tools
that I use across hundreds of machines.  The retraining of sysadmins,
DBA's and others just seems like my punishment for finally getting
%iowait == 0.

A stable interface is needed to indicate how much memory is in active
use.  Yes, active can be fuzzy, but "I backed that 500 MB log file up
2 days ago and it is sitting in the zfs buffer cache" is certainly not
active.  While adding the ability to say the amount of RAM availalble
is the sum of the amount indicated by vmstat and the amount used by
the "zfs memstat" would be workable, it makes me feel like I am in for
another change in the next update to zfs, the next overhaul of nfs,
etc.

Perhaps what would be really useful (does this coincide with memory
set work?) is to have a vmstat option that says how much memory is
being used by classes of memory usage.  It may be useful to see
something like:

$ vmstat -b 5
memtype   resident     hot   warm   cold
kernel        2345     120    540   1685
usr           7823    1034    970   5819
nfsbuf        3434       0      0   3434
zfsbuf        9804     540   1078   8186
free ...

memtype   resident     hot   warm   cold
...

Some columns for paging activity of the various types may be useful
too.  The key thing that I wanted to suggest here was that with such
an interface you can see how much is in a very active working set, how
much is used sometimes, and how much is there just because nothing
else has needed the space yet.  It would certainly help in
understanding how memory is used, particularly when you have workloads
that see memory mappings to fs buffers lost due to application heap
demands.

Perhaps in the world of memory sets, nfsbuf and zfsbuf are their own
memory sets.  usr may be split across several memory sets.

And why "vmstat -b"?  According to the S9 man page I had handy, that
option wasn't taken.  Perhaps "vmstat -t" for temperature?  But I bet
that others have better words to use than hot, warm, and cold.  And of
course, I am not sure that my notion of hot, warm, and cold has any
pratical way to be counted in the current vm subsystem or under the
improvements in the works.

Is this worth pursuing further?
Mike

--
Mike Gerdts
http://mgerdts.blogspot.com/
_______________________________________________
zfs-discuss mailing list
zfs-discuss@opensolaris.org
http://mail.opensolaris.org/mailman/listinfo/zfs-discuss

Reply via email to