From owner-freebsd-current@FreeBSD.ORG Tue Jun 1 15:47:15 2010 Return-Path: Delivered-To: freebsd-current@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:4f8:fff6::34]) by hub.freebsd.org (Postfix) with ESMTP id 3D38310656EF; Tue, 1 Jun 2010 15:47:14 +0000 (UTC) (envelope-from jhb@freebsd.org) Received: from cyrus.watson.org (cyrus.watson.org [65.122.17.42]) by mx1.freebsd.org (Postfix) with ESMTP id 4E58F8FC21; Tue, 1 Jun 2010 15:47:14 +0000 (UTC) Received: from bigwig.baldwin.cx (66.111.2.69.static.nyinternet.net [66.111.2.69]) by cyrus.watson.org (Postfix) with ESMTPSA id 7F99646C10; Tue, 1 Jun 2010 11:47:13 -0400 (EDT) Received: from jhbbsd.localnet (smtp.hudson-trading.com [209.249.190.9]) by bigwig.baldwin.cx (Postfix) with ESMTPA id B15F98A021; Tue, 1 Jun 2010 11:47:12 -0400 (EDT) From: John Baldwin To: freebsd-current@freebsd.org Date: Tue, 1 Jun 2010 11:41:09 -0400 User-Agent: KMail/1.12.1 (FreeBSD/7.3-CBSD-20100217; KDE/4.3.1; amd64; ; ) References: <20100530143034.GH43302@hades.panopticon> <20100530150622.GJ83316@deviant.kiev.zoral.com.ua> In-Reply-To: <20100530150622.GJ83316@deviant.kiev.zoral.com.ua> MIME-Version: 1.0 Content-Type: Text/Plain; charset="iso-8859-15" Content-Transfer-Encoding: 7bit Message-Id: <201006011141.09699.jhb@freebsd.org> X-Greylist: Sender succeeded SMTP AUTH, not delayed by milter-greylist-4.0.1 (bigwig.baldwin.cx); Tue, 01 Jun 2010 11:47:12 -0400 (EDT) X-Virus-Scanned: clamav-milter 0.95.1 at bigwig.baldwin.cx X-Virus-Status: Clean X-Spam-Status: No, score=-2.5 required=4.2 tests=AWL,BAYES_00 autolearn=ham version=3.2.5 X-Spam-Checker-Version: SpamAssassin 3.2.5 (2008-06-10) on bigwig.baldwin.cx Cc: Kostik Belousov , Dmitry Marakasov , freebsd-stable@freebsd.org Subject: Re: need better POSIX semaphore support X-BeenThere: freebsd-current@freebsd.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: Discussions about the use of FreeBSD-current List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Tue, 01 Jun 2010 15:47:15 -0000 On Sunday 30 May 2010 11:06:22 am Kostik Belousov wrote: > On Sun, May 30, 2010 at 06:30:35PM +0400, Dmitry Marakasov wrote: > > Hi! > > > > Not long ago, POSIX semaphores support was enabled by default as it's > > becoming more widely used, by e.g. firefox. However, the support > > for these is still incomplete: we only have systemwide limit of 30 > > semaphores, and that doesn't seem to be configurable neither online with > > sysctl, nor at boottime from loader.conf. I only was able to raise > > semaphore count by changing SEM_MAX in kernel sources. > > > > The real appliaction which needs more semaphores is lightspark > > (graphics/lightspark-devel) flash plugin - it uses ~40 sems for simple > > clips and ~250 for something like youtube videos. > > > > Until there more apps that require proper semaphore support, I guess > > we need to improve it asap. Given the amount of memory used by ksem, > > the least can be done is SEM_MAX bumped up to 5120 or so for > > non-embedded kernels. 5120 semaphores require just 644k of kernel > > memory (judging by vmstat), and is "ought to be enough for anybody". > > Another good thing would be to make it configurable at boot-time > > or even better in runtime. > > HEAD contains different implementation. Apparently, it did not made > into stable/8 yet, so it will not appear in the 8.1. The one thing I don't like about this approach is you can write the variable even when sem.ko isn't loaded. The SEM_* values should really only exist when sem.ko is loaded I think, which requires moving them into uipc_sem.c. > Try this, I could try to squeeze it into 8.1. > > diff --git a/sys/kern/posix4_mib.c b/sys/kern/posix4_mib.c > index 5242b31..41e28da 100644 > --- a/sys/kern/posix4_mib.c > +++ b/sys/kern/posix4_mib.c > @@ -57,6 +57,9 @@ SYSCTL_DECL(_p1003_1b); > #define P1B_SYSCTL(num, name) \ > SYSCTL_INT(_p1003_1b, num, \ > name, CTLFLAG_RD, facility + num - 1, 0, ""); > +#define P1B_SYSCTL_RW(num, name) \ > +SYSCTL_INT(_p1003_1b, num, \ > + name, CTLFLAG_RW, facility + num - 1, 0, ""); > > #else > > @@ -65,6 +68,9 @@ SYSCTL_DECL(_kern_p1003_1b); > #define P1B_SYSCTL(num, name) \ > SYSCTL_INT(_kern_p1003_1b, OID_AUTO, \ > name, CTLFLAG_RD, facility + num - 1, 0, ""); > +#define P1B_SYSCTL_RW(num, name) \ > +SYSCTL_INT(_kern_p1003_1b, OID_AUTO, \ > + name, CTLFLAG_RW, facility + num - 1, 0, ""); > SYSCTL_NODE(_kern, OID_AUTO, p1003_1b, CTLFLAG_RW, 0, "P1003.1B"); > > #endif > @@ -91,7 +97,7 @@ P1B_SYSCTL(CTL_P1003_1B_DELAYTIMER_MAX, delaytimer_max); > P1B_SYSCTL(CTL_P1003_1B_MQ_OPEN_MAX, mq_open_max); > P1B_SYSCTL(CTL_P1003_1B_PAGESIZE, pagesize); > P1B_SYSCTL(CTL_P1003_1B_RTSIG_MAX, rtsig_max); > -P1B_SYSCTL(CTL_P1003_1B_SEM_NSEMS_MAX, sem_nsems_max); > +P1B_SYSCTL_RW(CTL_P1003_1B_SEM_NSEMS_MAX, sem_nsems_max); > P1B_SYSCTL(CTL_P1003_1B_SEM_VALUE_MAX, sem_value_max); > P1B_SYSCTL(CTL_P1003_1B_SIGQUEUE_MAX, sigqueue_max); > P1B_SYSCTL(CTL_P1003_1B_TIMER_MAX, timer_max); > -- John Baldwin