summaryrefslogtreecommitdiffstats
path: root/sys/kern
diff options
context:
space:
mode:
Diffstat (limited to 'sys/kern')
-rw-r--r--sys/kern/kern_timeout.c14
-rw-r--r--sys/kern/subr_param.c12
2 files changed, 14 insertions, 12 deletions
diff --git a/sys/kern/kern_timeout.c b/sys/kern/kern_timeout.c
index df459cd..ecc65fc 100644
--- a/sys/kern/kern_timeout.c
+++ b/sys/kern/kern_timeout.c
@@ -47,6 +47,7 @@ __FBSDID("$FreeBSD$");
#include <sys/systm.h>
#include <sys/bus.h>
#include <sys/callout.h>
+#include <sys/file.h>
#include <sys/interrupt.h>
#include <sys/kernel.h>
#include <sys/ktr.h>
@@ -101,6 +102,11 @@ SYSCTL_INT(_debug, OID_AUTO, to_avg_mpcalls_dir, CTLFLAG_RD, &avg_mpcalls_dir,
0, "Average number of MP direct callouts made per callout_process call. "
"Units = 1/1000");
#endif
+
+static int ncallout;
+SYSCTL_INT(_kern, OID_AUTO, ncallout, CTLFLAG_RDTUN, &ncallout, 0,
+ "Number of entries in callwheel and size of timeout() preallocation");
+
/*
* TODO:
* allocate more timeout table slots when table overflows.
@@ -252,6 +258,14 @@ kern_timeout_callwheel_alloc(caddr_t v)
timeout_cpu = PCPU_GET(cpuid);
cc = CC_CPU(timeout_cpu);
+
+ /*
+ * Calculate the size of the callout wheel and the preallocated
+ * timeout() structures.
+ */
+ ncallout = imin(16 + maxproc + maxfiles, 18508);
+ TUNABLE_INT_FETCH("kern.ncallout", &ncallout);
+
/*
* Calculate callout wheel size, should be next power of two higher
* than 'ncallout'.
diff --git a/sys/kern/subr_param.c b/sys/kern/subr_param.c
index 0a3580b..825a3a0 100644
--- a/sys/kern/subr_param.c
+++ b/sys/kern/subr_param.c
@@ -91,7 +91,6 @@ int maxprocperuid; /* max # of procs per user */
int maxfiles; /* sys. wide open files limit */
int maxfilesperproc; /* per-proc open files limit */
int msgbufsize; /* size of kernel message buffer */
-int ncallout; /* maximum # of timer events */
int nbuf;
int ngroups_max; /* max # groups per process */
int nswbuf;
@@ -109,8 +108,6 @@ u_long sgrowsiz; /* amount to grow stack */
SYSCTL_INT(_kern, OID_AUTO, hz, CTLFLAG_RDTUN, &hz, 0,
"Number of clock ticks per second");
-SYSCTL_INT(_kern, OID_AUTO, ncallout, CTLFLAG_RDTUN, &ncallout, 0,
- "Number of pre-allocated timer events");
SYSCTL_INT(_kern, OID_AUTO, nbuf, CTLFLAG_RDTUN, &nbuf, 0,
"Number of buffers in the buffer cache");
SYSCTL_INT(_kern, OID_AUTO, nswbuf, CTLFLAG_RDTUN, &nswbuf, 0,
@@ -327,15 +324,6 @@ init_param2(long physpages)
TUNABLE_INT_FETCH("kern.nbuf", &nbuf);
/*
- * XXX: Does the callout wheel have to be so big?
- *
- * Clip callout to result of previous function of maxusers maximum
- * 384. This is still huge, but acceptable.
- */
- ncallout = imin(16 + maxproc + maxfiles, 18508);
- TUNABLE_INT_FETCH("kern.ncallout", &ncallout);
-
- /*
* The default for maxpipekva is min(1/64 of the kernel address space,
* max(1/64 of main memory, 512KB)). See sys_pipe.c for more details.
*/
OpenPOWER on IntegriCloud