Last year, however, a study by MindCraft (www.mindcraft.com) suggested that Apache's performance in serving static HTML pages (those which are not generated by databases and server side applications) rated very poorly. The finger was pointed not only at the Apache server, but at the Linux operating system. Questions were raised in the industry as to the nature of MindCraft's ties with companies which may be threatened by the success of the Linux/Apache combination in the Web world. Regardless of this, closer examination did reveal problems with the way the Linux operating system handles large numbers of small requests on a network, and with Apache's performance serving model.
This examination led to a lot of work on the Linux networking core, as well as work commencing on a new kind of Web server. The result of these efforts is apparent in the up-and-coming Linux 2.4 release: not only does Linux now offer much faster networking, it also offers the ability to run a kernel-level Web server.
The Tux Web server has been one of the most successful projects to come from the work on Linux and Web serving. Whereas Apache is designed to run as an application, Tux is integrated into the operating system, making its performance more efficient. The reason is that it can access system resources faster because it does not have to interact with the operating system to the extent that Apache does.
Some would say that a Web server should stay an application and not encroach upon the kernel. Critics of the Linux movement go further, aligning the integration of a Web server with an operating system with the integration of a Web browser with an operating system, as was the case with Windows 98, which sparked anti-trust cases in the US and Europe against Microsoft.
The difference with Tux, and the other kernel-level Web servers (such as khttpd), is that you don't have to use them. In fact, you have to go to some effort (see below) to use them by default.
The recently released Tux 1.0 server boasts commercial quality Web serving designed to tie in with Linux 2.4 (Tux 1.0 and a 2.4 test kernel have been included on this month's CD). Recognising problems with Apache's static serving model, the Standard Performance Evaluation Corporation (SPEC) and Dell decided to use Tux 1.0 to benchmark Linux Web serving capabilities (the results can be viewed at: www.spec.org/osg/web99/results/res2000q3/web9920000710-00057.html). The Dell server had eight Intel Xeon CPUs with 32GB of RAM. Using the same benchmarking tools, SPEC found that an IBM pSeries eServer boasting 64GB of RAM, 12 64-bit CPUs and a super fast data bus which was not running Tux 1.0 performed only 12 per cent faster. Considering the Dell hardware was seriously outmatched by IBM's offering, one can be sure that Tux 1.0 offers what may be among the best performance available in the Web server industry.
Tux 1.0 is developed by Red Hat, and, in testing the software, I found that it is complicated to install on non-Red Hat systems. As such, unless you are confident with command-line fiddling under Linux, I would recommend using a Red Hat system to test Tux 1.0.
To install Tux 1.0, you will need to install the 2.4 release kernel included on the cover CD. Follow the CD instructions on the installation of each package and then reboot. On completion of installation, you will be running what is effectively Linux 2.4, ready to get a kernel Web server up and running.
If you have looked around your Linux system, you will be familiar with the /proc file system. This file system offers a means of directly interacting with the kernel. /proc is used to setup Tux 1.0.
At the command line, run the following:
echo 8080 > /proc/sys/net/http/clientport
echo 80 > /proc/sys/net/http/serverport
echo /home/www > /proc/sys/net/http/documentroot
echo 1 > /proc/sys/net/http/threads
echo 1 > /proc/sys/net/http/logging
echo php3 > /proc/sys/net/http/dynamic
tux 1 /home/www
The first line loads the Tux 1.0 module; the second sets the dynamic Web server port to 8080 (you can use Apache with Tux 1.0 to serve dynamic content by changing the Apache port number to 8080 in the httpd.conf con-figuration file); the third line sets the Tux 1.0 Web port; the fourth line sets the location of the Web pages for serving, here /home/www; the fifth to seventh lines turn on features threading, logging and PHP dynamic web pages; and, the final line starts the Web server with 1 thread and a document root of /home/www.
Tux 1.0 offers a simple in-road to the power of Linux 2.4 with a different means of Web page serving. The limitations of Tux 1.0 - it is complicated to install on non-Red Hat systems and requires a secondary Web server like Apache to serve dynamic content - do not undermine its power and efficiency. Tux addresses a hole in open source Web serving and offers to open source users and businesses alike a stable and fast Web server of commercial quality.