[LWN Logo]
[LWN.net]

Sections:
 Main page
 Linux in the news
 Security
 Kernel
 Distributions
 Development
 Commerce
 Announcements
 Back page
All in one big page

See also: last week's Kernel page.

Kernel development


The current stable kernel release is 2.2.8. This patch came out on Tuesday; it contains the usual large set of small fixes (over 500 files modified) plus some larger tweaks for USB and a few other things.

2.3.0 has been released, starting a new development kernel. Of course, there was not much to talk about - 2.3.0 is identical to 2.2.8 with the exception of the version number change. Here is the combined announcement that Linus sent out for both 2.2.8 and 2.3.0. A 2.3.1 pre-patch currently exists in the testing directory; 2.3.1 could be out by the time you read this.

The problem of thundering herds. A number of different studies and articles recently have turned up performance problems with the Apache web server in very high traffic situations. Now it seems that one of the speculations which have been circulating could really be true: the Apache problem is really a "thundering herd" problem.

Thundering herds happen when you have a number of processes that are waiting for an event. When that event (a connection to the web server, say) happens, every process which could possibly handle the event is awakened. In the end, only one of those processes will actually be able to do the work, but, in the mean time, all the others wake up and contend for CPU time before being put back to sleep. Thus the system thrashes briefly while a herd of processes thunders through. If this starts to happen many times per second, the performance impact can be significant.

As an example of what can happen, Phillip Ezolt published some profiling he did of his system when it was under heavy web server load. 18% of the system's time was spent in the scheduler, presumably trying to sort through the herds.

So how does one tame the herds? The basic idea is quite straightforward: find a way to wake up only one process when an event of interest comes through. The approach favored by Linus is this: processes in certain situations can mark themselves as being "wake one capable." When the system goes to wake processes waiting on a particular event, only one "wake one capable" process is revived. The herd is no more.

The other advantage of this approach is that the system makes no assumptions about whether waking one process is sufficient. Thus, current system call semantics do not change, and situations where standards require waking multiple processes (i.e. select) still work properly.

No patches have been posted yet, but it seems likely that a "wake one" tweak will go into the system before too long. (See also the Linux Scalability Project for more development in this area).

A mailing list for the development of memory technology devices has been established, see the announcement for details.

A new site for USB development has been set up, check it out at www.linux-usb.org. (Thanks to George David Morrison).

Other patches and interesting releases this week:

  • knfsd 1.3a by H.J. Lu. People using kernel NFS service with the 2.2 kernels should probably apply this one. This patch is evidently not quite yet considered ready for incorporation into the stable kernel tree itself, even though it is, by all accounts, rather more "ready" than the code that is currently part of the 2.2 kernel.

  • Version 1.01 of the AMI MegaRAID driver. Also included is a version of their "MegaManager" online management software.

  • Devfs v99 by Richard Gooch. Richard also put out version 30 of his MTRR patch.

  • The Multi-head Mini-HOWTO by Rick Niles is out in beta form. All about how to put multiple monitors on your Linux system.

Section Editor: Jon Corbet


May 13, 1999

For other kernel news, see:

 

Next: Distributions

 
Eklektix, Inc. Linux powered! Copyright © 1999 Eklektix, Inc., all rights reserved
Linux ® is a registered trademark of Linus Torvalds