Robert Love [interview], author of the preemptive kernel patch, will be speaking at the first annual Southern CaliforniA Linux Expo in Los Angeles on November 2nd. The expo features vendors such as Sun and IBM, as well as many local linux users groups. Other speakers include PHP author Rasmus Lerdorf and USC's J.P. Lewis.
Due to the recent improvements in 2.5's VM, [related story], the I/O scheduler is having a hard timekeeping up with some workloads. Jens Axboe sent a patch for a deadline io scheduler (an I/O scheduler that tries to start request within a given time limit.)
Jens writes: "The Andrew Morton Interactive Workload (AMIW) [1] rates the current kernel poorly, on my test machine it completes in 1-2 minutes depending on your luck. 2.5.38-BK does a lot better, but mainly because it's being extremely unfair. This deadline io scheduler finishes the AMIW in anywhere from ~0.5 seconds to ~3-4 seconds, depending on the io load." Update: The deadline scheduler is now in both Linus's current BK kernels as well as Andrew Morton's -mm kernels.
Ulrich Drepper recently offered some interesting benchmark results, comparing the time it takes to create and destroy threads with different threading models under various conditions. The tests were run using a 2.5.37 development kernel, comparing LinuxThreads, NGPT 2.0.2 and NPTL 0.1.
The results of these benchmarks are available in two pdf charts: [chart one] [chart two]. They suggest that while NGPT is twice as fast at thread creation and destruction than LinuxThreads, the new NPTL [story] is still four times faster than that! Read on for Ulrich's full explanation...
BitMover founder Larry McVoy [interview] offered some statistics regarding Linux development and the use of BitKeeper. For example, regarding Linus' 2.5 development tree he says:
"There are about 8600 changesets in the tree. There have been 76998 deltas made to the tree since Feb 05 2002. That's an average of 37 changesets and 333 deltas per *day* seven days a week. If you assume a 5 day work week then the numbers are 52 csets/day and 466 deltas/day.
"Those changerate numbers are pretty zippy. You guys are rockin'."
Zippy indeed! The 2.5 development kernel has seen some amazing improvements. Here's one user that's greatly anticipating 2.6... (With the feature freeze occuring October 31st, I don't expect to see 2.6.0 until some time next year.)
Linus has started integrating some of Andrew Morton's mm patches into his BK repository as usual - what is interesting about this round of merges is the inclusion of Andrew's most radical changes - a non-blocking page writeback system. The changelogs are very detailed and interesting so I won't explain further.
Ulrich Drepper recently announced the first public release of the Red Hat sponsored "Native POSIX Thread Library" (NPTL). He explained, "Unless major flaws in the design are found this code is intended to become the standard POSIX thread library on Linux system and it will be included in the GNU C library distribution."
One test mentioned in Ulrich's email - running 100,000 concurrent threads on an IA-32 - generated some interesting discussion. Ingo Molnar explained that with the current stock 2.5 kernel such a test requires roughly 1GB RAM, and the act of starting and stopping all 100,000 threads in parallel takes only 2 seconds. In comparison, with the 2.5.31 kernel (prior to Ingo's recent threading work), such a test would have taken around 15 minutes.
Ingo provides further details:
"With the default split and kernel stack we can start up 94,000 threads on x86. With Ben's/Dave's patch we can have up to 188,000 threads. With a 2:2 GB VM split configured we can start 376,000 threads. If someone's that desperate then with a 1:3 split we can start up 564,000 threads."
And Ingo's response to the logical followup question, "why so many threads, the answer is because we can :)". Much of the discussion follows, and is well worth the time it takes to read...
Roman Zippel's new kernel configuration system [story] has seen several significant improvements since we looked at version 0.4. Currently at version 0.6, the user interface is noticeably improved, and the installation and usage of the entire configuration system has become much simpler.
The QT user interface now includes a three-paned view that I personally find much easier to use. Additionally, it is now possible to easily configure the kernel using just the mouse. Several screenshots of the 0.6 GUI follow.
The recently-released 2.5.36 kernel now includes (among other things, like XFS) Rohit Seth's Huge TLB Pages patch (IA-32 only). This enables support for page sizes larger than 4k, but user-space apps must use special system calls to take advantage of the large pages.
Smaller pages are space-efficient, reduce memory fragmentation, and are easy to swap. They are suited for most tasks; but large pages are better-suited with shared memory, and require less page-table entries.
This patch has already been in Andrew Morton's [interview] -mm tree for some time, so it has (presumably) received some good testing.
Ending the debate as to whether XFS will ever be merged [earlier story], it can now be found in Linus' 2.5 BK tree, and will be part of the upcoming 2.5.36 kernel. You can see the XFS-related BK changeset details here.
XFS is a GPL'd high-performance journaling file system under development by SGI since 1994. Version 1.0 was released for Linux on May 1, 2001, with the current release being version 1.1. XFS joins several other journaling filesystems available in the mainline Linux kernel, including ext3, ReiserFS and JFS.
Alan Cox [earlier interview] has released stable Linux kernel 2.2.22. This release added only one patch to the earlier 2.2.22-rc3 with the comment, "Fix HDLC bugs causing kernel printk warns". From the release notes:
"Linux 2.2.22 is primarily an errata release backporting fixes for multiple small kernel errors found during auditing of the 2.4 code. 2.2 based users who have untrusted local users should update to this kernel. In addition the kernel fixes some bugs in the HDLC layer and adds support for the newest 3ware IDE RAID cards."
Rusty Russell recently posted version 0.1 of his "in-kernel symbolic oopser" to the lkml. He explains: "The aim of this software is to make reporting kernel oopses possible for inexperienced users, in a way which doesn't violate their privacy by sending out information without their knowledge. The days of [every] Linux user being able to set up a serial console have long gone."
An 'oops' is triggered by accessing an invalid memory address. When such a fault is trapped, the kernel uses printk() statements (see arch/*/kernel/traps.c) to display the current processor status. The lkml FAQ talks about generating and using an oops here.
Alan Cox [earlier interview] and Andre Hedrick offered Rusty some constructive criticism. Rusty's patch, against 2.5.34, currently only supports x86 with ATA LBA-supporting drives, targeting the most common Linux configuration.
Con Kolivas, maintainer of the high performance -ck patchsets [earlier story], contributed some interesting benchmark results that help compare the performance of several Linux kernels under varying loads.
With little fanfare, User Mode Linux (UML) has been merged into Linus' BitKeeper tree. The merge followed a patch by UML author Jeff Dike, resynching UML with the 2.5.34 development kernel. The BK changeset details are available here.
From the UML homepage, User-Mode Linux provides you with a virtual machine that offers "a safe, secure way of running Linux versions and Linux processes. Run buggy software, experiment with new Linux kernels or distributions, and poke around in the internals of Linux, all without risking your main Linux setup." Find additional UML resources here.
Xuan Baldauf suggested a method for heuristic readahead optimization when reading all the files of a directory.
It comes down to this: if an application does a stat(), open(), read() sequence on a file, it's likely that it will open and read the file after the next stat(). (since this behavior is typical of applications traversing a directory and reading its files). So, one can readahead a file after the stat().
XFS is a GPL'd high-performance journaling file system developed by SGI since 1994. Version 1.0 was released for Linux on May 1, 2001, with the current release being version 1.1. Christoph Hellwig has provided patches aimed towards getting XFS included into the 2.5 development kernel [earlier story].
A very length thread on the lkml started when 'khromy' asked, "What's up with XFS in linux-2.5? I've seen some patches sent to the list but I havn't seen any replies from linus.. What needs to be done to finally merge it?". Buried amongst typical tangents flaming Linus Torvalds for dropping patches, it was pointed out that there's little left to be merged for XFS support. Alan Cox [earlier interview] explains, "The problem has always been that XFS was very invasive code so it might break stuff for people who dont choose to use experimental xfs stuff. Thats slowly improving". Eric Sandeen, part of the SGI XFS development team, points out that the only "invasive" items left to merge are: 1 new process flag, 1 new CTL_VM name, 1 new CTL_FS name and 1 exported symbol. That said, support for XFS in the mainline 2.5 kernel looks to be quite likely.