From owner-svn-src-head@FreeBSD.ORG Fri Mar 8 22:56:51 2013 Return-Path: Delivered-To: svn-src-head@freebsd.org Received: from mx1.freebsd.org (mx1.FreeBSD.org [8.8.178.115]) by hub.freebsd.org (Postfix) with ESMTP id C1F945FE; Fri, 8 Mar 2013 22:56:51 +0000 (UTC) (envelope-from bright@mu.org) Received: from elvis.mu.org (elvis.mu.org [192.203.228.196]) by mx1.freebsd.org (Postfix) with ESMTP id B1651E56; Fri, 8 Mar 2013 22:56:51 +0000 (UTC) Received: from kruse-124.4.ixsystems.com (drawbridge.ixsystems.com [206.40.55.65]) by elvis.mu.org (Postfix) with ESMTPSA id 921FF1A3CBC; Fri, 8 Mar 2013 14:56:43 -0800 (PST) Message-ID: <513A6CA1.3000005@mu.org> Date: Fri, 08 Mar 2013 14:56:33 -0800 From: Alfred Perlstein User-Agent: Mozilla/5.0 (Macintosh; Intel Mac OS X 10.7; rv:17.0) Gecko/20130216 Thunderbird/17.0.3 MIME-Version: 1.0 To: Alan Cox Subject: Re: svn commit: r248031 - in head/sys: kern sys References: <201303081014.r28AEwet053196@svn.freebsd.org> <513A2B3E.2070804@rice.edu> In-Reply-To: <513A2B3E.2070804@rice.edu> Content-Type: text/plain; charset=UTF-8; format=flowed Content-Transfer-Encoding: 7bit Cc: svn-src-head@freebsd.org, svn-src-all@freebsd.org, src-committers@freebsd.org, Andre Oppermann X-BeenThere: svn-src-head@freebsd.org X-Mailman-Version: 2.1.14 Precedence: list List-Id: SVN commit messages for the src tree for head/-current List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Fri, 08 Mar 2013 22:56:51 -0000 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 >> #include >> #include >> +#include >> #include >> #include >> #include >> @@ -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) >>