Return-Path: Delivered-To: apmail-httpd-dev-archive@www.apache.org Received: (qmail 30562 invoked from network); 25 Nov 2009 16:11:22 -0000 Received: from hermes.apache.org (HELO mail.apache.org) (140.211.11.3) by minotaur.apache.org with SMTP; 25 Nov 2009 16:11:22 -0000 Received: (qmail 80942 invoked by uid 500); 25 Nov 2009 16:11:17 -0000 Delivered-To: apmail-httpd-dev-archive@httpd.apache.org Received: (qmail 80291 invoked by uid 500); 25 Nov 2009 16:11:15 -0000 Mailing-List: contact dev-help@httpd.apache.org; run by ezmlm Precedence: bulk Reply-To: dev@httpd.apache.org list-help: list-unsubscribe: List-Post: List-Id: Delivered-To: mailing list dev@httpd.apache.org Received: (qmail 80175 invoked by uid 99); 25 Nov 2009 16:11:15 -0000 Received: from athena.apache.org (HELO athena.apache.org) (140.211.11.136) by apache.org (qpsmtpd/0.29) with ESMTP; Wed, 25 Nov 2009 16:11:15 +0000 X-ASF-Spam-Status: No, hits=-2.5 required=5.0 tests=AWL,BAYES_00 X-Spam-Check-By: apache.org Received-SPF: pass (athena.apache.org: domain of trawick@gmail.com designates 209.85.160.45 as permitted sender) Received: from [209.85.160.45] (HELO mail-pw0-f45.google.com) (209.85.160.45) by apache.org (qpsmtpd/0.29) with ESMTP; Wed, 25 Nov 2009 16:11:13 +0000 Received: by pwi15 with SMTP id 15so5194742pwi.24 for ; Wed, 25 Nov 2009 08:10:53 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=gamma; h=domainkey-signature:mime-version:received:in-reply-to:references :date:message-id:subject:from:to:content-type; bh=eytKl8/4vLeN1axtzcpilDgdq5yIX2TSTWcmt6o2yDw=; b=X7VjumufyBdkDubskROrfl9JLhM28iYx/9Dom/zYsKEOoKNvp4jc/0ueXt/sDBrrbP IoVa8DrH32QvLW37XmkB+xvGCsYTQpuxItB62HViifRKBd5JHo+ZxqScTJuy9IdKNfGL EoTBe8NQpukUIChHJLEpw7EyX4OD/2s45mpBQ= DomainKey-Signature: a=rsa-sha1; c=nofws; d=gmail.com; s=gamma; h=mime-version:in-reply-to:references:date:message-id:subject:from:to :content-type; b=jlDV3/JMWo/Q0L3wV8KG3U7j0zxREnn2bxxJq4B4mFHy+y5Gu9RKuK1F7BdKyKRJF6 ImLwtGmG4Z3XtBGW0dqbutQ5ejwjSOIHgJt2SJED9KUB5HktZCpIPypoXjOLXY7+lX71 LEtRpqfS+wV/d7u7YTqmL5H2z68gMeTjTzo/U= MIME-Version: 1.0 Received: by 10.142.118.3 with SMTP id q3mr869353wfc.9.1259165452885; Wed, 25 Nov 2009 08:10:52 -0800 (PST) In-Reply-To: References: Date: Wed, 25 Nov 2009 11:10:52 -0500 Message-ID: Subject: Re: a directive to select the pollset implementation? From: Jeff Trawick To: dev@httpd.apache.org Content-Type: text/plain; charset=ISO-8859-1 On Wed, Nov 25, 2009 at 10:42 AM, Niklas Edmundsson wrote: > On Tue, 24 Nov 2009, Jeff Trawick wrote: > >> As with mutex implementations, APR pollset implementations, or the >> underlying OS support, are occasionally broken for some >> configurations; the access to multiple implementations in APR 1.4.x >> lends itself to allowing the user to specify a non-default pollset >> implementation. >> >> For example, the following could be used to work around the temporary >> epoll sysdef confusion on Linux, or (cough) the port_getn() interface >> challenges on Solaris: > > Why am I feeling that figuring out which implementation of what works or not > should be done automagically, either by configure or at startup? We'd agree with you on figuring out implementations at configure time, either by probing the system or by explicit decisions based on experience. I can't think of any startup-time decisions that would be practical; did you think of any in particular? > Enabling all these user-choices might backfire with "Oh, you're running foo > on bar. But of course you know that you should fiddle with the thingamajig, > because we were too lazy to do a configure test". Who is that a problem for, ignoring for a moment the notion that we've been offering mutex mechanism selection, albeit incomplete and inconsistent, for a number of years now because we were too lazy to do a configure test? > > I'm not being averse to tunability when it comes to selecting > implementations that performs better given somewhat equal functionality, but > when it's works-or-not I'd rather have the dysfunctional alternatives weeded > out and never exposed to the end user... Generally: 1. we (mostly while wearing our APR hats) do try to figure out appropriate implementations at build time so that no such configuration is required; in turn, we expect that most users don't need to configure mutexes or pollsets 2. some underlying mechanisms have unavoidable technical trade-offs that need to be put in the hands of the administrator if optimal performance is to be achieved 3. a lot of use cases for controlling the mutex mechanism or potentially the pollset are not seen first by developers; users have some pre-built apr/httpd in hand, encounter some unforeseen issue, and want to make it work; this can be especially painful for users who don't/can't build from source, such that it takes a while for a fix to a particular implementation bug or a new default choice to be widely distributed; in the meantime, configurability is a great help Something that works against absolute minimization of user problems is the moderately aggressive use of new system features when found at configure time, which may be required for advanced application use (e.g., Event MPM) but not necessary for casual users. Sometimes these newer features are more volatile in the early years. As most httpd and/or apr users get their code from a vendor, those vendors can easily select less risky (but sometimes lower performing or functionally reduced) mechanisms as their default.