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 developmentThe 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:
Section Editor: Jon Corbet |
May 13, 1999
| |