While Linus took a week off, Andrew Morton maintained a "merge candidate"
tree full of patches which were to be added to the mainline on Linus's
return. Linus is back; he has been quiet on linux-kernel, but his
BitKeeper repository shows that he has been busy: over 700 patches have
been merged in the first half of this week. Quite a few of these are
significant; there will be a lot of changes in the 2.6.6 kernel. Here's a
quick list of some of the more important additions.
The usual pile of architecture updates, including x86_64, PPC, ARM,
ia64, m68k-noMMU, S/390, and others.
Changes to the ext2 and ext3 filesystems which provide significant
speedups for the fsync() and fdatasync() calls.
Various other performance improvements have been added to those
filesystems as well.
The addition of the fcntl() method to the
file_operations structure (see the March 24 Kernel Page).
The "laptop mode" patch. This patch has evolved somewhat since we
last looked at it, but
the basic idea remains the same: avoid spinning up the disk whenever
possible, but, when you do have to perform disk activity, do
everything you can.
4KB kernel stacks for the i386 architecture. This patch reduces the
kernel's per-process overhead, which is useful for people trying to
run thousands of threads. It also removes one of the few places where
the kernel needs to allocate multiple, physically-contiguous pages.
In 2.6.6, there is a configuration option allowing the continued use
of 8KB stacks, though the plan is to eventually remove this option.
The configured stack size is stored in modules, so it will not be
possible to load a module which was built for the wrong size stack.
Non-executable stack support for several architectures. This is not
the full "Exec shield" patch from Ingo Molnar, though parts of that
patch appear here.
A big reiserfs update, including data=ordered support, space
preallocation, laptop mode support, and more.
A mechanism which allows block drivers to respond to queries about the
congestion state of their queues. This is useful for higher-level
drivers (i.e. the device mapper) which have a complicated queue state.
The per-device unplugging patch which
makes some significant changes to the block layer, but which yields
significant performance improvements. This patch has evolved a lot
since it was originally posted, mostly to deal with complexities in
the device mapper, RAID, and swapping code.
The "completely fair queueing" (CFQ) I/O scheduler (covered here last November). This scheduler tries to
evenly divide disk bandwidth among all processes on the system. The
CFQ scheduler can be chosen with a configuration option, or by booting
with the elevator="cfq" option.
Some software suspend fixes, including support for systems with high
memory.
The external module support patch (described in a separate article
below). The behavior of "make clean" has also been reworked
to do a more thorough job while, simultaneously, leaving behind enough
information to allow the building of external modules.
A new configuration option allowing the building of kernels without
sysfs support. Be sure to read the help text before disabling sysfs,
however; without sysfs the kernel needs more explicit help in finding
its root partition.
Various libata (serial ATA) improvements and fixes.
A long list of NFS cleanups and improvements.
Some cosmetic fixes, such as running devfs and the floppy driver
through lindent.
Some significant page cache and virtual memory changes, which we will
get to in the next article.
Overall, one might be forgiven for thinking that 2.6.6 looks much like a
development kernel release. In fact, most of more intrusive patches listed
above have been around and tested for some time now; they have just finally
made their escape from the -mm tree. With the exception of the CPU
scheduler patches (which we hope to cover here next week) and, perhaps, the
reverse mapping VM changes, 2.6.6 looks likely to contain the bulk of the
work that most developers are still hoping to see added to 2.6. 2.6.6
contains enough big changes that its chances of containing an unpleasant
surprise or two are fairly high. Within a few more releases, however, 2.6
may well have stabilized to the point that it can be more widely deployed
and the bulk of developer attention can move on to 2.7.
Posted Apr 16, 2004 3:43 UTC (Fri) by wolfrider (guest, #3105)
[Link]
--Thank you for the summary; it's very helpful in determining what the new benefits of the newest 2.6 patch will be. :)
Correction s/May 24/March 24/
Posted Apr 16, 2004 9:32 UTC (Fri) by Duncan (guest, #6647)
[Link]
> The addition of the fcntl() method > to the file_operations structure > (see the May 24 Kernel Page).
s/May 24/March 24/ ??
Duncan
Correction s/May 24/March 24/
Posted Apr 16, 2004 13:57 UTC (Fri) by corbet (editor, #1)
[Link]
....obviously. Long week. Fixed now, thanks.
Reiserfs changes
Posted Apr 16, 2004 9:48 UTC (Fri) by Duncan (guest, #6647)
[Link]
I've been wishing reiserfs had a data=ordered option for some time. It should come in particularly handy on this not yet completely stable x86_64 (amd64) system, running 100% reiserfs. I've not had any serious issues, but because reiserfs is a metadata journalling system not a data journalling system, sometimes the file system cleanups upon reboot DO put extraneous data into the file, from elsewhere. Putting sync in crontab to execute every minute has helped significantly, however. I should also mention that somewhere between 2.6.4 and 2.6.5rc2 (I missed 2.6.5rc1), something DRAMATIC changed, and stability increased by an order of magnitude. Before that, I was beginning to seriously question my decision to go 64-bit, and wishing I was still running x86-32-bit, with its better stability.
Duncan
Linus merges up a storm
Posted Apr 18, 2004 9:33 UTC (Sun) by eludias (subscriber, #4058)
[Link]
> New: The "completely fair queueing" (CFQ) I/O scheduler (covered here last November). This scheduler tries to evenly divide disk bandwidth among all processes on the system. The CFQ scheduler can be chosen with a configuration option, or by booting with the elevator="cfq" option.
One part of the CFQ scheduler which does not seem to be merged is the IO-nice-level-part (as mentioned in last November). Which is a pity, since now I cannot io-renice updatedb to idle priority ;)
http://linus.bkbits.net:8080/linux-2.5/cset@407b073cb4TOUFKBvKpuF6yAhENEOA?nav=index.html|ChangeSet@-7d contains the patch; see drivers/block/cfq-iosched.c :
+#if 0 + /* + * with a simple addition like this, we can do io priorities. almost. + * does need a split request free list, too. + */ + int io_prio +#endif