Allow maxusers to be specified as 0 in the kernel config, which will
cause the system to auto-size to between 32 and 512 depending on the amount of memory. MFC after: 1 week
This commit is contained in:
parent
c03b8e5e60
commit
66a11b9fb1
@ -556,7 +556,7 @@ alpha_init(pfn, ptb, bim, bip, biv)
|
||||
kern_envp = bootinfo.envp;
|
||||
|
||||
/* Do basic tuning, hz etc */
|
||||
init_param();
|
||||
init_param1();
|
||||
|
||||
/*
|
||||
* Initalize the (temporary) bootstrap console interface, so
|
||||
@ -861,6 +861,7 @@ alpha_init(pfn, ptb, bim, bip, biv)
|
||||
physmem -= (sz - nsz);
|
||||
}
|
||||
}
|
||||
init_param2(physmem);
|
||||
|
||||
/*
|
||||
* Initialize error message buffer (at end of core).
|
||||
|
@ -25,7 +25,7 @@ machine alpha
|
||||
cpu EV4
|
||||
cpu EV5
|
||||
ident GENERIC
|
||||
maxusers 32
|
||||
maxusers 0
|
||||
|
||||
#To statically compile in device wiring instead of /boot/device.hints
|
||||
#hints "GENERIC.hints"
|
||||
|
@ -25,7 +25,7 @@ machine alpha
|
||||
cpu EV4
|
||||
cpu EV5
|
||||
ident GENERIC
|
||||
maxusers 32
|
||||
maxusers 0
|
||||
|
||||
#To statically compile in device wiring instead of /boot/device.hints
|
||||
#hints "GENERIC.hints"
|
||||
|
@ -1692,7 +1692,7 @@ init386(first)
|
||||
kern_envp = (caddr_t)bootinfo.bi_envp + KERNBASE;
|
||||
|
||||
/* Init basic tunables, hz etc */
|
||||
init_param();
|
||||
init_param1();
|
||||
|
||||
/*
|
||||
* make gdt memory segments, the code segment goes up to end of the
|
||||
@ -1869,6 +1869,7 @@ init386(first)
|
||||
|
||||
vm86_initialize();
|
||||
getmemsize(first);
|
||||
init_param2(physmem);
|
||||
|
||||
/* now running on new page tables, configured,and u/iom is accessible */
|
||||
|
||||
|
@ -22,7 +22,7 @@ cpu I486_CPU
|
||||
cpu I586_CPU
|
||||
cpu I686_CPU
|
||||
ident GENERIC
|
||||
maxusers 32
|
||||
maxusers 0
|
||||
|
||||
#To statically compile in device wiring instead of /boot/device.hints
|
||||
#hints "GENERIC.hints" #Default places to look for devices.
|
||||
|
@ -22,7 +22,7 @@ cpu I486_CPU
|
||||
cpu I586_CPU
|
||||
cpu I686_CPU
|
||||
ident GENERIC
|
||||
maxusers 32
|
||||
maxusers 0
|
||||
|
||||
#To statically compile in device wiring instead of /boot/device.hints
|
||||
#hints "GENERIC.hints" #Default places to look for devices.
|
||||
|
@ -26,7 +26,7 @@ cpu I486_CPU
|
||||
cpu I586_CPU
|
||||
cpu I686_CPU
|
||||
ident NEWCARD
|
||||
maxusers 32
|
||||
maxusers 0
|
||||
|
||||
#To statically compile in device wiring instead of /boot/device.hints
|
||||
#hints "NEWCARD.hints" #Default places to look for devices.
|
||||
|
@ -1692,7 +1692,7 @@ init386(first)
|
||||
kern_envp = (caddr_t)bootinfo.bi_envp + KERNBASE;
|
||||
|
||||
/* Init basic tunables, hz etc */
|
||||
init_param();
|
||||
init_param1();
|
||||
|
||||
/*
|
||||
* make gdt memory segments, the code segment goes up to end of the
|
||||
@ -1869,6 +1869,7 @@ init386(first)
|
||||
|
||||
vm86_initialize();
|
||||
getmemsize(first);
|
||||
init_param2(physmem);
|
||||
|
||||
/* now running on new page tables, configured,and u/iom is accessible */
|
||||
|
||||
|
@ -24,7 +24,7 @@
|
||||
machine ia64
|
||||
cpu ITANIUM
|
||||
ident GENERIC
|
||||
maxusers 32
|
||||
maxusers 0
|
||||
|
||||
#To statically compile in device wiring instead of /boot/device.hints
|
||||
#hints "GENERIC.hints"
|
||||
|
@ -523,7 +523,7 @@ ia64_init(u_int64_t arg1, u_int64_t arg2)
|
||||
fpswa_interface = (FPSWA_INTERFACE*)IA64_PHYS_TO_RR7(bootinfo.bi_fpswa);
|
||||
|
||||
/* Init basic tunables, including hz */
|
||||
init_param();
|
||||
init_param1();
|
||||
|
||||
p = getenv("kernelname");
|
||||
if (p)
|
||||
@ -623,6 +623,7 @@ ia64_init(u_int64_t arg1, u_int64_t arg2)
|
||||
phys_avail[phys_avail_cnt] = 0;
|
||||
|
||||
Maxmem = physmem;
|
||||
init_param2(physmem);
|
||||
|
||||
/*
|
||||
* Initialize error message buffer (at end of core).
|
||||
|
@ -91,31 +91,17 @@ u_quad_t sgrowsiz; /* amount to grow stack */
|
||||
struct buf *swbuf;
|
||||
|
||||
/*
|
||||
* Boot time overrides
|
||||
* Boot time overrides that are not scaled against main memory
|
||||
*/
|
||||
void
|
||||
init_param(void)
|
||||
init_param1(void)
|
||||
{
|
||||
|
||||
/* Base parameters */
|
||||
maxusers = MAXUSERS;
|
||||
TUNABLE_INT_FETCH("kern.maxusers", &maxusers);
|
||||
hz = HZ;
|
||||
TUNABLE_INT_FETCH("kern.hz", &hz);
|
||||
tick = 1000000 / hz;
|
||||
tickadj = howmany(30000, 60 * hz); /* can adjust 30ms in 60s */
|
||||
|
||||
/* The following can be overridden after boot via sysctl */
|
||||
maxproc = NPROC;
|
||||
TUNABLE_INT_FETCH("kern.maxproc", &maxproc);
|
||||
maxfiles = MAXFILES;
|
||||
TUNABLE_INT_FETCH("kern.maxfiles", &maxfiles);
|
||||
maxprocperuid = maxproc - 1;
|
||||
maxfilesperproc = maxfiles;
|
||||
|
||||
/* Cannot be changed after boot */
|
||||
nbuf = NBUF;
|
||||
TUNABLE_INT_FETCH("kern.nbuf", &nbuf);
|
||||
#ifdef VM_SWZONE_SIZE_MAX
|
||||
maxswzone = VM_SWZONE_SIZE_MAX;
|
||||
#endif
|
||||
@ -124,8 +110,6 @@ init_param(void)
|
||||
maxbcache = VM_BCACHE_SIZE_MAX;
|
||||
#endif
|
||||
TUNABLE_INT_FETCH("kern.maxbcache", &maxbcache);
|
||||
ncallout = 16 + maxproc + maxfiles;
|
||||
TUNABLE_INT_FETCH("kern.ncallout", &ncallout);
|
||||
|
||||
maxtsiz = MAXTSIZ;
|
||||
TUNABLE_QUAD_FETCH("kern.maxtsiz", &maxtsiz);
|
||||
@ -140,3 +124,41 @@ init_param(void)
|
||||
sgrowsiz = SGROWSIZ;
|
||||
TUNABLE_QUAD_FETCH("kern.sgrowsiz", &sgrowsiz);
|
||||
}
|
||||
|
||||
/*
|
||||
* Boot time overrides that are scaled against main memory
|
||||
*/
|
||||
void
|
||||
init_param2(int physpages)
|
||||
{
|
||||
|
||||
/* Base parameters */
|
||||
if ((maxusers = MAXUSERS) == 0) {
|
||||
maxusers = physpages / (1024 * 1024 / PAGE_SIZE);
|
||||
if (maxusers < 32)
|
||||
maxusers = 32;
|
||||
if (maxusers > 512)
|
||||
maxusers = 512;
|
||||
}
|
||||
TUNABLE_INT_FETCH("kern.maxusers", &maxusers);
|
||||
|
||||
/*
|
||||
* The following can be overridden after boot via sysctl. Note:
|
||||
* unless overriden, these macros are ultimately based on maxusers.
|
||||
*/
|
||||
maxproc = NPROC;
|
||||
TUNABLE_INT_FETCH("kern.maxproc", &maxproc);
|
||||
maxfiles = MAXFILES;
|
||||
TUNABLE_INT_FETCH("kern.maxfiles", &maxfiles);
|
||||
maxprocperuid = maxproc - 1;
|
||||
maxfilesperproc = maxfiles;
|
||||
|
||||
/*
|
||||
* Cannot be changed after boot.
|
||||
*/
|
||||
nbuf = NBUF;
|
||||
TUNABLE_INT_FETCH("kern.nbuf", &nbuf);
|
||||
|
||||
ncallout = 16 + maxproc + maxfiles;
|
||||
TUNABLE_INT_FETCH("kern.ncallout", &ncallout);
|
||||
}
|
||||
|
@ -23,7 +23,7 @@ cpu I486_CPU
|
||||
cpu I586_CPU
|
||||
cpu I686_CPU
|
||||
ident GENERIC
|
||||
maxusers 32
|
||||
maxusers 0
|
||||
|
||||
#To statically compile in device wiring instead of /boot/device.hints
|
||||
#hints "GENERIC.hints" #Default places to look for devices.
|
||||
|
@ -1756,7 +1756,7 @@ init386(first)
|
||||
kern_envp = (caddr_t)bootinfo.bi_envp + KERNBASE;
|
||||
|
||||
/* Init basic tunables, hz etc */
|
||||
init_param();
|
||||
init_param1();
|
||||
|
||||
/*
|
||||
* make gdt memory segments, the code segment goes up to end of the
|
||||
@ -1933,6 +1933,7 @@ init386(first)
|
||||
|
||||
vm86_initialize();
|
||||
getmemsize(first);
|
||||
init_param2(physmem);
|
||||
|
||||
/* now running on new page tables, configured,and u/iom is accessible */
|
||||
|
||||
|
@ -1756,7 +1756,7 @@ init386(first)
|
||||
kern_envp = (caddr_t)bootinfo.bi_envp + KERNBASE;
|
||||
|
||||
/* Init basic tunables, hz etc */
|
||||
init_param();
|
||||
init_param1();
|
||||
|
||||
/*
|
||||
* make gdt memory segments, the code segment goes up to end of the
|
||||
@ -1933,6 +1933,7 @@ init386(first)
|
||||
|
||||
vm86_initialize();
|
||||
getmemsize(first);
|
||||
init_param2(physmem);
|
||||
|
||||
/* now running on new page tables, configured,and u/iom is accessible */
|
||||
|
||||
|
@ -436,7 +436,8 @@ powerpc_init(u_int startkernel, u_int endkernel, u_int basekernel, char *args)
|
||||
__asm ("mtsprg 0, %0" :: "r"(globalp));
|
||||
|
||||
/* Init basic tunables, hz etc */
|
||||
init_param();
|
||||
init_param1();
|
||||
init_param2(physmem);
|
||||
|
||||
/* setup curproc so the mutexes work */
|
||||
|
||||
|
@ -20,7 +20,7 @@
|
||||
machine powerpc
|
||||
cpu MPC750
|
||||
ident GENERIC
|
||||
maxusers 32
|
||||
maxusers 0
|
||||
|
||||
#To statically compile in device wiring instead of /boot/device.hints
|
||||
#hints "GENERIC.hints"
|
||||
|
@ -436,7 +436,8 @@ powerpc_init(u_int startkernel, u_int endkernel, u_int basekernel, char *args)
|
||||
__asm ("mtsprg 0, %0" :: "r"(globalp));
|
||||
|
||||
/* Init basic tunables, hz etc */
|
||||
init_param();
|
||||
init_param1();
|
||||
init_param2(physmem);
|
||||
|
||||
/* setup curproc so the mutexes work */
|
||||
|
||||
|
@ -24,7 +24,7 @@
|
||||
machine sparc64
|
||||
cpu SUN4U
|
||||
ident GENERIC
|
||||
maxusers 32
|
||||
maxusers 0
|
||||
|
||||
#To statically compile in device wiring instead of /boot/device.hints
|
||||
#hints "GENERIC.hints" #Default places to look for devices.
|
||||
|
@ -249,10 +249,15 @@ sparc64_init(caddr_t mdp, ofw_vec_t *vec)
|
||||
end = (vm_offset_t)_end;
|
||||
}
|
||||
|
||||
/*
|
||||
* XXX calculate physmem
|
||||
*/
|
||||
|
||||
/*
|
||||
* Initialize tunables.
|
||||
*/
|
||||
init_param();
|
||||
init_param1();
|
||||
init_param2(physmem);
|
||||
|
||||
#ifdef DDB
|
||||
kdb_init();
|
||||
|
@ -121,7 +121,8 @@ void *phashinit __P((int count, struct malloc_type *type, u_long *nentries));
|
||||
|
||||
void cpu_boot __P((int));
|
||||
void cpu_rootconf __P((void));
|
||||
void init_param __P((void));
|
||||
void init_param1 __P((void));
|
||||
void init_param2 __P((int physpages));
|
||||
void tablefull __P((const char *));
|
||||
int kvprintf __P((char const *, void (*)(int, void*), void *, int,
|
||||
_BSD_VA_LIST_)) __printflike(1, 0);
|
||||
|
@ -81,8 +81,7 @@ options(void)
|
||||
}
|
||||
|
||||
if (maxusers == 0) {
|
||||
printf("maxusers not specified; %d assumed\n", users.u_default);
|
||||
maxusers = users.u_default;
|
||||
/* printf("maxusers not specified; will auto-size\n"); */
|
||||
} else if (maxusers < users.u_min) {
|
||||
printf("minimum of %d maxusers assumed\n", users.u_min);
|
||||
maxusers = users.u_min;
|
||||
|
Loading…
Reference in New Issue
Block a user