Mailing List Archive

cvs commit: apache-1.3/htdocs/manual/misc perf-tuning.html
dgaudet 98/05/09 17:11:14

Modified: htdocs/manual/misc perf-tuning.html
Log:
update with a few more links

Revision Changes Path
1.10 +35 -4 apache-1.3/htdocs/manual/misc/perf-tuning.html

Index: perf-tuning.html
===================================================================
RCS file: /export/home/cvs/apache-1.3/htdocs/manual/misc/perf-tuning.html,v
retrieving revision 1.9
retrieving revision 1.10
diff -u -r1.9 -r1.10
--- perf-tuning.html 1998/03/03 01:21:56 1.9
+++ perf-tuning.html 1998/05/10 00:11:14 1.10
@@ -238,7 +238,7 @@
web server uses multiple <CODE>Listen</CODE> statements to listen on
either multiple ports or multiple addresses. In order to test each
socket to see if a connection is ready Apache uses <CODE>select(2)</CODE>.
-<CODE>select(2)</CODE> indicates that a socket has <EM>none</EM> or
+<CODE>select(2)</CODE> indicates that a socket has <EM>zero</EM> or
<EM>at least one</EM> connection waiting on it. Apache's model includes
multiple children, and all the idle ones test for new connections at the
same time. A naive implementation looks something like this
@@ -647,7 +647,8 @@
properly implement the HTTP protocol. The second occurs because the
Common Log Format dictates that the log record include a timestamp of the
end of the request. A custom logging module could eliminate one of the
-calls.
+calls. Or you can use a method which moves the time into shared memory,
+see the <a href="#patches">patches section below</a>.

<P>As described earlier, <CODE>Rule STATUS=yes</CODE> causes two
<CODE>gettimeofday</CODE> calls and a call to <CODE>times</CODE>:
@@ -782,6 +783,29 @@
That's 19 system calls, of which 4 remain relatively easy to remove,
but don't seem worth the effort.

+<h3><a name="patches">Appendix: Patches Available</a></h3>
+
+There are
+<a href="http://www.arctic.org/~dgaudet/apache/1.3/">
+several performance patches available for 1.3.</a> But they may
+be slightly out of date by the time Apache 1.3.0 has been released,
+it shouldn't be difficult for someone with a little C knowledge to
+update them. In particular:
+
+<ul>
+<li>A
+<a href="http://www.arctic.org/~dgaudet/apache/1.3/shared_time.patch">
+patch</a> to remove all <code>time(2)</code> system calls.
+<li>A
+<a href="http://www.arctic.org/~dgaudet/apache/1.3/mod_include_speedups.patch">
+patch</a> to remove various system calls from <code>mod_include</code>,
+these calls are used by few sites but required for backwards compatibility.
+<li>A
+<a href="http://www.arctic.org/~dgaudet/apache/1.3/top_fuel.patch">
+patch</a> which integrates the above two plus a few other speedups at the
+cost of removing some functionality.
+</ul>
+
<H3>Appendix: The Pre-Forking Model</H3>

<P>Apache (on Unix) is a <EM>pre-forking</EM> model server. The
@@ -819,9 +843,16 @@

<P>Apache's core code is already multithread aware, and Apache version
1.3 is multithreaded on NT. There have been at least two other experimental
-implementations of threaded Apache (one using the 1.3 code base on DCE,
+implementations of threaded Apache, one using the 1.3 code base on DCE,
and one using a custom user-level threads package and the 1.0 code base,
-neither are available publically). Part of our redesign for version 2.0
+neither are available publically. There is also an experimental port of
+Apache 1.3 to <a href="http://www.mozilla.org/docs/refList/refNSPR/">
+Netscape's Portable Run Time</a>, which
+<a href="http://www.arctic.org/~dgaudet/apache/2.0/">is available</a>
+(but you're encouraged to join the
+<a href="http://dev.apache.org/mailing-lists">new-httpd mailing list</a>
+if you intend to use it).
+Part of our redesign for version 2.0
of Apache will include abstractions of the server model so that we
can continue to support the pre-forking model, and also support various
threaded models.