yes there are many ways to extract the information for zfs arc cache size.

::memstat is my tool, when it comes to gathering overall memory usage.
my question was: why not include the arc cache size into the ::memstat output?
looking at the code, its almost there. 

and

would it also be possible to include/extract shm-mem into ::memstat? 

regards, konstantin


>
>If all you're interested in is the ARC, then why not "::arc" ?
>
>FrankH.
>
>On Wed, 14 May 2008, Surya Prakki wrote:
>
>> 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/mo
>dules/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/m
>odules/genunix/memory.c#pp>, stats 
><http://cvs.opensolaris.org/source/xref/onnv/onnv-gate/usr/src/cmd/mdb/common/m
>odules/genunix/memory.c#stats>)                                \
>>>     232     (((pp 
><http://cvs.opensolaris.org/source/xref/onnv/onnv-gate/usr/src/cmd/mdb/common/m
>odules/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/m
>odules/genunix/memory.c#stats>)->ms_kvp 
><http://cvs.opensolaris.org/source/xref/onnv/onnv-gate/usr/src/cmd/mdb/common/m
>odules/genunix/memory.c#ms_kvp>) ||            \
>>>     233        * (((stats 
><http://cvs.opensolaris.org/source/xref/onnv/onnv-gate/usr/src/cmd/mdb/common/m
>odules/genunix/memory.c#stats>)->ms_zvp 
><http://cvs.opensolaris.org/source/xref/onnv/onnv-gate/usr/src/cmd/mdb/common/m
>odules/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/m
>odules/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/m
>odules/genunix/memory.c#stats>)->ms_zvp 
><http://cvs.opensolaris.org/source/xref/onnv/onnv-gate/usr/src/cmd/mdb/common/m
>odules/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/m
>odules/genunix/memory.c#pp>, memstat_t 
><http://cvs.opensolaris.org/source/xref/onnv/onnv-gate/usr/src/cmd/mdb/common/m
>odules/genunix/memory.c#memstat_t> *stats 
><http://cvs.opensolaris.org/source/xref/onnv/onnv-gate/usr/src/cmd/mdb/common/m
>odules/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/m
>odules/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/m
>odules/genunix/memory.c#vp> = &vn;
>>>     254     } *else*
>>>     255             vp 
><http://cvs.opensolaris.org/source/xref/onnv/onnv-gate/usr/src/cmd/mdb/common/m
>odules/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/m
>odules/genunix/memory.c#pp>))
>>>     258             stats 
><http://cvs.opensolaris.org/source/xref/onnv/onnv-gate/usr/src/cmd/mdb/common/m
>odules/genunix/memory.c#stats>->ms_cachelist 
><http://cvs.opensolaris.org/source/xref/onnv/onnv-gate/usr/src/cmd/mdb/common/m
>odules/genunix/memory.c#ms_cachelist>++;
>>>     259     *else* *if* (vp 
><http://cvs.opensolaris.org/source/xref/onnv/onnv-gate/usr/src/cmd/mdb/common/m
>odules/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/m
>odules/genunix/memory.c#vp>))
>>>     260             stats 
><http://cvs.opensolaris.org/source/xref/onnv/onnv-gate/usr/src/cmd/mdb/common/m
>odules/genunix/memory.c#stats>->ms_anon 
><http://cvs.opensolaris.org/source/xref/onnv/onnv-gate/usr/src/cmd/mdb/common/m
>odules/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/m
>odules/genunix/memory.c#MS_PP_ISKAS>(pp 
><http://cvs.opensolaris.org/source/xref/onnv/onnv-gate/usr/src/cmd/mdb/common/m
>odules/genunix/memory.c#pp>, stats 
><http://cvs.opensolaris.org/source/xref/onnv/onnv-gate/usr/src/cmd/mdb/common/m
>odules/genunix/memory.c#stats>))
>>>     262             stats 
><http://cvs.opensolaris.org/source/xref/onnv/onnv-gate/usr/src/cmd/mdb/common/m
>odules/genunix/memory.c#stats>->ms_kmem 
><http://cvs.opensolaris.org/source/xref/onnv/onnv-gate/usr/src/cmd/mdb/common/m
>odules/genunix/memory.c#ms_kmem>++;
>>>     263     *else* *if* (vp 
><http://cvs.opensolaris.org/source/xref/onnv/onnv-gate/usr/src/cmd/mdb/common/m
>odules/genunix/memory.c#vp> && (((vp 
><http://cvs.opensolaris.org/source/xref/onnv/onnv-gate/usr/src/cmd/mdb/common/m
>odules/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/m
>odules/genunix/memory.c#stats>->ms_exec 
><http://cvs.opensolaris.org/source/xref/onnv/onnv-gate/usr/src/cmd/mdb/common/m
>odules/genunix/memory.c#ms_exec>++;
>>>     265     *else*
>>>     266             stats 
><http://cvs.opensolaris.org/source/xref/onnv/onnv-gate/usr/src/cmd/mdb/common/m
>odules/genunix/memory.c#stats>->ms_vnode 
><http://cvs.opensolaris.org/source/xref/onnv/onnv-gate/usr/src/cmd/mdb/common/m
>odules/genunix/memory.c#ms_vnode>++;
>>>     267
>>>     268     stats 
><http://cvs.opensolaris.org/source/xref/onnv/onnv-gate/usr/src/cmd/mdb/common/m
>odules/genunix/memory.c#stats>->ms_total 
><http://cvs.opensolaris.org/source/xref/onnv/onnv-gate/usr/src/cmd/mdb/common/m
>odules/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
>>
>> _______________________________________________
>> mdb-discuss mailing list
>> mdb-discuss at opensolaris.org
>>
>
>------------------------------------------------------------------------------
>
>No good can come from selling your freedom, not for all the gold in the 
>world,
>for the value of this heavenly gift far exceeds that of any fortune on earth.
>------------------------------------------------------------------------------
>

Reply via email to