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-head mailing list