To my understanding, zfs makes use of kmem for its arc [and ofcourse for zfs nodes] - this info you can extract using the standard '::kmastat'. HTH. -surya
Konstantin Gremliza wrote: > Hi, > > I like the the ::memstat dcmd, becauss it gives a brief system > overview of where memory has gone. It does not show arc cache or > shared memory information. > > Would it be possible to add zfs arc cache size and maybe shared memory > information to memstat output. > Current code does: > > http://cvs.opensolaris.org/source/xref/onnv/onnv-gate/usr/src/cmd/mdb/common/modules/genunix/memory.c: > > > #*define* MS_PP_ISKAS > <http://cvs.opensolaris.org/source/s?refs=MS_PP_ISKAS>(pp > <http://cvs.opensolaris.org/source/xref/onnv/onnv-gate/usr/src/cmd/mdb/common/modules/genunix/memory.c#pp>, > stats > <http://cvs.opensolaris.org/source/xref/onnv/onnv-gate/usr/src/cmd/mdb/common/modules/genunix/memory.c#stats>) > \ > 232 (((pp > <http://cvs.opensolaris.org/source/xref/onnv/onnv-gate/usr/src/cmd/mdb/common/modules/genunix/memory.c#pp>)->p_vnode > <http://cvs.opensolaris.org/source/s?defs=p_vnode> == (stats > <http://cvs.opensolaris.org/source/xref/onnv/onnv-gate/usr/src/cmd/mdb/common/modules/genunix/memory.c#stats>)->ms_kvp > > <http://cvs.opensolaris.org/source/xref/onnv/onnv-gate/usr/src/cmd/mdb/common/modules/genunix/memory.c#ms_kvp>) > || \ > 233 * (((stats > <http://cvs.opensolaris.org/source/xref/onnv/onnv-gate/usr/src/cmd/mdb/common/modules/genunix/memory.c#stats>)->ms_zvp > > <http://cvs.opensolaris.org/source/xref/onnv/onnv-gate/usr/src/cmd/mdb/common/modules/genunix/memory.c#ms_zvp> > != NULL <http://cvs.opensolaris.org/source/s?defs=NULL>) && ((pp > <http://cvs.opensolaris.org/source/xref/onnv/onnv-gate/usr/src/cmd/mdb/common/modules/genunix/memory.c#pp>)->p_vnode > <http://cvs.opensolaris.org/source/s?defs=p_vnode> == (stats > <http://cvs.opensolaris.org/source/xref/onnv/onnv-gate/usr/src/cmd/mdb/common/modules/genunix/memory.c#stats>)->ms_zvp > > <http://cvs.opensolaris.org/source/xref/onnv/onnv-gate/usr/src/cmd/mdb/common/modules/genunix/memory.c#ms_zvp>))*) > > Isn`t zvp the zfs arc cache? > Could we add a new zfs stat to the memstat_t? > > > > 234 > 235 /* > 236 * Summarize pages by type; called from page walker. > 237 */ > 238 > 239 /* ARGSUSED */ > 240 *static* *int* > 241 memstat_callback > <http://cvs.opensolaris.org/source/s?refs=memstat_callback>(page_t > <http://cvs.opensolaris.org/source/s?defs=page_t> *page, page_t > <http://cvs.opensolaris.org/source/s?defs=page_t> *pp > <http://cvs.opensolaris.org/source/xref/onnv/onnv-gate/usr/src/cmd/mdb/common/modules/genunix/memory.c#pp>, > memstat_t > <http://cvs.opensolaris.org/source/xref/onnv/onnv-gate/usr/src/cmd/mdb/common/modules/genunix/memory.c#memstat_t> > *stats > <http://cvs.opensolaris.org/source/xref/onnv/onnv-gate/usr/src/cmd/mdb/common/modules/genunix/memory.c#stats>) > 242 { > 243 *struct* vnode <http://cvs.opensolaris.org/source/s?defs=vnode> > vn <http://cvs.opensolaris.org/source/s?refs=vn>, *vp > <http://cvs.opensolaris.org/source/s?refs=vp>; > 244 uintptr_t <http://cvs.opensolaris.org/source/s?defs=uintptr_t> > ptr <http://cvs.opensolaris.org/source/s?refs=ptr>; > 245 > 246 /* read page's vnode pointer */ > 247 *if* ((ptr = (uintptr_t > <http://cvs.opensolaris.org/source/s?defs=uintptr_t>)(pp > <http://cvs.opensolaris.org/source/xref/onnv/onnv-gate/usr/src/cmd/mdb/common/modules/genunix/memory.c#pp>->p_vnode > <http://cvs.opensolaris.org/source/s?defs=p_vnode>)) != NULL > <http://cvs.opensolaris.org/source/s?defs=NULL>) { > 248 *if* (mdb_vread > <http://cvs.opensolaris.org/source/s?defs=mdb_vread>(&vn, *sizeof* (vnode_t > <http://cvs.opensolaris.org/source/s?defs=vnode_t>), ptr) == -1) { > 249 mdb_warn > <http://cvs.opensolaris.org/source/s?defs=mdb_warn>("unable to read vnode_t > at %#lx", > 250 ptr); > 251 *return* (WALK_ERR > <http://cvs.opensolaris.org/source/s?defs=WALK_ERR>); > 252 } > 253 vp > <http://cvs.opensolaris.org/source/xref/onnv/onnv-gate/usr/src/cmd/mdb/common/modules/genunix/memory.c#vp> > = &vn; > 254 } *else* > 255 vp > <http://cvs.opensolaris.org/source/xref/onnv/onnv-gate/usr/src/cmd/mdb/common/modules/genunix/memory.c#vp> > = NULL <http://cvs.opensolaris.org/source/s?defs=NULL>; > 256 > 257 *if* (PP_ISFREE > <http://cvs.opensolaris.org/source/s?defs=PP_ISFREE>(pp > <http://cvs.opensolaris.org/source/xref/onnv/onnv-gate/usr/src/cmd/mdb/common/modules/genunix/memory.c#pp>)) > 258 stats > <http://cvs.opensolaris.org/source/xref/onnv/onnv-gate/usr/src/cmd/mdb/common/modules/genunix/memory.c#stats>->ms_cachelist > > <http://cvs.opensolaris.org/source/xref/onnv/onnv-gate/usr/src/cmd/mdb/common/modules/genunix/memory.c#ms_cachelist>++; > 259 *else* *if* (vp > <http://cvs.opensolaris.org/source/xref/onnv/onnv-gate/usr/src/cmd/mdb/common/modules/genunix/memory.c#vp> > && IS_SWAPFSVP <http://cvs.opensolaris.org/source/s?defs=IS_SWAPFSVP>(vp > <http://cvs.opensolaris.org/source/xref/onnv/onnv-gate/usr/src/cmd/mdb/common/modules/genunix/memory.c#vp>)) > 260 stats > <http://cvs.opensolaris.org/source/xref/onnv/onnv-gate/usr/src/cmd/mdb/common/modules/genunix/memory.c#stats>->ms_anon > > <http://cvs.opensolaris.org/source/xref/onnv/onnv-gate/usr/src/cmd/mdb/common/modules/genunix/memory.c#ms_anon>++; > 261 *else* *if* (MS_PP_ISKAS > <http://cvs.opensolaris.org/source/xref/onnv/onnv-gate/usr/src/cmd/mdb/common/modules/genunix/memory.c#MS_PP_ISKAS>(pp > > <http://cvs.opensolaris.org/source/xref/onnv/onnv-gate/usr/src/cmd/mdb/common/modules/genunix/memory.c#pp>, > stats > <http://cvs.opensolaris.org/source/xref/onnv/onnv-gate/usr/src/cmd/mdb/common/modules/genunix/memory.c#stats>)) > 262 stats > <http://cvs.opensolaris.org/source/xref/onnv/onnv-gate/usr/src/cmd/mdb/common/modules/genunix/memory.c#stats>->ms_kmem > > <http://cvs.opensolaris.org/source/xref/onnv/onnv-gate/usr/src/cmd/mdb/common/modules/genunix/memory.c#ms_kmem>++; > 263 *else* *if* (vp > <http://cvs.opensolaris.org/source/xref/onnv/onnv-gate/usr/src/cmd/mdb/common/modules/genunix/memory.c#vp> > && (((vp > <http://cvs.opensolaris.org/source/xref/onnv/onnv-gate/usr/src/cmd/mdb/common/modules/genunix/memory.c#vp>)->v_flag > <http://cvs.opensolaris.org/source/s?defs=v_flag> & VVMEXEC > <http://cvs.opensolaris.org/source/s?defs=VVMEXEC>)) != 0) > 264 stats > <http://cvs.opensolaris.org/source/xref/onnv/onnv-gate/usr/src/cmd/mdb/common/modules/genunix/memory.c#stats>->ms_exec > > <http://cvs.opensolaris.org/source/xref/onnv/onnv-gate/usr/src/cmd/mdb/common/modules/genunix/memory.c#ms_exec>++; > 265 *else* > 266 stats > <http://cvs.opensolaris.org/source/xref/onnv/onnv-gate/usr/src/cmd/mdb/common/modules/genunix/memory.c#stats>->ms_vnode > > <http://cvs.opensolaris.org/source/xref/onnv/onnv-gate/usr/src/cmd/mdb/common/modules/genunix/memory.c#ms_vnode>++; > 267 > 268 stats > <http://cvs.opensolaris.org/source/xref/onnv/onnv-gate/usr/src/cmd/mdb/common/modules/genunix/memory.c#stats>->ms_total > > <http://cvs.opensolaris.org/source/xref/onnv/onnv-gate/usr/src/cmd/mdb/common/modules/genunix/memory.c#ms_total>++; > 269 > 270 *return* (WALK_NEXT > <http://cvs.opensolaris.org/source/s?defs=WALK_NEXT>); > 271 } > > Regards, Konstantin > > > ------------------------------------------------------------------------ > > _______________________________________________ > mdb-discuss mailing list > mdb-discuss at opensolaris.org > -- http://blogs.sun.com/sprakki