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 thesysctlcommand 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 areboot=warmline to your lilo.conf file. Likewise, some systems may also need
you to add areboot=biosto 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 thettyS*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.






























