svn commit: r248031 - in head/sys: kern sys

Alfred Perlstein bright at mu.org
Fri Mar 8 22:56:51 UTC 2013


Agreed,

Andre, please stop removing my comments.

-Alfred

On 3/8/13 10:17 AM, Alan Cox wrote:
> 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)
>>



More information about the svn-src-all mailing list