Return-Path: Delivered-To: apmail-httpd-dev-archive@www.apache.org Received: (qmail 70356 invoked from network); 26 Oct 2004 19:35:23 -0000 Received: from hermes.apache.org (HELO mail.apache.org) (209.237.227.199) by minotaur-2.apache.org with SMTP; 26 Oct 2004 19:35:23 -0000 Received: (qmail 8745 invoked by uid 500); 26 Oct 2004 19:34:56 -0000 Delivered-To: apmail-httpd-dev-archive@httpd.apache.org Received: (qmail 8600 invoked by uid 500); 26 Oct 2004 19:34:55 -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: Delivered-To: mailing list dev@httpd.apache.org Received: (qmail 8478 invoked by uid 99); 26 Oct 2004 19:34:53 -0000 X-ASF-Spam-Status: No, hits=0.0 required=10.0 tests=FORGED_RCVD_HELO X-Spam-Check-By: apache.org Received-SPF: pass (hermes.apache.org: local policy) Received: from [207.155.248.4] (HELO repulse.cnchost.com) (207.155.248.4) by apache.org (qpsmtpd/0.28) with ESMTP; Tue, 26 Oct 2004 12:34:52 -0700 Received: from rcsv650.rowe-clan.net (c-24-13-128-132.client.comcast.net [24.13.128.132]) by repulse.cnchost.com id PAA11091; Tue, 26 Oct 2004 15:34:49 -0400 (EDT) [ConcentricHost SMTP Relay 1.17] Errors-To: Message-Id: <6.1.2.0.2.20041026140920.02867ec0@pop3.rowe-clan.net> X-Sender: admin%rowe-clan.net@pop3.rowe-clan.net (Unverified) X-Mailer: QUALCOMM Windows Eudora Version 6.1.2.0 Date: Tue, 26 Oct 2004 14:20:53 -0500 To: dev@httpd.apache.org From: "William A. Rowe, Jr." Subject: Re: Event MPM Cc: dev@httpd.apache.org In-Reply-To: <367F12B66656DB66657E9F25@[10.0.1.57]> References: <417C653D.9070202@outoforder.cc> <367F12B66656DB66657E9F25@[10.0.1.57]> Mime-Version: 1.0 Content-Type: text/plain; charset="us-ascii" X-Virus-Checked: Checked X-Spam-Rating: minotaur-2.apache.org 1.6.2 0/1000/N At 01:59 AM 10/26/2004, Justin Erenkrantz wrote: >core_input_filter or any connection-level filter (say SSL) could be holding onto a complete request that hasn't been processed yet. The worker thread will only process one request and then put it back on the stack. But, there's certainly no reason why another request isn't already in the chain ready to be read. And, the listener/event thread will be waiting for more data to come in - but, we already read it. Oops. (And, perhaps, it's not enough to be a complete request - so it'd block defeating the purpose of the event thread - Oops again.) Justin, that's the purpose of a Poll bucket. If we introduce the concept, here's the scenario; whenever a 'speculative' or 'non blocking' read or write is attempted and fails, at whatever depth (the socket or the ssl filter itself), a metadata bucket comes back saying 'I got stuck - here! Wait on this fd/event.' With a little more clever magic, the thread handling that request would psh this request, and that poll event, back to the 'event manager', and yield to the event manager for another request (maybe the same request) to be processed. Someone cried wolf, b.t.w., about connection and request pool allocation being too tightly coupled to threads. They can be decoupled pretty painlessly, by tying an allocator to a single connection object. We can presume that request pools will be a subpool of each connection. Note - there are usually more connections than actual worker threads. Also note, clever httpd-2.0 tricks like mtmalloc can't work under this model. >FWIW, if we start to go down this route, to me this smells like 2.3 candidate work. This is likely going to snowball real fast into other areas and I'd really like to keep us close to seriously discussing 2.2 at AC in a few weeks instead of throwing HEAD into turmoil with these changes. I think you are oversimplifying. 3rd party modules expect they will remain glued to a thread. When a request can start to 'bounce' between threads, we will likely need to push to 3.0.