On 03/08/2013 04:14, Andre Oppermann wrote: > Author: andre > Date: Fri Mar 8 10:14:58 2013 > New Revision: 248031 > URL: http://svnweb.freebsd.org/changeset/base/248031 > > Log: > Move the auto-sizing of the callout array from init_param2() to > kern_timeout_callwheel_alloc() where it is actually used. > > This is a mechanical move and no tuning parameters are changed. > > The pre-allocated callout array is only used for legacy timeout(9) > calls and is only allocated and active on cpu0. Eventually all > remaining users of timeout(9) should switch to the callout_* API. >
In the meantime, until all legacy timeout(9) users are updated, I think that it would be wise to retain the comment that describes where the magic number 18508 comes from. Regards, Alan > Reviewed by: davide > > Modified: > head/sys/kern/kern_timeout.c > head/sys/kern/subr_param.c > head/sys/sys/callout.h > > Modified: head/sys/kern/kern_timeout.c > ============================================================================== > --- head/sys/kern/kern_timeout.c Fri Mar 8 08:19:50 2013 > (r248030) > +++ head/sys/kern/kern_timeout.c Fri Mar 8 10:14:58 2013 > (r248031) > @@ -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_mpca > 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'. > > Modified: head/sys/kern/subr_param.c > ============================================================================== > --- head/sys/kern/subr_param.c Fri Mar 8 08:19:50 2013 > (r248030) > +++ head/sys/kern/subr_param.c Fri Mar 8 10:14:58 2013 > (r248031) > @@ -91,7 +91,6 @@ int maxprocperuid; /* max # of procs p > 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 sta > > 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. > */ > > Modified: head/sys/sys/callout.h > ============================================================================== > --- head/sys/sys/callout.h Fri Mar 8 08:19:50 2013 (r248030) > +++ head/sys/sys/callout.h Fri Mar 8 10:14:58 2013 (r248031) > @@ -63,8 +63,6 @@ struct callout_handle { > }; > > #ifdef _KERNEL > -extern int ncallout; > - > #define callout_active(c) ((c)->c_flags & CALLOUT_ACTIVE) > #define callout_deactivate(c) ((c)->c_flags &= ~CALLOUT_ACTIVE) > #define callout_drain(c) _callout_stop_safe(c, 1) > _______________________________________________ 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"