KernelNewbies:

/!\ /!\ /!\ WORK IN PROGRESS /!\ /!\ /!\

Summary: Linux 2.6.35

This page contains details about the main features included in the kernel core and the main subsystems. For details on architecture-specific changes and driver changes, check the page [wiki:Linux_2_6_35-DriversArch Linux_2_6_35-DriversArch]

TableOfContents()

1. Prominent features (the cool stuff)

1.1. Transparent spreading of incoming network traffic load across CPUs

Recommended LWN articles: [http://lwn.net/Articles/362339/ "Receive packet steering"] and [http://lwn.net/Articles/382428/ "Receive flow steering"]

Network cards have improved the bandwith to the point where it's hard for a single modern CPU to keep up. Two new features contributed by Google aim to spread the load of network handling across the CPUs available in the system: Receive Packet Steering (RPS) and Receive Flow Steering (RFS).

RPS distributes the load of received packet processing across multiple CPUs. This solution allows protocol processing (e.g. IP and TCP) to be performed on packets in parallel (contrary to the previous code). For each device (or each receive queue in a multi-queue device) a hashing of the packet header is used to index into a mask of CPUs and decide which CPU will be used to process a packet. There are also heuristics provided by RFS code, which is a natural extension of RPS, and instead of randomly choosing the CPU from a hash, it tries to use the CPU where the application running the recvmsg() syscall is being run, to maximize cache hits. This effectively emulates what a multi-queue NIC can provide, but in software and for all kind of hardware.

Benchmarks of 500 instances of netperf TCP_RR test with 1 byte request and response show the potential benefit of this feature, a e1000e network card on 8 core Intel server goes from 104K tps at 30% CPU usage, to 303K tps at 61% CPU usage when using RPS+RFS. A RPC test which is similar in structure to the netperf RR test with 100 threads on each host, but doing more work in userspace that netperf, goes from 103K tps at 48% of CPU utilization to 223K at 73% CPU utilization and much lower latency.

Code: [http://git.kernel.org/linus/0a9627f2649a02bea165cfd529d7bcb625c2fcad (commit 1], [http://git.kernel.org/linus/df3345457a7a174dfb5872a070af80d456985038 2], [http://git.kernel.org/linus/fec5e652e58fa6017b2c9e06466cb2a6538de5b4 3)]

1.2. Btrfs improvements

1.3. XFS Delayed logging

1.4. perf improvements

1.5. Graphic improvements

This version carries a bunch of interesting improvements to the graphics stack.

1.6. Support for multiple multicast route tables

Normally, a multicast router runs a userspace daemon and decides what to do with a multicast packet based on the source and destination addresses. This feature adds support for multiple independant multicast routing instances, so the kernel is able to take interfaces and packet marks into account and run multiple instances of userspace daemons simultaneously, each one handling a single table. Code: [http://git.kernel.org/linus/f0ad0860d01e47a3ffd220564c5c653b3afbe962 (commit)], [http://git.kernel.org/linus/d1db275dd3f6e4182c4c4b4a1ac6287925d60569 (commit)], [http://git.kernel.org/linus/5b285cac3570a935aaa28312c1ea28f9e01c5452 (commit)]

1.7. L2TP Version 3 (RFC 3931) support

This version adds support for Layer 2 Tunneling Protocol (L2TP) version 3, [http://www.ietf.org/rfc/rfc3931.txt RFC 3931]. L2TP provides a dynamic mechanism for tunneling Layer 2 (L2) "circuits" across a packet-oriented data network (e.g., over IP). L2TP, as originally defined in RFC 2661, is a standard method for tunneling Point-to-Point Protocol (PPP) [RFC1661] sessions. L2TP has since been adopted for tunneling a number of other L2 protocols, including ATM, Frame Relay, HDLC and even raw ethernet frames, this is the version 3. Code: [http://git.kernel.org/linus/f7faffa3ff8ef6ae712ef16312b8a2aa7a1c95fe (commit)], [http://git.kernel.org/linus/e0d4435f93905f517003cfa7328a36ea19788147 (commit)], [http://git.kernel.org/linus/0d76751fad7739014485ba5bd388d4f1b4fd4143 (commit)], [http://git.kernel.org/linus/789a4a2c61d843df67988d69e7c3f3a4bca97e8e (commit)]

1.8. CAIF Protocol support

Support for the CAIF protocol. CAIF is a MUX protocol used by ST-Ericsson cellular modems for communication between Modem and host. The host processes can open virtual AT channels, initiate GPRS Data connections, Video channels and Utility Channels. The Utility Channels are general purpose pipes between modem and host. ST-Ericsson modems support a number of transports between modem and host. Currently, UART and Loopback are available for Linux [http://git.kernel.org/linus/70596b612c04694806a31dd389bd796c035085fa (commit 1], [http://git.kernel.org/linus/09009f30de188c847d72039e6250bfea56a0f887 2], [http://git.kernel.org/linus/f671c54207d8a47129f35a84569fdfda614d2439 3], [http://git.kernel.org/linus/2721c5b9dd2a56a9710021c00146bb26ba8dd7b3 4], [http://git.kernel.org/linus/b482cd2053e3b90a7b33a78c63cdb6badf2ec383 5], [http://git.kernel.org/linus/15c9ac0c80e390df09ce5730a7b08b13e07a8dd5 6], [http://git.kernel.org/linus/c72dfae2f77620e5b3fcee1beeee7e536a42b2ad 7], [http://git.kernel.org/linus/e6f95ec8db312491235b4f06343fbd991a82ce20 8], [http://git.kernel.org/linus/cc36a070b5901cd54386348b4d79d2daac91ce75 9], [http://git.kernel.org/linus/3908c6902372206cc582ecf459af889b09a150c9 10], [http://git.kernel.org/linus/edc7616c307ad315159a8aa050142237f524e079 11], [http://git.kernel.org/linus/9b27105b4a44c54bf91ecd7d0315034ae75684f7 12)]

1.9. ACPI Platform Error Interface support

Support for the ACPI Platform Error Interface (APEI). This improves NMI handling especially. In addition it supports the APEI Error Record Serialization Table (ERST), the APEI Generic Hardware Error Source and APEI Error INJection (EINJ) and saving of MCE (Machine Check Exception) errors into flash. For more information about APEI, please refer to [http://www.acpi.info/DOWNLOADS/ACPIspec40a.pdf ACPI Specification version 4.0], chapter 17. Code: [http://git.kernel.org/linus/15651291a2f8c11e7e6a42d8bfde7a213ff13262 (commit 1], [http://git.kernel.org/linus/a643ce207f3e70030bdb431e2a363cc111a60c1a 2], [http://git.kernel.org/linus/9dc966641677795f4d6b0a9ba630d6a3a3e24a57 3], [http://git.kernel.org/linus/ea8c071cad789b1919355fc7a67182a5c9994e6b 4], [http://git.kernel.org/linus/e40213450b53157967a1f83eda50e9a941c13a08 5], [http://git.kernel.org/linus/affb72c3a8984ba55e055b0a0228c3ea1a056758 6], [http://git.kernel.org/linus/801eab8118f61255d8e2be35939c572042618742 7], [http://git.kernel.org/linus/fab1c23242528771a955c475ef23d99156a71a7f 8], [http://git.kernel.org/linus/d334a49113a4a33109fd24e46073280ecd1bea0d 9], [http://git.kernel.org/linus/06d65deade9aabba58e0518df86dcd324e86b832 10], [http://git.kernel.org/linus/a08f82d08053fb6e3aa3635c2c26456d96337c8b 11], [http://git.kernel.org/linus/482908b49ebfa453dd0455910c951c750567c05d 12], [http://git.kernel.org/linus/6e320ec1d98f9eb93d5b2a5d70e2f40dce923f1b 13)]

2. CPU scheduler

3. Filesystems

4. Networking

5. Tracing/Profiling

6. Crypto

7. Virtualization

8. MD

9. Block

10. Security

11. Various

KernelNewbies: Linux_2_6_35 (last edited 2010-07-19 23:35:35 by diegocalleja)