svn commit: r242806 - in user/alfred/9-alfred/sys: i386/include kern

Alfred Perlstein alfred at FreeBSD.org
Thu Nov 8 23:42:23 UTC 2012


Author: alfred
Date: Thu Nov  8 23:42:22 2012
New Revision: 242806
URL: http://svnweb.freebsd.org/changeset/base/242806

Log:
  Go back to basing nmbclusters on maxusers, however allow
  platform override of both limit and function.

Modified:
  user/alfred/9-alfred/sys/i386/include/vmparam.h
  user/alfred/9-alfred/sys/kern/kern_mbuf.c

Modified: user/alfred/9-alfred/sys/i386/include/vmparam.h
==============================================================================
--- user/alfred/9-alfred/sys/i386/include/vmparam.h	Thu Nov  8 23:24:02 2012	(r242805)
+++ user/alfred/9-alfred/sys/i386/include/vmparam.h	Thu Nov  8 23:42:22 2012	(r242806)
@@ -206,10 +206,9 @@
 #define VM_MAX_AUTOTUNE_MAXUSERS 384
 #endif
 
-#ifndef MAX_AUTOTUNE_NMBCLUSTERS
+#ifndef VM_MAX_AUTOTUNE_NMBCLUSTERS
 /* old maxusers max value. */
-#define MAX_AUTOTUNE_NMBCLUSTERS (1024 + 384 * 64)
+#define VM_MAX_AUTOTUNE_NMBCLUSTERS (1024 + VM_MAX_AUTOTUNE_MAXUSERS * 64)
 #endif
 
-
 #endif /* _MACHINE_VMPARAM_H_ */

Modified: user/alfred/9-alfred/sys/kern/kern_mbuf.c
==============================================================================
--- user/alfred/9-alfred/sys/kern/kern_mbuf.c	Thu Nov  8 23:24:02 2012	(r242805)
+++ user/alfred/9-alfred/sys/kern/kern_mbuf.c	Thu Nov  8 23:42:22 2012	(r242806)
@@ -102,30 +102,6 @@ int nmbjumbo9;			/* limits number of 9k 
 int nmbjumbo16;			/* limits number of 16k jumbo clusters */
 struct mbstat mbstat;
 
-static int 
-nmbclusters_from_physpages(void)
-{
-	long factor;
-	long rv;
-    
-	factor = physmem / (2 * 1024 * 1024 / PAGE_SIZE);
-	if (factor < 32)
-		factor = 32;
-	/* after 384, switch scale to 1/4 */
-	if (factor > 384)
-		factor = 384 + (factor - 384) / 4;
-	rv = 1024 + factor * 64;
-	/*
-	 * allow a platform specific override to prevent exhausting
-	 * kernel memory on large memory + small address space machines.
-	 */
-#ifdef MAX_AUTOTUNE_NMBCLUSTERS
-	if (rv > MAX_AUTOTUNE_NMBCLUSTERS)
-		rv = MAX_AUTOTUNE_NMBCLUSTERS
-#endif
-	return (rv);
-}
-
 /*
  * tunable_mbinit() has to be run before init_maxsockets() thus
  * the SYSINIT order below is SI_ORDER_MIDDLE while init_maxsockets()
@@ -137,8 +113,17 @@ tunable_mbinit(void *dummy)
 
 	/* This has to be done before VM init. */
 	TUNABLE_INT_FETCH("kern.ipc.nmbclusters", &nmbclusters);
-	if (nmbclusters == 0)
-		nmbclusters = nmbclusters_from_physpages();
+	if (nmbclusters == 0) {
+#ifdef VM_AUTOTUNE_NMBCLUSTERS
+		nmbclusters = VM_AUTOTUNE_NMBCLUSTERS;
+#else 
+		nmbclusters = 1024 + maxusers * 64;
+#endif 
+#ifdef VM_MAX_AUTOTUNE_NMBCLUSTERS
+		if (rv > VM_MAX_AUTOTUNE_NMBCLUSTERS)
+			rv = VM_MAX_AUTOTUNE_NMBCLUSTERS;
+#endif
+	}
 
 	TUNABLE_INT_FETCH("kern.ipc.nmbjumbop", &nmbjumbop);
 	if (nmbjumbop == 0)


More information about the svn-src-user mailing list