Date: Fri, 16 Apr 2010 16:58:11 +0300 From: Andriy Gapon <avg@icyb.net.ua> To: freebsd-fs@FreeBSD.org Subject: some arc_reclaim_needed stats Message-ID: <4BC86CF3.7060708@icyb.net.ua>
next in thread | raw e-mail | index | archive | help
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 -- Andriy Gapon
Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?4BC86CF3.7060708>