Be warned. This article is not meant to be a comprehensive review or
analysis of the new Linux kernel. I only intended to lay out some of the
most important features and changes that the kernel introduces. Nevertheless,
if you have any suggestions or comments, feel free to drop me an email.

But let\’s talk a litte bit about the overall impression of this kernel
before pullig up our sleeves and taking a look at the details. Basically,
the 2.4 kernel was designed to allow our favorite operating system to
compete with the other biggies in the enterprise market. We are
talking the likes of Sun Solaris, AIX, HP-UX, IRIX and Windows 2000 here.
Linus and his team have added a whole new bunch of features that not
only improve the overall performance of the kernel, but it also makes it
possible to increase memory and file sizes to \”enterprise\” levels. In
other words, after you install this new kernel you should be able to use
it for the high demands of any e-commerce operations. Nevertheless, there
are still some changes that are quite important for desktop and workstation
users. Read on for a more detailed list.

The architecture

Perhaps the major changes introduced by this new kernel happened in the
architecture. In general, the 2.4 kernel lifts Linux into what has been
traditionally termed as the enterprise market. In other words, the
new kernel adds scalability to the operating system.

How so? Well, the 2.4 kernel scales up to 64 GB of memory if necessary,
which is undoudtedly a big step forward compared to the 2 GB limit of the
previous 2.2 kernel. Of course, one of the main applications of this major
improvement will be the use of Linux for huge databases.

Additionally, Linux 2.4 improves the support for symmetric multi-processing
(SMP). The previous kernel already included this support, but many complained
that it was not truly stable and scalable. The new kernel can work on
machines that have up to 64 processors, thus perhaps making it possible for
Linux to compete with other operating systems that have traditionally owned
the big iron market. IBM and SGI are positioned to gain quite a bit
from this move if Linux proves to be reliable enough in this field, since
they have been betting on it for a while now.

Other significant improvements are:

  • The new kernel is 64-bit ready, which means that as soon as the
    new Itanium processor is released Linux will be able to run on it. This
    could make Linux the first major operating system to run on this processor,
    and again both IBM and SGI are well positioned to benefit from this.
  • User and group IDs have been \”upgraded\” to 32-bit, which means that
    it is now possible to handle as many as 4.2 billion users and groups. Once
    more, this is a feature obviously intended for big iron systems and
    large networks, since most of us won\’t be needing this feature anytime
    soon.
  • The limit on the maximum amount of processes that can be running
    simultaneously can be configured at runtime now. This was also possible by
    using the sysctl command earlier, but the support has been
    greatly improved now.

The networking subsystem

The networking layer in the new 2.4 kernel has been improved dramatically,
in part as a reaction to the Mindcraft benchmarks of 1999. Perhaps one of
the main features added to the kernel is the wake-one capability.
In the case of the old 2.2 kernel, whenever the system detected a network
input or output event it had to wake up all the processes in order to
determine which one was waiting for the event. Now, with the 2.4 kernel,
only the one process that is waiting for the event is awaken, therefore
saving CPU cycles and improving the overall performance.

Another important feature added to the kernel is the kernel HTTP daemon or
khttpd. This is a HTTP or web daemon that has been added to the
kernel itself for speeding up the performance of web servers. Keep in
mind though that it only works for static HTML documents, and it needs to
be configured to work in conjunction with Apache or some other HTTP daemon
if you also serve dynamic pages. Some people disagreed with the idea of
adding this to the kernel, considering it some sort of unnecessary
bloatware
. However, the nice thing about an open source kernel is that
if you don\’t like it you can leave it out of the kernel. In any case,
some preliminary benchmarks have reported amazing performance improvements
when using this kernel HTTP daemon to serve pages.

Other important improvements in this field are:

  • The network filesystem (NFS) has been implemented in such a way that
    it improves compatibility with NFSv3. The one included in the 2.2 kernel
    only allowed for some partial compatibility.
  • The firewall support has been improved and overhauled by using
    netfilter
    instead of the old ipchains system. This means that
    you may have to rewrite your ipchains scripts to adapt them to the new
    kernel, but truth be told the new implementation is far more comprehensive
    and sophisticated thus consolidating the use of Linux in this field.

Filesystems

Some important features have been added to the 2.4 kernel in this field:

  • The virtual filesystem (VFS) layer has been rewritten to use only one
    cache now, instead of the separate write and read caches that 2.2 had.
  • The maximum file size has been pushed to an amazing 16 terbaytes now,
    which again improves the chances of Linux in the big iron market.
  • LIkewise, support for raw input-output has been added to the kernel,
    which allows certain applications (mainly databases) to read and write
    directly to disk bypassing the kernel, and therefore providing its own
    cache mechanisms.
  • Logical volume management has been added to the kernel, thus allowing
    users to combine multiple physical disks into a single logical disk.
  • Although no journaling filesystem has been added to the new kernel,
    there is a good chance that ReiserFS will be included in the 2.4.1 kernel
    according to the comments that I could read on the linux-kernel list. Also,
    SGI is about to release its own port to Linux of the XFS filesystem, and
    IBM is working on a port of JFS. Meanwhile, Stephen Tweedie is directing
    the efforts to release ext3, the journaling version most closely related to
    the current ext2 filesystem.

Hardware issues

Yet another subssytem that has been overhauled. In this case, the new
improvements brought into the 2.4 kernel add some needed features for home
users such as support for USB devices, together with a better scalability
for enterprise uses. The following is a short list of some of these
features:

  • Ctrl+Alt+Delete now performs a cold reboot instead of the traditional
    warm reboot. This was needed for hardware compatibility, but if you like
    the old type of reboot you can still enjoy it simply by adding a reboot=warm line to your lilo.conf file. Likewise, some systems may also need
    you to add a reboot=bios to allow reboots via BIOS.
  • Due to the use of devfs, you should now say goodbye to the old
    cua* devices. Instead of those, you should use the ttyS* syntax now.
  • Support for USB devices has been added to the kernel, although it only
    seems to work flawlessly with low-bandwidth devices such as keyboards and
    mice. USB modems and printers, on the other hand, may require a little bit
    more work to function properly.
  • The 2.4 kernel also allows to use more devices simultaneously than
    the 2.2 kernel ever did. Basically, you can add as many devices now as your
    system resources are able to take, while this was not the case before. Of
    course, this will benefit mainly the enterprise users.