diff options
| -rw-r--r-- | sys/kern/kern_malloc.c | 5 | ||||
| -rw-r--r-- | sys/kern/subr_param.c | 42 | ||||
| -rw-r--r-- | sys/sys/systm.h | 1 |
3 files changed, 22 insertions, 26 deletions
diff --git a/sys/kern/kern_malloc.c b/sys/kern/kern_malloc.c index 2d8daa3103ae..a90d628f77a2 100644 --- a/sys/kern/kern_malloc.c +++ b/sys/kern/kern_malloc.c @@ -445,6 +445,11 @@ kmeminit(dummy) vm_kmem_size = 2 * cnt.v_page_count * PAGE_SIZE; /* + * Tune settings based on the kernel map's size at this time. + */ + init_param3(vm_kmem_size / PAGE_SIZE); + + /* * In mbuf_init(), we set up submaps for mbufs and clusters, in which * case we rounddown() (nmbufs * MSIZE) and (nmbclusters * MCLBYTES), * respectively. Mathematically, this means that what we do here may diff --git a/sys/kern/subr_param.c b/sys/kern/subr_param.c index 427a94a9639a..0482aa935421 100644 --- a/sys/kern/subr_param.c +++ b/sys/kern/subr_param.c @@ -135,23 +135,6 @@ void init_param2(long physpages) { - /* Kernel map size */ - int kmempages, kmemtunable; - kmempages = VM_KMEM_SIZE / PAGE_SIZE; -#if defined(VM_KMEM_SIZE_SCALE) - if ((physpages / VM_KMEM_SIZE_SCALE) > kmempages) - kmempages = (physpages / VM_KMEM_SIZE_SCALE); -#endif - -#if defined(VM_KMEM_SIZE_MAX) - if (kmempages * PAGE_SIZE >= VM_KMEM_SIZE_MAX) - kmempages = VM_KMEM_SIZE_MAX / PAGE_SIZE; -#endif - kmemtunable = 0; - TUNABLE_INT_FETCH("kern.vm.kmem.size", &kmemtunable); - if (kmemtunable != 0) - kmempages = kmemtunable / PAGE_SIZE; - kmempages = min(physpages, kmempages); /* Base parameters */ maxusers = MAXUSERS; TUNABLE_INT_FETCH("kern.maxusers", &maxusers); @@ -179,7 +162,23 @@ init_param2(long physpages) TUNABLE_INT_FETCH("kern.maxfiles", &maxfiles); maxprocperuid = (maxproc * 9) / 10; maxfilesperproc = (maxfiles * 9) / 10; + + /* + * Cannot be changed after boot. + */ + nbuf = NBUF; + TUNABLE_INT_FETCH("kern.nbuf", &nbuf); + + ncallout = 16 + maxproc + maxfiles; + TUNABLE_INT_FETCH("kern.ncallout", &ncallout); +} +/* + * Boot time overrides that are scaled against the kernel map + */ +void +init_param3(long kmempages) +{ /* * Limit number of pipes to a reasonable fraction of kmap entries, * pageable pipe memory usage to 2.5% of the kernel map, and wired @@ -196,13 +195,4 @@ init_param2(long physpages) maxpipekva = 512 * 1024; if (maxpipekvawired < 512 * 1024) maxpipekvawired = 512 * 1024; - - /* - * Cannot be changed after boot. - */ - nbuf = NBUF; - TUNABLE_INT_FETCH("kern.nbuf", &nbuf); - - ncallout = 16 + maxproc + maxfiles; - TUNABLE_INT_FETCH("kern.ncallout", &ncallout); } diff --git a/sys/sys/systm.h b/sys/sys/systm.h index 04d54cd15f42..0f7889f16024 100644 --- a/sys/sys/systm.h +++ b/sys/sys/systm.h @@ -147,6 +147,7 @@ void critical_enter(void); void critical_exit(void); void init_param1(void); void init_param2(long physpages); +void init_param3(long kmempages); void tablefull(const char *); int kvprintf(char const *, void (*)(int, void*), void *, int, __va_list) __printflike(1, 0); |
