some arc_reclaim_needed stats
jhell
jhell at dataix.net
Wed Apr 21 13:04:41 UTC 2010
On 04/16/2010 09:58, Andriy Gapon wrote:
>
> I added some statistics gathering code to arc_reclaim_needed (see a diff below)
> and got these results:
>
> vfs.zfs.arc_reclaim_kmem_used: 192
> vfs.zfs.arc_reclaim_paging_target: 72505
> vfs.zfs.arc_reclaim_pages_needed: 17
> vfs.zfs.arc_reclaim_arc_c_max: 150
> vfs.zfs.arc_reclaim_needfree: 1693
>
> Are these numbers useful in any way? :-)
> What do they tell?
> Perhaps vm_paging_target() check is a bit too aggressive?
>
> Thanks!
>
>
> diff --git a/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/arc.c
> b/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/arc.c
> index ca8ffb1..6db69e1 100644
> --- a/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/arc.c
> +++ b/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/arc.c
> @@ -2040,6 +2040,24 @@ arc_shrink(void)
>
> static int needfree = 0;
>
> +static int arc_reclaim_needfree = 0;
> +static int arc_reclaim_arc_c_max = 0;
> +static int arc_reclaim_pages_needed = 0;
> +static int arc_reclaim_paging_target = 0;
> +static int arc_reclaim_kmem_used = 0;
> +
> +SYSCTL_INT(_vfs_zfs, OID_AUTO, arc_reclaim_needfree, CTLFLAG_RD,
> + &arc_reclaim_needfree, 0, "Later");
> +SYSCTL_INT(_vfs_zfs, OID_AUTO, arc_reclaim_arc_c_max, CTLFLAG_RD,
> + &arc_reclaim_arc_c_max, 0, "Later");
> +SYSCTL_INT(_vfs_zfs, OID_AUTO, arc_reclaim_pages_needed, CTLFLAG_RD,
> + &arc_reclaim_pages_needed, 0, "Later");
> +SYSCTL_INT(_vfs_zfs, OID_AUTO, arc_reclaim_paging_target, CTLFLAG_RD,
> + &arc_reclaim_paging_target, 0, "Later");
> +SYSCTL_INT(_vfs_zfs, OID_AUTO, arc_reclaim_kmem_used, CTLFLAG_RD,
> + &arc_reclaim_kmem_used, 0, "Later");
> +
> +/* XXX AVG ZFS BOOKMARK */
> static int
> arc_reclaim_needed(void)
> {
> @@ -2048,10 +2066,14 @@ arc_reclaim_needed(void)
> #endif
>
> #ifdef _KERNEL
> - if (needfree)
> + if (needfree) {
> + arc_reclaim_needfree++;
> return (1);
> - if (arc_size > arc_c_max)
> + }
> + if (arc_size > arc_c_max) {
> + arc_reclaim_arc_c_max++;
> return (1);
> + }
> if (arc_size <= arc_c_min)
> return (0);
>
> @@ -2059,8 +2081,14 @@ arc_reclaim_needed(void)
> * If pages are needed or we're within 2048 pages
> * of needing to page need to reclaim
> */
> - if (vm_pages_needed || (vm_paging_target() > -2048))
> + if (vm_pages_needed) {
> + arc_reclaim_pages_needed++;
> + return (1);
> + }
> + if ((vm_paging_target() > -2048)) {
> + arc_reclaim_paging_target++;
> return (1);
> + }
>
> #if 0
> /*
> @@ -2105,8 +2133,10 @@ arc_reclaim_needed(void)
> return (1);
> #endif
> #else
> - if (kmem_used() > (kmem_size() * 3) / 4)
> + if (kmem_used() > (kmem_size() * 3) / 4) {
> + arc_reclaim_kmem_used++;
> return (1);
> + }
> #endif
>
> #else
>
Hi Andriy,
If these are not tunable values and serve a good purpose as a stat to be
added at some point, would they not be better in kstat.zfs.misc? rather
than vfs.zfs so they can be collected with the rest of the stats via
arc_summary.pl.
Without seeing the thread "kstat.zfs.misc.arcstats.hash_collisions" I
had updated the arc_summary.pl script yesterday to include these under a
"ARC Misc" section in the output. Just a FYI in case it may be useful to
you or others.
Thanks
PS: Not a must, but anything that is ZFS (k)stats related I would
appreciate greatly being CC'd so I can properly track the improvements
and adjust the arc_summary.pl script appropriately.
Regards,
--
http://jhell.googlecode.com/files/arc_summary.pl (r59)
jhell
More information about the freebsd-fs
mailing list