Let’s continue to view what’s new on Linux Kernel 2.6.24.
1. SPI/SDIO support in the MMC layer
MultiMedia Card (MMC) subsystem maintainer Pierre Ossman described what he plans to push upstream, “this release will probably be one of the biggest ones for the MMC layer so far. The major pieces are SDIO and SPI support, but there are several small nuggets as well.” Regarding the new Secure Digital Input Output (SDIO) stack he noted, “gone are the days of having to rely on proprietary stacks for SDIO support in Linux.
2. USB authorization
As part of the efforts to make the USB layer ready for wireless USB, Linux 2.6.24 is getting support for USB device authorization, which allows you to control if a USB device (wireless or not) can be used or not in a system.
3. Per-device dirty memory thresholds
When a process writes data to the disk, the data is stored temporally in ‘dirty’ memory until the kernel decides to write the data to the disk (‘cleaning’ the memory used to store the data). A process can ‘dirty’ the memory faster than the data is written to the disk, so the kernel throttles processes when there’s too much dirty memory around. The problem with this mechanism is that the dirty memory thresholds are global, the mechanism doesn’t care if there are several storage devices in the system, much less if some of them are faster than others. There are a lot of scenarios where this design harms performance. For example, if there’s a very slow storage device in the system (ex: a USB 1.0 disk, or a NFS mount over dialup), the thresholds are hit very quickly – not allowing other processes that may be working in much faster local disk to progress. Stacked block devices (ex: LVM/DM) are much worse and even deadlock-prone (check the LWN article).
4. PID and network namespaces
Linux 2.6.24 adds PID namespaces and basic support for network namespaces. They’re used through the CLONE_NEWPID and CLONE_NEWNET clone() flags.
5. Large Receive Offload (LRO) support for TCP traffic
LRO combines received tcp packets to a single larger tcp packet and passes them then to the network stack in order to increase performance (throughput). After many out-of-the-tree iterations, mainline Linux is getting support for this feature
6. Task Control Groups
There have been various proposals in the Linux arena for resource management/accounting and other task grouping subsystems in the kernel (Resgroups, User Beancounters, NSProxy cgroups, and others). Task Control Groups is the framework that is getting merged in 2.6.24 to fulfill the functionality that lead to the creation of such proposals.
7. Linux Kernel Markers
The Linux Kernel Markers implement static probing points for the Linux kernel. Dynamic probing system like kprobes/dtrace can put probes pretty much anywhere. However, the scripts that dynamic probing points use can become quickly outdated, because a small change in the kernel may trigger a rewrite of the script, which needs to be maintained and updated separately, and will not work for all kernel versions.
8. Read-only bind mounts
Read-only bind mounts (mount –bind) allows a read-only view into a read-write filesystem. In the process of doing that, it also provides infrastructure for keeping track of the number of writers to any given mount. This has a number of uses. It allows chroots to have parts of filesystems writable. It will be useful for containers in the future because users may have root inside a container, but should not be allowed to write to somefilesystems.
9. x86-32/64 arch reunification
When support for the x86-64 AMD architecture was developed, it was decided to develop it as a “fork” of the traditional x86 architecture for comodity reasons. Many patches needed to patch a file in the i386 architecure directory, and another similar patch for the duplicated file in the x86_64 directory. It has been decided to unify both architectures in the same directory again.
Note: All quoted description is from kernelnewbie.org.
Tags: Cool Stuff, How-to, Linux by hengdu
No Comments »