|
|
ru.linux- RU.LINUX --------------------------------------------------------------------- From : Sergey Lentsov 2:4615/71.10 11 Apr 2002 19:37:25 To : All Subject : URL: http://www.lwn.net/2002/0411/kernel.php3 --------------------------------------------------------------------------------
[1][LWN Logo]
[LWN.net]
Sections:
[2]Main page
[3]Security
Kernel
[4]Distributions
[5]Development
[6]Commerce
[7]Linux in the news
[8]Announcements
[9]Letters
[10]All in one big page
See also: [11]last week's Kernel page.
Kernel development
The current development kernel release is 2.5.7. The current 2.5.8
prepatch from Linus is [12]2.5.8-pre3; it includes a big PowerPC64
update, a FireWire update, the new system calls for setting process
CPU affinity, a bunch of USB updates, a great deal of merging from the
"dj" series, and more.
Dave Jones's latest prepatch is [13]2.5.7-dj3. There's not much new in
it; Dave appears to be concentrating more on feeding changes to Linus
at the moment.
The latest [14]2.5 status summary from Guillaume Boissiere came out on
April 2.
The current stable kernel release is 2.4.18. The current 2.4.19
prepatch is [15]2.4.19-pre6. It includes a long list of networking
fixes, a netfilter update, lots of USB updates, and a vast number of
other changes. Significantly, this patch also includes a few pieces of
Andrea Arcangeli's VM update, as reworked by Andrew Morton. Much of
the reworked VM code remains outside of the main 2.4 kernel, however.
Alan Cox's latest prepatch is [16]2.4.19-pre5-ac3. The most
interesting part of this prepatch is the inclusion of Pavel Machek's
software suspend code. If you want to actually play with that code,
though, you'll also need to apply [17]this patch from Pavel.
Alan has also released [18]2.2.21-rc3, the third 2.2.21 release
candidate.
Reorganizing USB. It's all Lineo's fault. The company [19]announced
the contribution of its "USB Device Software" to the Linux kernel.
This code allows a Linux system to behave as a device (not the host)
on a USB bus; it is used in the Sharp Zaurus PDA. The code was
welcomed by all, but it led quickly to the inevitable question: "where
do we put all that code?"
After some discussion, it was decided that the USB source tree needed
to be reorganized. The [20]final organization looks like this
(everything under drivers/usb, of course):
core The core USB code (including device-side code)
host Controller code for USB hosts
device Controller code for USB device systems
class Drivers for USB devices with defined 'class' specifications
net Network drivers
image Scanner drivers
input Input drivers
media Media drivers (i.e. cameras)
serial Serial drivers
storage Storage drivers
misc Everything else
The resulting changes were merged in 2.5.8-pre3, resulting in a huge
patch that, for the most part, just moves files around. The Lineo code
has not yet been merged, but it's on the list of things to do.
kbuild 2.5 is back. We last heard from the kbuild 2.5 project, which
is mostly the work of Keith Owens, some months ago. At that point, the
project had a much improved, cleaner, and more accurate kernel build
process which provided some interesting new features. There was just
one little problem: a full kernel build took twice as long. That kind
of bad news does not get you very far with kernel hackers, who spend a
lot of time as it is waiting for kernel builds; Keith was essentially
told, politely, to come back when the performance problems had been
dealt with. (See [21]the January 3 LWN Kernel Page).
Keith is back. [22]Kbuild 2.5 version 2.0 is now available for 2.4.16,
with [23]version for the 2.5 kernel available as well. While previous
versions of kbuild worked with a text file that was read at every step
in the process, the new kbuild uses a memory-mapped database
implementation borrowed from BitKeeper. The database code, like a few
other pieces of BitKeeper, has been released under the GPL, so there
should be no licensing objections here.
The new code has made a difference. On Keith's system, a full kernel
build with the traditional kbuild code takes a full 15 minutes (with
everything configured in). With the new code, that time drops to just
under nine minutes. If you immediately run a second make on the
fully-built tree, things look even better. The old kbuild recompiles a
bunch of stuff unnecessarily, resulting in a "build" time of just over
two minutes. The new kbuild, instead, figures out that nothing needs
to be done in 14 seconds. Says Keith:
More accurate kernel build, easier to write and understand
Makefiles, 30% faster than kbuild 2.4. Now the nay-sayers will have
to find something else to complain about!
Keith has no plans to try to get the new code into the 2.4 kernel tree
("Changing the kernel build on a stable kernel is a bad idea"), but
there will probably be a renewed push to see it incorporated into 2.5.
The "nay-sayers" may have to scramble if they want to keep it out.
EVMS 1.0 released. The news is a bit stale (due to the Kernel Page
taking last week off), but still worth a mention: the Enterprise
Volume Management System team has [24]announced the release of
EVMS 1.0, the first full release. EVMS is a high-end system for the
management of disk drives, partitions, and volumes; in addition to the
usual nice volume management features it supports snapshots, bad block
handling, and more. See [25]the EVMS web page for more information.
Tagged command queueing for IDE drives. SCSI drives have supported
tagged command queueing (TCQ) for many years. TCQ allows a device
driver to attach an identifying "tag" onto each request passed to a
drive; the drive will then use that tag when reporting on the status
of an operation. This tagging allows the drive to have multiple
requests outstanding, and to satisfy them in any order it chooses. TCQ
improves performance in a couple of ways:
* Having multiple operations outstanding reduces idle time by
ensuring that the drive always has work to do. In a single-request
mode, the drive must wait after signalling completion until the
system gets around to handing it another request. In the tagged
mode, that next request is already available.
* The drive can optimize the ordering of requests for the best
performance. The Linux filesystem and driver code already tries to
perform this optimization, but there limits to how successful the
host system can be in this regard. The simple cylinders / heads /
tracks model of a disk drive's block layout has been an
approximate fiction for years; blocks may not actually be close to
where the host system thinks they should be. And it is hard for
the host system to know the current head and platter positions.
The drive (one hopes) is better informed, and can make better
decisions.
TCQ support has been a justification for SCSI user smugness for years.
IDE is catching up, however, and Linux is almost ready: Jens Axboe has
[26]released a patch which uses TCQ on IDE drives which support that
feature. With the [27]release of the second version of the patch, Jens
states: "The code has taken quite a lot of beating, so I'm ready to
call this beta and ask for more testers. No malfunctions have been
detected here."
Note that the patch is still a little way from being ready for
widespread enterprise deployment - among other things, no real
performance testing has been done yet. Jens has been most concerned
with issues like data integrity so far - something that most Linux
users will likely appreciate. It's also worth taking a look at
[28]this note from Andre Hedrick on the (dismal) state of TCQ support
in most IDE hardware.
Nonetheless, the TCQ code has begun to find its way into [29]Martin
Dalecki's IDE patch set, and will thus likely show up in a 2.5
prepatch before too long.
Dealing with discontiguous memory. Most computers out there organize
their memory as a single, contiguous array of bytes - or something
close to that. If there are gaps (such as the x86 memory hole at
640K), they tend to be small and easily worked around. Linux on most
systems takes advantage of this contiguous nature by treating memory
as a simple, linear array.
But what do you do if your hardware is not so reasonable? The Linux
kernel has had discontiguous memory support for some time, but the
implementation has not been considered satisfactory by all. Its
performance is suboptimal, and the code tends to be strongly tied to
specific architectures.
Daniel Phillips has set out to apply an old computer science axiom to
this challenge: any problem can be solved by adding another layer of
indirection. He has posted [30]a patch which makes some interesting
changes to how the Linux kernel sees the memory it runs on.
In kernel space, there is a fundamental distinction between "virtual"
and "physical" addresses. Kernel virtual addresses are different from
user-space virtual addresses; most of the code treats them as if they
were really physical, hardware addresses. In fact, on most
architectures, the only difference between (most) kernel virtual
addresses and the corresponding physical addresses is a constant
offset. The kernel usually works with virtual addresses, translating
them to physical addresses only when it is really necessary.
With Daniel's patch, the kernel works with a third address type,
called a "logical" address. The characteristics of the three address
types, from lowest-level to highest, now are:
physical Addresses recognized directly by the hardware. They may have
significant gaps.
logical Pseudo-physical addresses as seen by the kernel; the logical
address space is contiguous
virtual Virtual addresses used by most kernel code
The establishment of the logical address space is handled at the
lowest levels of the kernel; most of the rest of the system is unaware
of it. By setting up the logical address tables properly, the patch
takes a system with randomly-organized, discontiguous memory and makes
that memory look like a nice, linear array. As a result, most of the
kernel code need not be aware of the real arrangement of the hardware.
This patch is a fundamental change in how Linux deals with its memory.
Despite that, it is relatively small in size, and it makes it easy for
the kernel to deal with complicated hardware arrangements. That extra
layer of indirection hides the complexity of the underlying system.
Maybe the old axiom is right.
(Here is [31]the latest version of Daniel's patch as of this writing).
SUBTERFUGUE needs a new maintainer. As if in response to the project's
having been [32]mentioned in NTK, SUBTERFUGUE maintainer Mike Coleman
has [33]announced that he can no longer maintain the project. Have a
look if you think you might like to take on this interesting tool.
Other patches and updates released this week include:
Kernel trees:
* Andrea Arcangeli: [34]2.4.19-pre6-aa1; a number of fixes and
performance patches.
* Greg Kroah-Hartman: [35]2.5.7-gregkh-1; includes a great many USB
patches.
* Joerg Prante: [36]2.4.19-pre5-jp9; the kitchen sink is missing but
not much else.
* Marc-Christian Petersen: [37]2.4.18-WOLK3.3; also includes the
kitchen sink.
* Christoph Hellwig: [38]1.0.9-hch1. "After all the discussions
about VFS races and VM problems and growing bloat in all areas of
the kernel people seem to have forgotten the good old days of the
small and simple linux kernels. Even more important the ego of a
young kernel developer will suffer in the long term if he doesn't
have his own kernel patchkit, so here it is." Yes, it really is
based on 1.0.9.
* J.A. Magallon: [39]2.4.19-pre5-jam2; updated to the latest
Arcangeli VM.
* Paul P Komkoff Jr: [40]2.4.19-pre5-ac3-s43.
Core kernel code:
* Christoph Hellwig: [41]radix tree page cache for 2.5; this is the
first "release candidate."
* Robert Love: [42]a new preemptive kernel patch with mostly minor
changes.
* Rusty Russell: [43]futex generalization patch, including pthread
support. Also available is [44]an asynchronous futex extension
from Hubertus Franke.
* Andrew Morton: [45]the return of the out-of-memory killer in the
Arcangeli VM.
* Robert Love: [46]CPU affinity system calls (merged in 2.5.8-pre3).
* Rik van Riel: [47]version 12i of the reverse mapping VM.
* Andrea Arcangeli: [48]vm-33. "I recommend everybody to never use a
2.4 kernel without first applying this vm patch." Here's [49]his
explanation for that recommendation.
* Andreas Gruenbacher: [50]version 0.8.25 of the ACL code; due to
some changes this patch is considered to be a security fix.
Development tools:
* Amit Kale: [51]kgdb 1.5, with better support for tracking down
SMP-related problems.
* Manoj Iyer: [52]Linux Test Project April 2002 release.
* Robert Love: [53]preempt-stats, a kernel preemption measurement
tool.
Device drivers
* Greg Kroah-Hartman: [54]USB serial console support, merged in
2.5.8-pre3.
* Richard Gooch: [55]devfs v199.12 for 2.4.19-pre6 and [56]devfs
v209 for 2.5.8-pre3.
* Greg Kroah-Hartman: [57]hotplug scripts 2002-04-01.
* James Simmons: [58]new frame buffer device API for 2.5.7.
* Peter Horton: [59]a Radeon frame buffer driver for 2.4.19-pre2.
* Jeff V. Merkey: [60]Dolphin SCI-PCI driver v1.19.
* Marc Boucher: [61]Conexant HCF and HSF linmodem drivers.
Filesystems:
* Anton Altaparmakov: [62]NTFS 2.0.0, a read-only driver for the NT
filesystem. The patch has since been updated to [63]version 2.0.1.
* Will Dyson, [64]BeFS 0.92, a Be filesystem driver.
* Steve Best: [65]JFS 1.0.17.
* Hirokazu Takahashi: [66]zero copy NFS update.
Miscellaneous:
* David Welton: [67]a Forth interpreter as a kernel module. "I doubt
the code itself is of much interest. Actually, I'm pretty
embarassed about it, but decided to make it available despite
that."
* Rick A. Hohensee: [68]another kernel Forth implementation.
* Erik Kline: [69]a PAM module implementing per-user capability
sets.
* Denis Vlasenko: [70]the kernel maintainers file.
* Neil Brown: [71]mdadm 0.8, a release candidate for this RAID
administration tool.
Networking:
* Dmitry Kasatkin: [72]Affix 0.98 (Bluetooth stack for Linux).
* Kazunori Miyazawa: [73]USAGI 3.1, a stable release from this
project, which is working to improve Linux IPv6 support.
Ports:
* Andi Kleen: [74]a new x68-64 snapshot. "It has so many bugs fixed
over previous kernels that I would recommend every x86-64 user to
update to this kernel version."
* Jeff Dike: [75]User-mode Linux 0.56-2.4.18-15.
* Eric W. Biederman: [76]a set of x86 boot enhancements for better
support of LinuxBIOS and embedded systems, and more. Additional
patch parts: [77]2, [78]3, [79]4, [80]5, [81]6, [82]7, [83]8.
Section Editor: [84]Jonathan Corbet
April 11, 2002
Sponsored Link
[85]Your Text Ad Here
Purchase your own text ad with our self-serve advertising system.
For other kernel news, see:
* [86]Kernel traffic
* [87]Kernel Newsflash
* [88]Kernel Trap
* [89]Linux 2.5.x Porting help
* [90]2.5 Status
Other resources:
* [91]Kernel Source Reference
* [92]L-K mailing list FAQ
* [93]Linux-MM
* [94]Linux Scalability Effort
* [95]Kernel Newbies
* [96]Linux Device Drivers
[97]Next: Distributions
[98]Eklektix, Inc. Linux powered! Copyright Л 2002 [99]Eklektix, Inc.,
all rights reserved
Linux (R) is a registered trademark of Linus Torvalds
References
1. http://lwn.net/
2. http://lwn.net/2002/0411/
3. http://lwn.net/2002/0411/security.php3
4. http://lwn.net/2002/0411/dists.php3
5. http://lwn.net/2002/0411/devel.php3
6. http://lwn.net/2002/0411/commerce.php3
7. http://lwn.net/2002/0411/press.php3
8. http://lwn.net/2002/0411/announce.php3
9. http://lwn.net/2002/0411/letters.php3
10. http://lwn.net/2002/0411/bigpage.php3
11. http://lwn.net/2002/0404/kernel.php3
12. http://lwn.net/2002/0411/a/2.5.8-pre3.php3
13. http://lwn.net/2002/0411/a/2.5.7-dj3.php3
14. http://lwn.net/2002/0411/a/2.5-status.php3
15. http://lwn.net/2002/0411/a/2.4.19-pre6.php3
16. http://lwn.net/2002/0411/a/2.4.19-pre5-ac3.php3
17. http://lwn.net/2002/0411/a/swsusp-patch.php3
18. http://lwn.net/2002/0411/a/2.2.21-rc3.php3
19. http://lwn.net/2002/0411/a/usb-device.php3
20. http://lwn.net/2002/0411/a/usb-org.php3
21. http://lwn.net/2002/0103/kernel.php3
22. http://lwn.net/2002/0411/a/kbuild-2.0.php3
23. http://lwn.net/2002/0411/a/kbuild-2.0-2.5.php3
24. http://lwn.net/2002/0411/a/evms.php3
25. http://evms.sourceforge.net/
26. http://lwn.net/2002/0411/a/ide-tcq.php3
27. http://lwn.net/2002/0411/a/ide-tcq2.php3
28. http://lwn.net/2002/0411/a/ah-tcq.php3
29. http://lwn.net/2002/0411/a/ide31.php3
30. http://lwn.net/2002/0411/a/discontig.php3
31. http://lwn.net/2002/0411/a/discontig2.php3
32. http://www.ntk.net/2002/04/05/#TRACKING
33. http://lwn.net/2002/0411/a/subterfugue.php3
34. http://lwn.net/2002/0411/a/2.4.19-pre6-aa1.php3
35. http://lwn.net/2002/0411/a/2.5.7-gregkh-1.php3
36. http://lwn.net/2002/0411/a/2.4.19-pre5-jp9.php3
37. http://lwn.net/2002/0411/a/2.4.18-WOLK3.3.php3
38. http://lwn.net/2002/0411/a/1.0.9-hch1.php3
39. http://lwn.net/2002/0411/a/2.4.19-pre5-jam2.php3
40. http://lwn.net/2002/0411/a/2.4.19-pre5-ac3-s43.php3
41. http://lwn.net/2002/0411/a/ratcache.php3
42. http://lwn.net/2002/0411/a/preempt.php3
43. http://lwn.net/2002/0411/a/futex.php3
44. http://lwn.net/2002/0411/a/async-futex.php3
45. http://lwn.net/2002/0411/a/oom-killer.php3
46. http://lwn.net/2002/0411/a/affinity.php3
47. http://lwn.net/2002/0411/a/rmap12i.php3
48. http://lwn.net/2002/0411/a/vm-33.php3
49. http://lwn.net/2002/0411/a/vm-33-reason.php3
50. http://lwn.net/2002/0411/a/acl.php3
51. http://lwn.net/2002/0411/a/kgdb.php3
52. http://lwn.net/2002/0411/a/ltp.php3
53. http://lwn.net/2002/0411/a/preempt-stats.php3
54. http://lwn.net/2002/0411/a/usb-serial.php3
55. http://lwn.net/2002/0411/a/devfs.php3
56. http://lwn.net/2002/0411/a/devfs-209.php3
57. http://lwn.net/2002/0411/a/hotplug.php3
58. http://lwn.net/2002/0411/a/fbdev.php3
59. http://lwn.net/2002/0411/a/radeon-fb.php3
60. http://lwn.net/2002/0411/a/dolphin.php3
61. http://lwn.net/2002/0411/a/conexant.php3
62. http://lwn.net/2002/0411/a/ntfs.php3
63. http://lwn.net/2002/0411/a/ntfs-2.0.1.php3
64. http://lwn.net/2002/0411/a/befs.php3
65. http://lwn.net/2002/0411/a/jfs.php3
66. http://lwn.net/2002/0411/a/zerocopy-nfs.php3
67. http://lwn.net/2002/0411/a/forth.php3
68. http://lwn.net/2002/0411/a/pforth.php3
69. http://lwn.net/2002/0411/a/pam-capability.php3
70. http://lwn.net/2002/0411/a/maintainers.php3
71. http://lwn.net/2002/0411/a/mdadm.php3
72. http://lwn.net/2002/0411/a/affix.php3
73. http://lwn.net/2002/0411/a/usagi.php3
74. http://lwn.net/2002/0411/a/x86-64.php3
75. http://lwn.net/2002/0411/a/uml.php3
76. http://lwn.net/2002/0411/a/boot.php3
77. http://lwn.net/2002/0411/a/boot2.php3
78. http://lwn.net/2002/0411/a/boot3.php3
79. http://lwn.net/2002/0411/a/boot4.php3
80. http://lwn.net/2002/0411/a/boot5.php3
81. http://lwn.net/2002/0411/a/boot6.php3
82. http://lwn.net/2002/0411/a/boot7.php3
83. http://lwn.net/2002/0411/a/boot8.php3
84. mailto:lwn@lwn.net
85.
http://oasis.lwn.net/oasisc.php?s=5&c=5&cb=1800473152&url=http%3A%2F%2Flwn.net%2
Fcorp%2Fadvertise%2Ftext%2F
86. http://kt.zork.net/
87. http://www.atnf.csiro.au/~rgooch/linux/docs/kernel-newsflash.html
88. http://www.kerneltrap.com/
89. http://www.osdl.org/archive/rddunlap/linux-port-25x.html
90. http://kernelnewbies.org/status/
91. http://lksr.org/
92. http://www.tux.org/lkml/
93. http://www.linux.eu.org/Linux-MM/
94. http://lse.sourceforge.net/
95. http://www.kernelnewbies.org/
96. http://www.xml.com/ldd/chapter/book/index.html
97. http://lwn.net/2002/0411/dists.php3
98. http://www.eklektix.com/
99. http://www.eklektix.com/
--- ifmail v.2.14.os7-aks1
* Origin: Unknown (2:4615/71.10@fidonet)
Вернуться к списку тем, сортированных по: возрастание даты уменьшение даты тема автор
Архивное /ru.linux/198615ff433eb.html, оценка из 5, голосов 10
|