svn commit: r270861 - in head/sys/cddl: compat/opensolaris/kern compat/opensolaris/sys contrib/opensolaris/uts/common/fs/zfs
Bjoern A. Zeeb
bz at FreeBSD.org
Sun Aug 31 08:57:42 UTC 2014
On 30 Aug 2014, at 21:44 , Steven Hartland <smh at FreeBSD.org> wrote:
> Author: smh
> Date: Sat Aug 30 21:44:32 2014
> New Revision: 270861
> URL: http://svnweb.freebsd.org/changeset/base/270861
>
> Log:
> Ensure that ZFS ARC free memory checks include cached pages
>
> Also restore kmem_used() check for i386 as it has KVA limits that the raw
> page counts above don’t consider
I see this on pc98 and i386 buildworld:
===> cddl/usr.bin/zinject (all)
/storage/head/obj//pc98.i386/scratch/tmp/bz/head.svn/tmp/usr/lib/libzpool.so: undefined reference to `kmem_used'
cc: error: linker command failed with exit code 1 (use -v to see invocation)
--- zinject ---
*** [zinject] Error code 1
>
> PR: 187594
> Reviewed by: peter
> X-MFC-With: r270759
> Review: D700
> Sponsored by: Multiplay
>
> Modified:
> head/sys/cddl/compat/opensolaris/kern/opensolaris_kmem.c
> head/sys/cddl/compat/opensolaris/sys/kmem.h
> head/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/arc.c
>
> Modified: head/sys/cddl/compat/opensolaris/kern/opensolaris_kmem.c
> ==============================================================================
> --- head/sys/cddl/compat/opensolaris/kern/opensolaris_kmem.c Sat Aug 30 20:26:30 2014 (r270860)
> +++ head/sys/cddl/compat/opensolaris/kern/opensolaris_kmem.c Sat Aug 30 21:44:32 2014 (r270861)
> @@ -152,7 +152,7 @@ u_int
> kmem_free_count(void)
> {
>
> - return (vm_cnt.v_free_count);
> + return (vm_cnt.v_free_count + vm_cnt.v_cache_count);
> }
>
> u_int
> @@ -169,6 +169,13 @@ kmem_size(void)
> return (kmem_size_val);
> }
>
> +uint64_t
> +kmem_used(void)
> +{
> +
> + return (vmem_size(kmem_arena, VMEM_ALLOC));
> +}
> +
> static int
> kmem_std_constructor(void *mem, int size __unused, void *private, int flags)
> {
>
> Modified: head/sys/cddl/compat/opensolaris/sys/kmem.h
> ==============================================================================
> --- head/sys/cddl/compat/opensolaris/sys/kmem.h Sat Aug 30 20:26:30 2014 (r270860)
> +++ head/sys/cddl/compat/opensolaris/sys/kmem.h Sat Aug 30 21:44:32 2014 (r270861)
> @@ -66,6 +66,7 @@ typedef struct kmem_cache {
> void *zfs_kmem_alloc(size_t size, int kmflags);
> void zfs_kmem_free(void *buf, size_t size);
> uint64_t kmem_size(void);
> +uint64_t kmem_used(void);
> u_int kmem_page_count(void);
>
> /*
>
> Modified: head/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/arc.c
> ==============================================================================
> --- head/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/arc.c Sat Aug 30 20:26:30 2014 (r270860)
> +++ head/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/arc.c Sat Aug 30 21:44:32 2014 (r270861)
> @@ -2563,6 +2563,14 @@ arc_reclaim_needed(void)
> #endif /* sun */
>
> #else
> +#ifdef __i386__
> + /* i386 has KVA limits that the raw page counts above don't consider */
> + if (kmem_used() > (kmem_size() * 3) / 4) {
> + DTRACE_PROBE2(arc__reclaim_used, uint64_t,
> + kmem_used(), uint64_t, (kmem_size() * 3) / 4);
> + return (1);
> + }
> +#endif
> if (spa_get_random(100) == 0)
> return (1);
> #endif
>
—
Bjoern A. Zeeb "Come on. Learn, goddamn it.", WarGames, 1983
More information about the svn-src-all
mailing list