Kernel Traffic #289 by Zack Brown
[email protected] Mon, 03 Jan 2005 08:10:29 -0800
| Newsgroups | gmane.linux.kernel.kernel-traffic |
|---|---|
| Message-ID | <[email protected]> |
Kernel Traffic #289 For 3 Jan
By Zack Brown
Table Of Contents
* Standard Format
* Text Format
* XML Source
* Mailing List Stats For This Week
* Threads Covered
1. 15 Nov 2004 - 3 Dec 2004 (119 Status Of Acceptance Of FUSE User-Space
posts) Filesystem Into Official Kernel
2. 24 Nov 2004 - 3 Dec 2004 (249 Status Of Software Suspend
posts)
3. 29 Nov 2004 - 5 Dec 2004 (14 Status Of Class-Based Kernel Resource
posts) Management
4. 1 Dec 2004 - 2 Dec 2004 (3 Performance Problems With kernel.org
posts)
5. 2 Dec 2004 (2 Deprecating Broken And Duplicated
posts) Drivers
6. 3 Dec 2004 - 5 Dec 2004 (7 Linux 2.6.9-ac14 Released
posts)
7. 3 Dec 2004 - 7 Dec 2004 (26 Linux 2.6.10-rc3 Released; Some Dangers
posts) Remain
8. 4 Dec 2004 - 6 Dec 2004 (13 Proposal For A Userspace Architecture
posts) Portability Library
Mailing List Stats For This Week
We looked at 2130 posts in 11667K.
There were 493 different contributors. 275 posted more than once. 161 posted
last week too.
The top posters of the week were:
* 123 posts in 1063K by Nigel Cunningham
* 79 posts in 423K by Pavel Machek
* 73 posts in 493K by Adrian Bunk
* 55 posts in 356K by Jens Axboe
* 43 posts in 162K by Andrew Morton
* Full Stats
1. Status Of Acceptance Of FUSE User-Space Filesystem Into Official Kernel
15 Nov 2004 - 3 Dec 2004 (119 posts) Subject: "[PATCH] [Request for inclusion]
Filesystem in Userspace"
Topics: FS: sysfs, Microkernels, Virtual Memory
People: Linus Torvalds, Miklos Szeredi, Pavel Machek, Greg KH
Miklos Szeredi asked if the FUSE userspace filesystem could be added to the
main kernel sources, but Linus Torvalds replied:
Quite frankly I think it's too messy.
I'd like FUSE a whole lot more if it _only_ did the general page cache
reading, but it seems to do a whole lot more, most of it broken.
In other words, I think it's fundamentally wrong to not have a special
"fuse_file_read". If it isn't just "generic_file_read()" (possibly together
with a re-validation callback but even that is very debatable indeed)
there's something wrong with it imho.
The code looks like it was started before the page cache was all done, and
nobody ever cleaned it up to use the full VFS power - or for some suspect
reason decided that they wanted to support insane filesystems.
Together with removing the 2.4.x code and sending a real patch that has the
cleanups, and maybe I'd reconsider.
Miklos replied that the latest patch already addressed these concerns, and the
2.4 code had already been removed. He affirmed that there was some unnecessary
code in the patch, but that it had been included for performance reasons, not
out of a lack of maintainership.
A bunch of folks piled onto the patch, with comments and criticisms. Greg KH in
particular helped clarify some issues involving /dev, /proc, and SysFS.
Elsewhere, Pavel Machek asked what the advantages were of FUSE over CODA.
Miklos said that the two were really quite different; and he and Pavel launched
into a back-end comparison. Linus, following the discussion silently for
awhile, and in the course of discussion made some interesting comments on some
general issues. One, on the patch submission process:
from a merging standpoint, simple really _is_ better. Even if you really
really want to use exotic features like "direct IO" and writable mappings
some day, let's just put it this way: it's a lot easier to merge something
that has no questions about strange cases, and then _later_ add in the
strange cases, than it is to merge it all on day #1.
I'm a sucker. Ask anybody. I'll accept the exact same patch that I rejected
earlier if you just do it the right way. I'm convinced that some people
actually do it on purpose just for the amusement value ("Look, he did it
_again_. What a doofus!")
Elsewhere, Linus compared the idea of a user-space filesystem to the idea of a
microkernel, in that they both attempted to de-integrate the operations of the
various parts of the system. He said:
there is a _reason_ why microkernels suck. This is an example of how things
are _not_ "independent". The filesystems depend on the VM, and the VM
depends on the filesystem. You can't just split them up as if they were two
separate things (or rather: you _can_ split them up, but they still very
much need to know about each other in very intimate ways).
So what do you do? You limit shared dirty pages (inefficient memory use),
or you disallow certain behaviours, or you add tons of new interfaces to
expose essentially the same "every thing that can allocate and is on the
write-out path takes a GFP flag".
User-space filesystems are hard to get right. I'd claim that they are
almost impossible, unless you limit them somehow (shared writable mappings
are the nastiest part - if you don't have those, you can reasonably limit
your problems by limiting the number of dirty pages you accept through
normal "write()" calls).
2. Status Of Software Suspend
24 Nov 2004 - 3 Dec 2004 (249 posts) Subject: "Suspend 2 merge"
Topics: Software Suspend
People: Christoph Hellwig, Nigel Cunningham, Pavel Machek
Nigel Cunningham submitted 51 separate patches, to merge Suspend 2 properly.
Pavel Machek went back-and-forth with him on a bunch of them; and it seemed
that some of Nigel's code completely subverted the swsusp (Software Suspend)
code that Pavel had been working on. Christoph Hellwig called him on each of
these, saying things like, "Make sure swsusp and swsusp2 export the same
interface. Preferably the old one, but if it absolutely doesn't fit your needs
submit a patch to switch the old code to the new interface first." For the most
part this usually cantankerous subject was discussed nonviolently. Judging from
the reactions of most of the folks working in the same area (including Nigel),
it's unlikely that all of Nigel's patches will be accepted unchanged. Christoph
in particular seemed to indicate that massive changes would be needed, to clean
up problems that he said had existed in the code for a long time (at one point
he accused Nigel of re-submitting work unchanged that had already been rejected
-- and Nigel affirmed this was in some cases true). By the same token, enough
folks had enough interesting comments to make, that it does seem likely Nigel's
work will be accepted eventually, in one form or another. Even Pavel agreed
that Suspend 2 should replace the existing swsusp code he'd written. In fact,
Pavel and Christoph both suggested that the proper way to submit the patches
would be to incrementally transform swsusp into Suspend 2, though Nigel argued,
"I'm purposely not doing that. The reason is that suspend2 isn't a bunch of
incremental changes to swsusp. It has been redesigned from the ground up and
I'd have to pull swsusp to pieces and put it back together to do the same
things." In the same post, he also said, "let Pavel and others get to the point
where they're ready to say "Okay, we're satisfied that suspend2 does everything
swsusp does and more and better." Then we can remove swsusp. This is the plan
that was discussed with Pavel and Andrew ages ago." The others did insist on an
incremental conversion however -- though Pavel did remark, "Okay, at this point
I'll understand when you'll put my picture as a texture to some doom3 monster
and shoot me thousand times... Lot of work went into suspend2, but in the
meantime lot of work went into swsusp1, too..."
3. Status Of Class-Based Kernel Resource Management
29 Nov 2004 - 5 Dec 2004 (14 posts) Subject: "[PATCH] CKRM: 0/10 Class Based
Kernel Resource Management"
Topics: Version Control
People: Gerrit Huizenga, Andrew Morton, Marc E. Fiuczynski
Gerrit Huizenga of IBM said, "The following ten patches add the core of CKRM
(Class Based Resource Management) to Linux. Current patches are against
2.6.10-rc2. This set of patches is essentailly a cleaned up version of what is
known on the [email protected] as the E16 code base. As compared
to E16, the patch breakout has been reorganized for easier application to
mainline with a number of stylistic cleanups more in line with mainline kernel
code." Andrew Morton asked, "How useful is this code at present? What are its
limitations? And what is the plan for future enhancements?" And Gerrit replied:
This set of code alone allows for creation of classes which include
per-class resource accounting (including delay accounting), basic task
management for memory, CPU and disk IO, limited socket & listener queue
management for networking, and the related rules based infrastructure.
So, in short, it is a useful set of code to work with to demonstrate real
utility with CKRM. However, this submission is not as full featured as is
being used by those on the ckrm-tech list, such as the PlanetLab work.
There are also things in SLES9 that are more featureful than this set
although those will be worked into here in time.
It does not have the full memory management and scheduler support that
other versions do and I'm not yet convinced that those are ready to submit.
Future enhancements will start with the cleanups as recommended by lkml so
far (thanks all ;-) followed by more work on the scheduler and memory
management side in the short term. There are also ways to hook in
additional resource controllers for any exhaustible resource, e.g. file
handles. setrlimit style resources, etc.
Most of the next level of changes will build on these and are based on work
currently in progress on the ckrm-tech list. However, this is a stripped
down set of code which is believed to be stable (tested on IA32, x86-64,
PPC64) with a variety of config options using both standard regression
suites (e.g. LTP, kernbench, the ckrm tests, etc.).
Marc E. Fiuczynski also put in:
I integrated CKRM with the kernel used by PlanetLab (www.planet-lab.org),
and I believe we (PlanetLab) are the first to use CKRM in a production
setting. Our kernel is deployed on roughly 100 machines worldwide and we
intend to upgrade all of our machines (roughly 400) over the next few
weeks. Our kernel uses linux-vservers to create rather thin "virtual
machines" (for the lack of a better name), but uses CKRM to provide for
performance isolation between each vserver. The integration between CKRM
and vservers was easy!
PlanetLab is used by tons of researchers. The software of each research is
placed into a vserver, and each PlanetLab machine typically has anywhere
from 20-40 actively running vservers running at a constant load of roughly
20. Some of the services running on PlanetLab have been discussed on
Slashdot.
Gerrit mentioned that PlanetLab uses a more featureful version of CKRM.
This is true. For each vserver we create a corresponding CKRM class, and
then use the rule-based classification engine (RBCE) to automatically
classify vserver processes to the appropriate CKRM class. We are itching to
deploy the CKRM memory controller and IO controller, but unfortunately
those have not been ready for prime time. For now, we've only deployed a
variant of CKRM's cpu scheduler. We currently do not leverage the
hierarchical support provided by CKRM, but envision a use for it in the
future.
Unlike the posted CKRM patchset, the CPU, IO, and Memory controller make
more invasive modifications to various kernel subsystems. I suspect that
the CPU and IO controllers can be completely modularized into the pluggable
CPU and IO framework that Con and Jens posted earlier, if that's the
direction that mainline is heading. The CKRM memory controller makes a few
choice modifications to mm/vmscan.c, which I suspect will rouse a fair
amount of dicussion on LKML when the day arrives.
Andrew was glad to see some real-world examples, but said:
A concern which I have about the CKRM implementation is that the patches
which have been sent out appear to be simply the "core" of CKRM, plus
minimally-intrusive hooks. I have the impression that this core will not be
terribly useful to real-world users and that follow-on patches will be
required to add more functionality and to wire up more instrumentation and
control points.
I would not like to be in a situation where we merge the "core" patch, but
the as-yet-unseen follow-on patches which make CKRM useful and complete end
up creating a big unmaintainable mess. We end up not wanting to go forwards
and being unable to go backwards.
IOW: I think we need to see a reasonably-close-to-final implementation of
CKRM before we can take it much further.
Gerrit replied:
Understood. We do have a more complete set of patches floating around,
although most are ported to an existing distro rather than set for current
mainline adoption. But if we can get general consensus on the patches (once
I finish the current round of cleanup and testing), we do have work in
memory management, IO scheduling, and even CPU scheduling (the latter being
the most debatable for mainline acceptance given the rate of scheduler
replacements in recent past) that are being used today.
We can dump the current, raw distro patches or the rest of the e16 patch
set from ckrm-tech on you although I believe they will need some
significant review/modification to be mainline acceptable yet. One big
problem is that these changes are somewhat hard to maintain as distinct
from mainline and yet remain relatively current. There are several
developers working in distinct areas and each area moves at its own pace.
Hence, I'd like to get to a more stable -mm compatible core, and build up
from there. As we see that the entire set approaches stability/utility, we
can push from the core up through the working set of resource controllers.
If getting you a set of patches for general concept review as based on a
current distro would help, just say the word. However, getting those up to
current mainline, integrated with each other and fully tested (while
holding their development stable long enough to do that) is the
requirement, well, that will take us a fair bit longer.
Part of the goal of this posting was to start to stabilize a core and
improve on it, rather than try to deliver an entire project as a moderately
large set of changes as a fait accompli. And, we are more than willing to
continue to tweak and tune this to be generally useful to a wider audience,
even though we have a set that works well for some groups needing better
workload management.
So, Andrew, can you clarify how much we need to put in your hands, how well
tested it needs to be and how clean and current the entire set needs to be
before this is ready for -mm testing?
Andrew replied:
Well we can toss stuff into -mm any old time really. Doing it too early
will cause rather a lot of difficulty and churn at both ends - working
against -mm can be an extra burden at times.
I'd say that it would be best to wait until the code is, in your opinion,
in a Linus-mergeable form. Then after one lkml review round and any
subsequent rework we should be in good shape.
4. Performance Problems With kernel.org
1 Dec 2004 - 2 Dec 2004 (3 posts) Subject: "kernel.org has severe performance
problems"
People: H. Peter Anvin
Continuing from Issue #287, Section #18 (24 Nov 2004: kernel.org Hardware
Troubles) , H. Peter Anvin said:
Just to let you know; kernel.org has been suffering for performance
problems lately, but in the last few days, for reasons we're not really
clear about, the performance problems seem to have spread to the upload
procedure. Thus, unfortunately, you might see long times between uploading
something and when things appear on the main repository.
We are already in late-stage discussions with sponsors about new hardware,
so bear with us.
5. Deprecating Broken And Duplicated Drivers
2 Dec 2004 (2 posts) Subject: "[PATCH/RFC] deprecate some drivers"
Topics: Networking
People: Jeff Garzik, Jim Nelson
Jeff Garzik said:
I'm looking to eliminate some horribly broken/dup drivers. Since 2.6 is an
ongoing matter, I want a 'flashing-red warning sign' that drivers will soon
be disappearing, rather than just killing the driver and listening for the
screams.
IPhase driver is broken+abandoned, and xirtulip is
broken+duplicate+abandoned, and are two prime candidates for my prefence of
handling this matter: CONFIG_DEPRECATED.
Jim Nelson suggested, "Please add digiboard to your list -
duplicate+abandoned."
6. Linux 2.6.9-ac14 Released
3 Dec 2004 - 5 Dec 2004 (7 posts) Subject: "Linux 2.6.9-ac13"
People: Alan Cox, Arjan van de Ven
Alan Cox announced Linux 2.6.9-ac13, saying:
This -ac is a little different. It's still an experimental -ac to test the
accumulated patches it would be nice to have in -ac but which might break
something and seemed too risky. As such please test it but in general wait
for the next -ac before planning to update production systems.
Arjan van de Ven is now building RPMS of the kernel and those can be found
in the RPM subdirectory and should be yum-able. Expect the RPMS to lag the
diff a little as the RPM builds and tests do take time.
The it8212 still doesn't default to DMA on - that is on the TODO list. The
HPT366 rework project is also not ready (its gone back to the drawing board
until the current panic is over if you are a volunteer and wondered what is
up).
ftp://ftp.kernel.org/pub/linux/kernel/people/alan/linux-2.6/2.6.9/
There was some confusion about the patch, at first because it seemed Alan had
not updated the version number in the Makefile, and then because it seemed he
had uploaded the wrong version entirely. Alan released a 2.6.9-ac14 quickly
with the intended patch.
7. Linux 2.6.10-rc3 Released; Some Dangers Remain
3 Dec 2004 - 7 Dec 2004 (26 posts) Subject: "Linux 2.6.10-rc3"
Topics: Framebuffer, I2C, Kernel Release Announcement, Power Management: ACPI
People: Linus Torvalds
Linus Torvalds announced Linux 2.6.10-rc3, saying:
Ok, it's out there in all the normal places, and here's the shortlog for
the thing.
Mostly a lot of small fixes, although the MIPS update is pretty sizeable
simply because it's been a while.
ACPI updates and a new i2c driver, mtd, arm, uml updates.. fbdev and sparse
fixes. And a lot of other small things better just described by the
changelogs.
Please do test this - and don't send me anything but bug-fixes. Let's aim
for a real 2.6.10 before xmas (or hanukkah, or whatever your favourite
holiday happens to be).
Several folks reported filesystem corruption with this kernel, but no immediate
explanation was found. Several other folks said that an oops they'd experienced
with earlier kernels was still present in this one.
8. Proposal For A Userspace Architecture Portability Library
4 Dec 2004 - 6 Dec 2004 (13 posts) Subject: "Proposal for a userspace
"architecture portability" library"
Topics: BSD, Klibc
People: Paul Mackerras, Robert Love, H. Peter Anvin
Paul Mackerras said:
Some of our kernel headers implement generally useful abstractions across
all of the architectures we support. I would like to make an "architecture
portability" library, based on the kernel headers but as a separate project
from the kernel, and intended for use in userspace.
The headers that I want to base this on are:
+ atomic.h
+ bitops.h
+ byteorder.h
+ rwsem.h
+ semaphore.h
+ spinlock.h
+ system.h (for mb et al., xchg, cmpxchg)
+ unaligned.h
There are some others that may also be useful: cache.h, checksum.h, io.h,
xor.h.
Now, clearly I can do this under the GPL. However, I think it would be more
useful to have the library under the LGPL, which requires either getting
the permission of the authors of the kernel files, or rewriting them from
scratch.
Linus (and other kernel copyright holders) - would you be willing to
relicense such of the above files that have your copyright under the LGPL
for this purpose?
I'm looking for volunteers to help with porting and testing on various
architectures. I can do x86, ppc and ppc64, and I know sparc{,64} and m68k
assembler, but for the rest I'll need help.
My hope is that distributions will be able to use this to replace some of
the headers in /usr/include/asm, and thus reduce the desire for
applications to include kernel headers.
Several folks loved this idea. Robert Love gave his permission to relicense his
own kernel contributions; and said:
I think that this is an _awesome_ idea. Might want to check out what
overlap there is with existing glibc interfaces. For example, I presume
that glibc implements at least some of the atomic operations (but I also
think having a full suite of atomic operations available is useful).
Some of the stuff, like semaphores, isn't really going to port very well to
user-space. At least not directly, I would not think.
But on numerous occasions I have wanted the kernel's barriers, atomic
operations, bitwise operations, or some of the compiler things we implement
(likely, unlikely, fixes) in user-space.
H. Peter Anvin also offered to pitch in, though he would have preferred a BSD
license, so he could add the result to klibc.
We Hope You Enjoy Kernel Traffic
Kernel Traffic is grateful to be developed on a computer donated by Professor
Greg Benson and Professor Allan Cruse in the Department of Computer Science at
the University of San Francisco. This is the same department that invented
FlashMob Computing. Kernel Traffic is hosted by the generous folks at
kernel.org. All pages on this site are copyright their original authors, and
distributed under the terms of the GNU General Public License, version 2.0.