1
0
mirror of https://git.FreeBSD.org/src.git synced 2025-01-18 15:30:21 +00:00

As far as I can tell systems that have less than 4GB are more often hurt

by prefetched than helped.  On i386 systems and systems with less than 4GB,
prefetch is now disabled by default. I've added a prefetch enable tunable, to
enable prefetching for those systems. The prefetch disable tunable will continue
to unconditionally disable prefetching.
This commit is contained in:
Kip Macy 2009-06-10 01:21:32 +00:00
parent 5986d0d274
commit 107b659450
Notes: svn2git 2020-12-20 02:59:44 +00:00
svn path=/head/; revision=193878
2 changed files with 19 additions and 0 deletions

View File

@ -158,6 +158,8 @@ static int arc_grow_retry = 60;
*/
static int arc_min_prefetch_lifespan;
extern int zfs_prefetch_disable;
extern int zfs_prefetch_enable;
static int arc_dead;
/*
@ -3549,6 +3551,19 @@ arc_init(void)
mutex_init(&zfs_write_limit_lock, NULL, MUTEX_DEFAULT, NULL);
#ifdef _KERNEL
#ifdef __i386__
if (zfs_prefetch_enable != 1) {
printf("ZFS NOTICE: prefetch is disabled by default on i386"
" - add enable to tunable to change.\n" );
zfs_prefetch_disable=1;
}
#endif
if ((((uint64_t)physmem * PAGESIZE) < (1ULL << 32)) &&
(zfs_prefetch_enable != 1) && (zfs_prefetch_disable != 1)) {
printf("ZFS NOTICE: system has less than 4GB and prefetch enable is not set"
"... disabling.\n");
zfs_prefetch_disable=1;
}
/* Warn about ZFS memory and address space requirements. */
if (((uint64_t)physmem * PAGESIZE) < (256 + 128 + 64) * (1 << 20)) {
printf("ZFS WARNING: Recommended minimum RAM size is 512MB; "

View File

@ -38,6 +38,7 @@
*/
int zfs_prefetch_disable = 0;
int zfs_prefetch_enable = 0;
/* max # of streams per zfetch */
uint32_t zfetch_max_streams = 8;
@ -52,6 +53,9 @@ SYSCTL_DECL(_vfs_zfs);
TUNABLE_INT("vfs.zfs.prefetch_disable", &zfs_prefetch_disable);
SYSCTL_INT(_vfs_zfs, OID_AUTO, prefetch_disable, CTLFLAG_RDTUN,
&zfs_prefetch_disable, 0, "Disable prefetch");
TUNABLE_INT("vfs.zfs.prefetch_enable", &zfs_prefetch_enable);
SYSCTL_INT(_vfs_zfs, OID_AUTO, prefetch_enable, CTLFLAG_RDTUN,
&zfs_prefetch_enable, 0, "Enable prefetch for systems with less than 4GB");
SYSCTL_NODE(_vfs_zfs, OID_AUTO, zfetch, CTLFLAG_RW, 0, "ZFS ZFETCH");
TUNABLE_INT("vfs.zfs.zfetch.max_streams", &zfetch_max_streams);
SYSCTL_UINT(_vfs_zfs_zfetch, OID_AUTO, max_streams, CTLFLAG_RDTUN,