Skip site navigation (1)Skip section navigation (2)
Date:      Sun, 31 Aug 2014 08:57:17 +0000
From:      "Bjoern A. Zeeb" <bz@FreeBSD.org>
To:        Steven Hartland <smh@FreeBSD.org>
Cc:        svn-src-head@freebsd.org, svn-src-all@freebsd.org, src-committers@freebsd.org
Subject:   Re: svn commit: r270861 - in head/sys/cddl: compat/opensolaris/kern compat/opensolaris/sys contrib/opensolaris/uts/common/fs/zfs
Message-ID:  <FFCC3B2B-2C25-4726-90F8-DE4248C741EC@FreeBSD.org>
In-Reply-To: <201408302144.s7ULiWsX028875@svn.freebsd.org>
References:  <201408302144.s7ULiWsX028875@svn.freebsd.org>

next in thread | previous in thread | raw e-mail | index | archive | help

On 30 Aug 2014, at 21:44 , Steven Hartland <smh@FreeBSD.org> wrote:

> Author: smh
> Date: Sat Aug 30 21:44:32 2014
> New Revision: 270861
> URL: http://svnweb.freebsd.org/changeset/base/270861
>=20
> Log:
>  Ensure that ZFS ARC free memory checks include cached pages
>=20
>  Also restore kmem_used() check for i386 as it has KVA limits that the =
raw
>  page counts above don=92t consider

I see this on pc98 and i386 buildworld:

=3D=3D=3D> 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





>=20
>  PR:		187594
>  Reviewed by:	peter
>  X-MFC-With: r270759
>  Review:	D700
>  Sponsored by:	Multiplay
>=20
> 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
>=20
> Modified: head/sys/cddl/compat/opensolaris/kern/opensolaris_kmem.c
> =
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=
=3D=3D=3D
> --- 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)
> {
>=20
> -	return (vm_cnt.v_free_count);
> +	return (vm_cnt.v_free_count + vm_cnt.v_cache_count);
> }
>=20
> u_int
> @@ -169,6 +169,13 @@ kmem_size(void)
> 	return (kmem_size_val);
> }
>=20
> +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)
> {
>=20
> Modified: head/sys/cddl/compat/opensolaris/sys/kmem.h
> =
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=
=3D=3D=3D
> --- 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);
>=20
> /*
>=20
> Modified: head/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/arc.c
> =
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=
=3D=3D=3D
> --- 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 */
>=20
> #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) =3D=3D 0)
> 		return (1);
> #endif
>=20

=97=20
Bjoern A. Zeeb             "Come on. Learn, goddamn it.", WarGames, 1983




Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?FFCC3B2B-2C25-4726-90F8-DE4248C741EC>