Author: ivoras
Date: Mon Oct 25 21:46:23 2010
New Revision: 214359
URL: http://svn.freebsd.org/changeset/base/214359

Log:
  Bring vfs.ufs.dirhash_maxmem into the age of the fruitbat and make it
  autotuned. It is only an upper bound (the memory is not always allocated)
  and the system contains a vm_lowmem handler so nothing will crash and burn
  if it's tuned too high.
  
  Reviewed by:  mckusick

Modified:
  head/sys/ufs/ufs/ufs_dirhash.c

Modified: head/sys/ufs/ufs/ufs_dirhash.c
==============================================================================
--- head/sys/ufs/ufs/ufs_dirhash.c      Mon Oct 25 20:52:33 2010        
(r214358)
+++ head/sys/ufs/ufs/ufs_dirhash.c      Mon Oct 25 21:46:23 2010        
(r214359)
@@ -72,7 +72,8 @@ static int ufs_mindirhashsize = DIRBLKSI
 SYSCTL_INT(_vfs_ufs, OID_AUTO, dirhash_minsize, CTLFLAG_RW,
     &ufs_mindirhashsize,
     0, "minimum directory size in bytes for which to use hashed lookup");
-static int ufs_dirhashmaxmem = 2 * 1024 * 1024;
+static int ufs_dirhashmaxmem = 2 * 1024 * 1024;        /* NOTE: initial value. 
It is
+                                                  tuned in ufsdirhash_init() */
 SYSCTL_INT(_vfs_ufs, OID_AUTO, dirhash_maxmem, CTLFLAG_RW, &ufs_dirhashmaxmem,
     0, "maximum allowed dirhash memory usage");
 static int ufs_dirhashmem;
@@ -1290,6 +1291,9 @@ ufsdirhash_lowmem()
 void
 ufsdirhash_init()
 {
+       ufs_dirhashmaxmem = lmax(roundup(hibufspace / 64, PAGE_SIZE),
+           2 * 1024 * 1024);
+
        ufsdirhash_zone = uma_zcreate("DIRHASH", DH_NBLKOFF * sizeof(doff_t),
            NULL, NULL, NULL, NULL, UMA_ALIGN_PTR, 0);
        mtx_init(&ufsdirhash_mtx, "dirhash list", NULL, MTX_DEF);
_______________________________________________
svn-src-all@freebsd.org mailing list
http://lists.freebsd.org/mailman/listinfo/svn-src-all
To unsubscribe, send any mail to "svn-src-all-unsubscr...@freebsd.org"

Reply via email to