KernelNewbies:

Summary: Support for the OpenRISC opensource CPU, performance improvements to the writeback throttling, some speedups in the slab allocator, a new iSCSI implementation, support for Near-Field Communication chips used to enable mobile payments, bad block management in the generic software RAID layer, a new "cpupowerutils" userspace utility for power management, filesystem barriers enabled by default in Ext3, Wii Controller support and new drivers and many small improvements.

TableOfContents()

1. Prominent features in the 3.1 kernel

1.1. New architecture: OpenRISC

OpenRISC is an Open Source CPU from the OpenCores project that brings to the world of hardware all the same advantages that Open Source software has known for so long. The aim of [http://opencores.org/openrisc the project] is to create free and open source computing platforms available under the GNU (L)GPL license, and a set of free, open source implementations of the architecture and open source software development tools, libraries, operating systems and applications. The implementation merged in this release is the 32-bit OpenRISC 1000 family (or1k). Details about the CPU can be [http://opencores.org/or1k/OR1200_OpenRISC_Processor found here]

Code: [http://git.kernel.org/?p=linux/kernel/git/torvalds/linux-2.6.git;a=tree;f=arch/openrisc;hb=HEAD arch/openrisc]

1.2. Dynamic writeback throttling

Recommended LWN article: [https://lwn.net/Articles/405076/ "Dynamic writeback throttling"]

"Writeback" is the process of writing data from the RAM to the disk, and in this context throttling means blocking processes temporally to avoid them creating new data that needs to be written, until the current data has been written to the disk. The writeback code was suboptimal, because in certain situations it throttled various processes and forced them to write their data to the disk simultaneously, creating random IO patterns which are not good for performance. The new code avoids these situations and helps to create more linear IO patterns. Also, the new code tries to detect the available disk bandwith, which is used to improve the heuristics that decide which processes should be throttled, which should lead overall to improved throughput. The writeback<->filesystems coupling has also been improved, and a SMP scaling problem has also been fixed.

Code: [http://git.kernel.org/linus/f758eeabeb96f878c860e8f110f94ec8820822a9 (commit)], [http://git.kernel.org/linus/424b351fe1901fc909fd0ca4f21dab58f24c1aac (commit)], [http://git.kernel.org/linus/e98be2d599207c6b31e9bb340d52a231b2f3662d (commit)], [http://git.kernel.org/linus/c42843f2f0bbc9d716a32caf667d18fc2bf3bc4c (commit)], [http://git.kernel.org/linus/ffd1f609ab10532e8137b4b981fdf903ef4d0b32 (commit)], [http://git.kernel.org/linus/1a12d8bd7b2998be01ee55edb64e7473728abb9c (commit)]

1.3. Filesystem barriers enabled by default in Ext3

Hard disks have a memory buffer were they temporally store the instructions and data issued from the OS while the disk processes it. The internal software of modern disks changes the order of the instructions to improve performance, which means that instructions may or may not be committed to the disk in the same order the OS issued them. This breaks many of the assumptions that filesystems need to reliably implement things like journaling or COW, so disks provide a "cache flush" instruction that the OS uses when it needs it. In the Linux world, when a filesystem issues that instruction, it is called a "barrier". Filesystems such as XFS, Btrfs and Ext4 already use and enable barriers by default; Ext3 supports them but until this release it did not enable them by default: while the data safety guarantees are higher, their performance impact in Ext3 is noticeable in many common workloads, and it considered that it was an unnaceptable performance regression to enable them by default. However, Linux distros like Red Hat have enabled barriers by default in Ext3 for a long time, and now the default for mainline has been changed aswell.

In other words: if you use Ext3 and you note performance regressions with this release, try disabling barriers ("barrier=0" mount option).

Code: [http://git.kernel.org/linus/00eacd66cd8ab5fff9df49aa3f261ad43d495434 (commit)]

1.4. Support for Near-Field Communication

Near field communication ([http://en.wikipedia.org/wiki/Near_field_communication Wiki article]) allows for simplified wireless exchange of data between two devices in close proximity to each other, usually by no more than a few centimeters. Co-invented by NXP Semiconductors and Sony in 2002, NFC chips can be found in many smartphones already available in the market and more are planning to add them.

NFC is expected to become a widely used system for making payments by smartphone in the US: shoppers who have their credit card information stored in their NFC smartphones can pay for purchases by waving their smartphones near or tapping them on the reader, rather than bothering with the actual credit card. A smartphone or tablet with an NFC chip could make a credit card payment or serve as keycard or ID card. NFC devices can also read NFC tags on a museum or retail display to get more information or an audio or video presentation. NFC can also be used to share contacts, photos, songs, applications, or videos.

This release adds a NFC subsystem and a new NFC socket family.

Code: [http://git.kernel.org/linus/3e256b8f8dfa309a80b5dece388d85d9a9801a29 (commit 1], [http://git.kernel.org/linus/4d12b8b129f170d0fc3188de1e51a2a1b0f87730 2], [http://git.kernel.org/linus/c7fe3b52c1283b8ba810eb6ecddf1c8a0bcc13ab 3], [http://git.kernel.org/linus/23b7869c0fd08d73c9f83a2db88a13312d6198bb 4], [http://git.kernel.org/linus/c46ee38620a2aa2b25b16bc9738ace80dbff76a4 5], [http://git.kernel.org/linus/14205aa21c8041d7e940ee9bcde87824dc00a08a 6)]

1.5. Slab allocator speedups

In this release, the "slub" slab allocator (the default one) implements wider lockless operations in most of the slowpaths in architectures that support cmpxchg. In particular the patch decreases the overhead in the performance critical section that frees the slabs, which speeds up slab-intensive workloads

Code: [http://git.kernel.org/linus/7e0528dadc9f8b04e4de0dba48a075100c2afe75 (commit 1], [http://git.kernel.org/linus/50d5c41cd151b21ac1dfc98f048210456ccacc20 2], [http://git.kernel.org/linus/8cb0a5068f4108e8ca60d5e0bcfbe6901adcfaef 3], [http://git.kernel.org/linus/3824abd1279ef75f791c43a6b1e3162ae0692b42 4], [http://git.kernel.org/linus/fc9bb8c768abe7ae10861c3510e01a95f98d5933 5], [http://git.kernel.org/linus/b789ef518b2a7231b0668c813f677cee528a9d3f 6], [http://git.kernel.org/linus/5cc6eee8a8c1aefe9c86fe7345a2aa1c4ca70dc6 7], [http://git.kernel.org/linus/61728d1efc927eccfa64c50ede4998a8765805c3 8], [http://git.kernel.org/linus/2cfb7455d223ab24b23df44be430faf92e12390f 9], [http://git.kernel.org/linus/881db7fb03a77af0bcd460fd1de1f4062d5c18fe 10], [http://git.kernel.org/linus/5c2e4bbbd60623f1024a753c291b666068f8a6e7 11], [http://git.kernel.org/linus/e36a2652d7d1ad97f7636a39bdd8654d296cc36b 12], [http://git.kernel.org/linus/80f08c191f6c9563641291bea80657a3b9faabf0 13], [http://git.kernel.org/linus/fc59c05306fe1dcfa3fb8ba34ed45407fba4689c 14], [http://git.kernel.org/linus/4eade540fc35353813097bfdb39465c9b8847a15 15], [http://git.kernel.org/linus/03e404af26dc2ea0d278d7a342de0aab394793ce 16], [http://git.kernel.org/linus/9da4714a2d44ff48618a8d375dd81873e858803d 17)]

1.6. VFS Scalability improvements

Like it happened in past releases, this release has a new round of VFS scalability improvements:

1.7. New iSCSI implementation

Recommended LWN article: [https://lwn.net/Articles/424004/ A tale of two SCSI targets]

The current iSCSI implementation used in the kernel, SCST, has been obsoleted with the inclusion of the Linux-iSCSI.org SCSI target. The Linux-iSCSI.org target module is a full featured in-kernel software implementation of iSCSI target mode (RFC-3720). More information can be found [http://linux-iscsi.org/wiki/ISCSI here].

Code: [http://git.kernel.org/linus/e48354ce078c079996f89d715dfa44814b4eba01 (commit)]

1.8. cpupowerutils

cpupowerutils is a [http://lkml.org/lkml/2011/3/11/105 new project] derived from cpufrequtils and extended with other features, like a powerful HW monitoring tool. Why a new project? The announcement explains it:

"CPU power consumption vs performance tuning is not about CPU frequency switching anymore for quite some time. Deep sleep states, traditional dynamic frequency scaling and hidden turbo/boost frequencies are tight close together and depend on each other. The first two exist on different architectures like PPC, Itanium and ARM the latter only on X86. On X86 the APU (CPU+GPU) will only run most efficiently if CPU and GPU has proper power management in place. Users and Developers want to have *one* tool to get an overview what their system supports and to monitor and debug CPU power management in detail". cpupowerutils is that tool.

The code is available in [http://git.kernel.org/?p=linux/kernel/git/torvalds/linux-2.6.git;a=tree;f=tools/power/cpupower;hb=HEAD tools/power/cpupower/]

1.9. Software RAID: Bad block management

The MD layer (aka "Multiple Devices", aka software raid) has gained bad block management support: bad blocks will be added to a list, and the system will try not to use them. This feature requires an updated mdadm version.

Code: [http://git.kernel.org/?p=linux/kernel/git/torvalds/linux-2.6.git;a=shortlog;h=58c54fcca3bac5bf9290cfed31c76e4c4bfbabaf many commits]

1.10. Personality to report 2.6.x version numbers

There are some programs which broke with the new Linux 3.0 version. Some of those were binary only (for example, all kind of management software from a certain printer manufacturer). sys.platform in Python is also [http://bugs.python.org/issue12326 know] to return "linux3" under 3.0, which breaks things that were checking for sys.platform == "linux2". To solve this problem, a UNAME26 personality has been added to report 2.6.x version numbers [http://git.kernel.org/linus/be27425dcc516fd08245b047ea57f83b8f6f0903 (commit)]

1.11. Wii Controller support

The driver for the Nintendo Wii Remote has been added

Code: [http://git.kernel.org/linus/fb51b44385a0ded0d629d5cf4a2095f80fb01b56 (commit)]

2. Driver and architecture-specific changes

All the driver and architecture-specific changes can be found in the [http://kernelnewbies.org/Linux_3.1_DriverArch Linux_3.1_DriverArch page]

3. Memory management

"Slub" slab allocator

4. Networking

5. File systems

BTRFS

NFS

XFS

REISERFS

FAT

HFSplus

SQUASHFS

6. Block layer

Device Mapper

7. Crypto

8. Virtualization

KVM

[http://git.kernel.org/linus/d910f5c1064d7ff09c31b0191564f9f99e210f91 5)]

XEN

VMWARE

Others

9. Security

TOMOYO

10. Tracing/profiling

11. Various core changes


CategoryReleases

KernelNewbies: Linux_3.1 (last edited 2011-11-24 09:53:44 by Morot)