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.