NOTE
If the new kernel is released before the previous message has been removed, it means that this article isn't entirely complete. After reading it, you can satisfy your curiosity with other new sources such as
LWN list of changes [https://lwn.net/Articles/573272/ part 1], [https://lwn.net/Articles/574222/ part 2], [https://lwn.net/Articles/574965/ part 3]
German language: heise.de Kernel-Log Was 3.13 bringt [http://www.heise.de/open/artikel/Kernel-Log-Was-3-13-bringt-1-Dateisysteme-und-Storage-2062929.html (1): Dateisysteme und Storage], [http://www.heise.de/open/artikel/Kernel-Log-Was-3-13-bringt-2-Netzwerk-2066673.html (2) Netzwerk], [http://www.heise.de/open/artikel/Kernel-Log-Was-3-13-bringt-3-Infrastruktur-2070247.html (3) Infrastruktur ], [http://www.heise.de/open/artikel/Kernel-Log-Was-3-13-bringt-4-Treiber-2074253.html (4) Treiber], [http://www.heise.de/open/artikel/Kernel-Log-Was-3-13-bringt-5-Grafiktreiber-2074557.html (5) Grafiktreiber]
1. Prominent features
1.1. A scalable block layer for high performance SSD storage
Traditional hard disks have defined for decades the design requirements that operating systems use to communicate applications with the storage device drivers. With the advent of modern solid-state disks (SSD), past assumptions are no longer valid. Linux had a single coarse lock design for protecting the IO request queue, which can achieve an IO submission rate of around 800.000 IOs per second, regardless of how many cores are used to submit IOs. This was more than enough for traditional magnetic hard disks, whose IO submission rate in random accesses is in the hundreds, but it is not enough for modern SSD disks, which can achieve a rate close to 1 million, and are improving fast with every new generation. It is also unfit for the modern multicore world.
This release includes a new design for the Linux block layer, based on two levels of queues: one level of per-CPU queues for submitting IO, which then funnel down into a second level of hardware submission queues. The mapping between submission queues and hardware queues might be 1:1 or N:M, depending on hardware support and configuration. Experiments shown that this design can achieve many millions of IOs per second, leveraging the new capabilities of NVM-Express or high-end PCI-E devices and multicore CPUs, while still providing the common interface and convenience features of the block layer.
Paper: [http://kernel.dk/blk-mq.pdf Linux Block IO: Introducing Multi-queue SSD Access on Multi-core Systems]
Recommended LWN article: [https://lwn.net/Articles/552904/ The multiqueue block layer]
Code: [http://git.kernel.org/linus/320ae51feed5c2f13664aa05a76bec198967e04d commit]
1.2. nftables, the successor of iptables
iptables has a number of limitations both at the functional and code design level: problems with the system update rules, code duplication, which cause problems for code maintenance and for users. nftables is a new packet filtering framework that solves these problems, while providing backwards compatibility for current iptable users.
The core of the nftables design is a pseudo-virtual machine. A userspace utility interprets the rule-set provided by the user, it compiles it to pseudo-bytecode and then it transfers it to the kernel. This approach can replace thousands of lines of code, since the bytecode instruction set can express the packet selectors for all existing protocols. Because the userspace utility parses the protocols to bytecode, it is no longer necessary a specific extension in kernel-space for each match, which means that users are likely not need to upgrade the kernel to obtain new matches and features, userspace upgrades will provide them.
nftables provides backwards iptables compatibility. There are new iptables/iptables utilities that translate iptables rules to nftables bytecode, and it is also possible to use and add new xtable modules. As a bonus, these new utilities provide features that weren't possible with the old iptables design: notification for changes in tables/chains, better incremental rule update support, and the ability to enable/disable the chains per table.
How-to of the new utility and syntax is available [http://kernelnewbies.org/nftables_examples here]
Recommended LWN article: [https://lwn.net/Articles/564095/ The return of nftables]
Video talk about nftables: http://youtu.be/P58CCi5Hhl4 ([http://www.slideshare.net/ennael/2013-kernel-recipesnftables slides])
Project page and utility source code: http://netfilter.org/projects/nftables/
Code: [http://git.kernel.org/linus/96518518cc417bb0a8c80b9fb736202e28acdf96 commit]
1.3. Radeon: power management enabled by default, automatic GPU switching, Hawaii support
- Power management enabled by default
Linux 3.11 [http://kernelnewbies.org/Linux_3.11#head-61f0d4595b25d0f19a5dc7574d07e9107521b397 added] power management support for many AMD Radeon devices. The power management support provides improved power consumption, which is critical for battery powered devices, but it is also a requirement to provide good high-end performance, as it provides the ability to reclock to GPU to higher power states in GPUs and APUs that default to slower clock speeds.
This support had to be enabled with a module parameter. This release enables power management by default for lots of AMD Radeon hardware: BTC asics, SI asics, SUMO/PALM APUs, evergreen asics, r7xx asics, hawaii. Code: [http://git.kernel.org/linus/56684ec5b050e6a392cb3e5324eda12a13413a57 commit], [http://git.kernel.org/linus/68bc7785a725c66e5fb1b499303e36a02a0586c4 commit], [http://git.kernel.org/linus/5a16f7614e33c080bbece39527bde144dcca4ec7 commit], [http://git.kernel.org/linus/59f7a2f2dae51bf9cf1f2dce26b4faa9d705302f commit], [http://git.kernel.org/linus/ab70b1dde73ff4525c3cd51090c233482c50f217 commit], [http://git.kernel.org/linus/2d40038d3f99a489fc1ef6c03d5a600de34c552f commit]
- Automatic GPU switching
Linux 3.12 added support for automatic GPU switching in laptops with dual GPUs. This release adds support for this feature in AMD Radeon hardware. Code: [http://git.kernel.org/linus/10ebc0bc09344ab6310309169efc73dfe6c23d72 commit]
- Hawaii
This release adds support for [https://en.wikipedia.org/wiki/AMD_Radeon_Rx_200_Series#Radeon_R9_290 R9 290X] "Hawaii" devices. Code: [http://git.kernel.org/linus/96212fe8c27b39cc713cd8eb8d8e7a55ce3405d5 commit]
1.4. Power capping framework
This release includes a framework that allow to set power consumption limits to devices that support it. It has been designed around the Intel RAPL (Running Average Power Limit) mechanism available in the latest Intel processors (Sandy Bridge and later, many devices will also be added RAPL support in the future). This framework provides a consistent interface between the kernel and user space that allows power capping drivers to expose their settings to user space in a uniform way. You can see the Documentation [https://git.kernel.org/cgit/linux/kernel/git/torvalds/linux.git/plain/Documentation/power/powercap/powercap.txt here]
Code: [http://git.kernel.org/linus/75d2364ea0cab3a95be3f8d1f8dabd20ac4b1b2a (commit 1], [http://git.kernel.org/linus/e23feb16685a8d1c62aa5bba7ebcddf4ba57ffcb 2], [http://git.kernel.org/linus/2d281d8196e38dd3a4ee9af26621ddde8329f269 3], [http://git.kernel.org/linus/ed93b71492da3464b4798613aa8a99bed914251b 4)]
1.5. Improved performance in NUMA systems
Modern hardware with many CPUs usually have a memory controller for each CPU. While all CPUs can access to any memory direction, accessing the portions of memory addressed from a local memory controller is faster than accessing portions of memory attached to the controllers of other CPUs. This is called NUMA - "non-uniform memory architecture". Because the performance profile is different depending on the locality of the memory accesses, it's important that the operating system schedules a process to run in the same CPU where the memory it will access is mapped.
The way Linux handles these situations was deficient; Linux 3.8 [http://kernelnewbies.org/Linux_3.8#head-c16d4288b51f0b50fbf615657e81b0db643fa7a0 included a new NUMA foundation] that would allow to build smarter NUMA policies in future releases. This release includes many of such policies that attempt to put a process near its memory, and can handle cases such as shared pages between processes or transparent huge pages. New sysctls have been added to enable/disable and tune the NUMA scheduling (see documentation [http://git.kernel.org/linus/10fc05d0e551146ad6feb0ab8902d28a2d3c5624 here])
Recommended LWN article: [https://lwn.net/Articles/568870/ NUMA scheduling progress]
1.6. Improved page table access scalability in hugepage workloads
The Linux kernels tracks information about each memory page in a data structure called page table. In workloads that use hugepages, the lock used to protect some parts of the table has become a lock contention. This release uses finer grained locking for these parts, improving the page table access scalability in threaded hugepage workloads. For more details, see the recommended LWN article.
Recommended LWN article: [https://lwn.net/Articles/568076/ Split PMD locks]
Code: [http://git.kernel.org/linus/e009bb30c8df8a52a9622b616b67436b6a03a0cd commit], [http://git.kernel.org/linus/9491846fca57e9326b6673716c386b76fc13ebca commit]
1.7. Squashfs performance improved
Squashfs, the read-only filesystem used by most live distros, installers, and some embedded Linux distributions, has got important improvements that dramatically increase performance in workloads with multiple parallel reads. One of them is the direct decompression of data into the Linux page cache, which avoids a copy of the data and eliminates the single lock used to protect the buffer. The other one is multithreaded decompression.
Code: [http://git.kernel.org/linus/0d455c12c6428647547bacccaaced3cae0f35570 (commit 1], [http://git.kernel.org/linus/cd59c2ec5f37a2bc1315c9324aab6c21d43ffa1a 2], [http://git.kernel.org/linus/d208383d640727b70cd6689bc17e67e9b5ebf4ff 3)]
1.8. TCP Fast Open enabled by default
TCP Fast Open is an optimization to the process of stablishing a TCP connection that allows the elimination of one round time trip from certain kinds of TCP conversation, which can improve the load speed of web pages. In [http://kernelnewbies.org/Linux_3.6#head-ac78950a7b57d92d5835642926f0e147c680b99c Linux 3.6] and [http://kernelnewbies.org/Linux_3.7#head-cd32b65674184083465d349ad6d772c828fbbd8b Linux 3.7], support was added for this feature, which requires userspace support. This release enables TCP Fast Open by default.
1.9. NFC payments support
This release implements support for the [http://www.smartcardalliance.org/pages/publications-nfc-frequently-asked-questions#7 Secure Element]. A netlink API is available to enable, disable and discover NFC attached (embedded or UICC ones) secure elements. With some userspace help, this allows to support NFC payments, used to implement financial transactions. Only the pn544 driver currently supports this API.
Code: [http://git.kernel.org/linus/5ce3f32b5264b337bfd13a780452a17705307725 commit]
1.10. Support for the High-availability Seamless Redundancy protocol
[https://en.wikipedia.org/wiki/High-availability_Seamless_Redundancy High-availability Seamless Redundancy] (HSR) is a redundancy protocol for Ethernet. It provides instant failover redundancy for such networks. It requires a special network topology where all nodes are connected in a ring (each node having two physical network interfaces). It is suited for applications that demand high availability and very short reaction time.
Code: [http://git.kernel.org/linus/f421436a591d34fa5279b54a96ac07d70250cc8d commit]
2. Drivers and architectures
All the driver and architecture-specific changes can be found in the [http://kernelnewbies.org/Linux_3.13-DriversArch Linux_3.13-DriversArch page]
3. Core
4. Memory management
5. Block layer
6. File systems
7. Networking
- Add NFC digital layer implementation: Most NFC chipsets implement the NFC digital layer in firmware, but others only implement the NFC analog layer and expect the host to implement this layer
Add support for NFC-A technology at 106 kbits/s [http://git.kernel.org/linus/2c66daecc4092e6049673c281b2e6f0d5e59a94c commit]
Add support for NFC-F technology at 212 kbits/s and 424 kbits/s [http://git.kernel.org/linus/8c0695e4998dd268ff2a05951961247b7e015651 commit]
Add initiator NFC-DEP support [http://git.kernel.org/linus/7d0911c02fa2a448a28d7844d2a0c439ff8397b1 commit]
Add target NFC-DEP support [http://git.kernel.org/linus/1c7a4c24fbfd99442cc6e14dc80fcb00f118e8b8 commit]
Implement the mechanism used to send commands to the driver in initiator mode [http://git.kernel.org/linus/59ee2361c9248f07846f7a6e585768dcce18fb16 commit]
Digital Protocol stack implementation [http://git.kernel.org/linus/4b10884eb428c243ae2070a539612e645f3d9b93 commit]
- Bluetooth
Introduce new HCI socket channel that allows user applications to take control over a specific HCI device. The application gains exclusive access to this device and forces the kernel to stay away and not manage it [http://git.kernel.org/linus/23500189d7e03a071f0746f43f2cce875a62c91c commit], [http://git.kernel.org/linus/0736cfa8e5bb7ee1d7b7d28aabe634fd3f85cb92 commit]
Add support creating virtual AMP controllers [http://git.kernel.org/linus/23424c0d316941f30cd953fcbff7082044228487 commit]
Add support for setting Device Under Test mode [http://git.kernel.org/linus/4b4148e9acc1a51c454f133637e5dc7e298bd5bb commit]
Add a new mgmt_set_bredr command for enabling/disabling BR/EDR functionality. This can be convenient when one wants to make a dual-mode controller behave like a single-mode one. The command is only available for dual-mode controllers and requires that LE is enabled before using it [http://git.kernel.org/linus/0663ca2a032eea12480a8f86fe08bef9d72f8faf commit]
Add management command for setting static address on dual-mode BR/EDR/LE and LE only controllers where it is possible to configure a random static address [http://git.kernel.org/linus/d13eafce2c892d57f1eb243e43dfe48b4626006d commit]
Add new management setting for enabling and disabling LE advertising [http://git.kernel.org/linus/eeca6f891305a80378da978f803821c2a0b648b6 commit], [http://git.kernel.org/linus/4375f1037d52602413142e290608d0d84671ad36 commit]
8. Crypto
9. Virtualization
10. Security
SELinux: Enable setting security contexts on rootfs (ramfs) inodes. [http://git.kernel.org/linus/5c73fceb8c70466c5876ad94c356922ae75a0820 commit]
SELinux: Reduce overhead that harmed the high_systime workload of the AIM7 benchmark [http://git.kernel.org/linus/fee7114298cf54bbd221cdb2ab49738be8b94f4c commit]
Smack treats setting a file read lock as the write operation that it is. Unfortunately, many programs assume that setting a read lock is a read operation, and don't work well in the Smack environment. This release implements a new access mode (lock) to address this problem [http://git.kernel.org/linus/c0ab6e56dcb7ca9903d460247cb464e769ae6e77 commit]
Smack: When the ptrace security hooks were split the addition of a mode parameter was not taken advantage of in the Smack ptrace access check. This changes the access check from always looking for read and write access to using the passed mode [http://git.kernel.org/linus/b5dfd8075bc26636d11c3d8888940198afbf5112 commit]
audit: new feature which only grants processes with CAP_AUDIT_CONTROL the ability to unset their loginuid [http://git.kernel.org/linus/d040e5af380554c23ffe0a034ae5f3e53da93a1d commit]
audit: feature which allows userspace to set it such that the loginuid is absolutely immutable, even if you have CAP_AUDIT_CONTROL. CONFIG_AUDIT_LOGINUID_IMMUTABLE has been removed [http://git.kernel.org/linus/21b85c31d23f2047d47e1f74bfa5caa8b75c1c77 commit], [http://git.kernel.org/linus/83fa6bbe4c4541ae748b550b4ec391f8a0acfe94 commit]
keys: Expand the capacity of a keyring [http://git.kernel.org/linus/b2a4df200d570b2c33a57e1ebfa5896e4bc81b69 commit]
keys: Implement a big key type that can save to tmpfs [http://git.kernel.org/linus/ab3c3587f8cda9083209a61dbe3a4407d3cada10 commit]
keys: Add per-user namespace registers for persistent per-UID kerberos caches [http://git.kernel.org/linus/f36f8c75ae2e7d4da34f4c908cebdb4aa42c977e commit]
11. Tracing/perf
12. Other news sites that track the changes of this release
LWN [https://lwn.net/Articles/573272/ part 1], [https://lwn.net/Articles/574222/ part 2], [https://lwn.net/Articles/574965/ part 3]
German language: heise.de Kernel-Log Was 3.13 bringt [http://www.heise.de/open/artikel/Kernel-Log-Was-3-13-bringt-1-Dateisysteme-und-Storage-2062929.html (1): Dateisysteme und Storage], [http://www.heise.de/open/artikel/Kernel-Log-Was-3-13-bringt-2-Netzwerk-2066673.html (2) Netzwerk], [http://www.heise.de/open/artikel/Kernel-Log-Was-3-13-bringt-3-Infrastruktur-2070247.html (3) Infrastruktur ], [http://www.heise.de/open/artikel/Kernel-Log-Was-3-13-bringt-4-Treiber-2074253.html (4) Treiber], [http://www.heise.de/open/artikel/Kernel-Log-Was-3-13-bringt-5-Grafiktreiber-2074557.html (5) Grafiktreiber]