Size: 36024
Comment:
|
← Revision 43 as of 2017-12-30 01:30:13 ⇥
Size: 37624
Comment: converted to 1.6 markup
|
Deletions are marked like this. | Additions are marked like this. |
Line 5: | Line 5: |
Linux 3.13 has not been released '''Summary''': This release includes nftables, the successor of iptables, a revamp of the block layer designed for high-performance SSDs, AMD Radeon power management will be enabled by default, improved NUMA performance, improved performance with hugepage workloads, a power capping framework to cap power consumption in Intel RAPL devices, improved squashfs performance, TCP Fast Open enabled by default, support for NFC payments, support for the High-availability Seamless Redundancy protocol, new drivers and many small improvements. [[TableOfContents()]] |
Linux 3.13 [[https://lkml.org/lkml/2014/1/19/148|was released]] on Sun, 19 Jan 2014. '''Summary''': This release includes nftables, the successor of iptables, a revamp of the block layer designed for high-performance SSDs, a power capping framework to cap power consumption in Intel RAPL devices, improved squashfs performance, AMD Radeon power management enabled by default and automatic Radeon GPU switching, improved NUMA performance, improved performance with hugepage workloads, TCP Fast Open enabled by default, support for NFC payments, support for the High-availability Seamless Redundancy protocol, new drivers and many other small improvements. <<TableOfContents>> |
Line 13: | Line 13: |
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 has become not enough for the most advanced 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] |
Traditional hard disks have defined for decades the design 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 has become not enough for the most advanced 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. Note: in this release, only the virtioblk driver has been ported to this interface, other drivers will be ported in next releases. 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]] |
Line 27: | Line 27: |
The core of the nftables design is a pseudo-virtual machine. A [http://git.netfilter.org/nftables/ 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. There is also [http://git.netfilter.org/libnftables/ a new library] for utilities that need to interact with the firewall. nftables provides backwards iptables compatibility. There are [http://git.netfilter.org/iptables-nftables/ 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]) |
The core of the nftables design is a simple pseudo-virtual machine inspired in BPF. A [[http://git.netfilter.org/nftables/|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. There is also [[http://git.netfilter.org/libnftables/|a new library]] for utilities that need to interact with the firewall. In this release, nftables is already usable in most cases but a complete support (read: nftables at a better level than iptables) should be available in future releases. nftables provides backwards iptables compatibility. There are [[http://git.netfilter.org/iptables-nftables/|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. The new nft utility has a improved syntax. nftables documentation is available in the [[http://people.netfilter.org/wiki-nftables/index.php/Main_Page|nftables wiki page]]; a small, quick and incomplete how-to 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]]) |
Line 39: | Line 39: |
Code: [http://git.kernel.org/linus/96518518cc417bb0a8c80b9fb736202e28acdf96 commit], [http://git.kernel.org/linus/20a69341f2d00cd042e81c82289fba8a13c05a25 commit] == Radeon: power management enabled by default, automatic GPU switching, Hawaii support == |
Code: [[http://git.kernel.org/linus/96518518cc417bb0a8c80b9fb736202e28acdf96|commit]], [[http://git.kernel.org/linus/20a69341f2d00cd042e81c82289fba8a13c05a25|commit]] == Radeon: power management enabled by default, automatic GPU switching, R9 290X Hawaii support == |
Line 43: | Line 43: |
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] |
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]] |
Line 48: | Line 49: |
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] |
Linux 3.12 added infrastructure 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]] '''R9 290X 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]] |
Line 55: | Line 58: |
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)] |
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)]] |
Line 61: | Line 64: |
This release adds support for the [http://www.intel.com/content/www/us/en/architecture-and-technology/many-integrated-core/intel-many-integrated-core-architecture.html Intel Many Integrated Core Architecture] or MIC, a multiprocessor computer architecture incorporating earlier work on the Larrabee many core architecture, the Teraflops Research Chip multicore chip research project, and the Intel Single-chip Cloud Computer multicore microprocessor. The [currently world's fastest supercomputer, the [https://en.wikipedia.org/wiki/Tianhe-2 Tianhe-2] at the National Supercomputing Center in Guangzhou, China, utilizes this architecture to achieve 33.86 PetaFLOPS. The MIC family of PCIe form factor coprocessor devices run a 64 bit Linux OS. The driver manages card OS state and enables communication between host and card. More information about the Intel MIC family as well as the Linux OS and tools for MIC to use with this driver are available [http://software.intel.com/en-us/mic-develope here]. This release currently supports Intel MIC X100 devices, and includes a sample user space daemon. Code: [http://git.kernel.org/linus/2141c7c5ee677014023cb50c793f91e85f44d2ea commit 1], [http://git.kernel.org/linus/f69bcbf3b4c4b333dcd7a48eaf868bf0c88edab5 2], [http://git.kernel.org/linus/a01e28f692088e9789ebb0c374fdac83de59899b 3], [http://git.kernel.org/linus/b170d8ce3f81bd97e85756e9184779a56a5f55a7 4], [http://git.kernel.org/linus/3a6a9201897c6482573ad07ee880574147761006 5], [http://git.kernel.org/linus/8d49751580db804a02caf6a5b7cebe2ff26c0d7e 6] |
This release adds support for the [[http://www.intel.com/content/www/us/en/architecture-and-technology/many-integrated-core/intel-many-integrated-core-architecture.html|Intel Many Integrated Core Architecture]] or MIC, a multiprocessor computer architecture incorporating earlier work on the Larrabee many core architecture, the Teraflops Research Chip multicore chip research project, and the Intel Single-chip Cloud Computer multicore microprocessor. The currently world's fastest supercomputer, the [[https://en.wikipedia.org/wiki/Tianhe-2|Tianhe-2]] at the National Supercomputing Center in Guangzhou, China, utilizes this architecture to achieve 33.86 PetaFLOPS. The MIC family of PCIe form factor coprocessor devices run a 64-bit Linux OS. The driver manages card OS state and enables communication between host and card. More information about the Intel MIC family as well as the Linux OS and tools for MIC to use with this driver are available [[http://software.intel.com/en-us/mic-developer|here]]. This release currently supports Intel MIC X100 devices, and includes a sample user space daemon. Code: [[http://git.kernel.org/linus/2141c7c5ee677014023cb50c793f91e85f44d2ea|commit 1]], [[http://git.kernel.org/linus/f69bcbf3b4c4b333dcd7a48eaf868bf0c88edab5|2]], [[http://git.kernel.org/linus/a01e28f692088e9789ebb0c374fdac83de59899b|3]], [[http://git.kernel.org/linus/b170d8ce3f81bd97e85756e9184779a56a5f55a7|4]], [[http://git.kernel.org/linus/3a6a9201897c6482573ad07ee880574147761006|5]], [[http://git.kernel.org/linus/8d49751580db804a02caf6a5b7cebe2ff26c0d7e|6]] |
Line 69: | Line 72: |
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] |
Modern multiprocessors (for example, x86) usually have non-uniform memory access ([[https://en.wikipedia.org/wiki/Non-uniform_memory_access|NUMA]]) memory designs. In these systems, the performance of a process can be different depending on whether the memory range it accesses it's attached to the local CPU or other CPU. Since performance 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 whose memory controller is connected to the memory it will access. 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]] |
Line 79: | Line 82: |
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] |
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]] |
Line 85: | Line 88: |
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)] |
Squashfs, the read-only filesystem used by most live distributions, 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 intermediate 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)]] == Applications can cap the rate computed by network transport layer == This release adds a new socket option, SO_MAX_PACING_RATE, which offers applications the ability to cap the rate computed by transport layer. It has been designed as a bufferbloat mechanism to avoid buffers getting filled up with packets, but it can also be used to limit the transmission rate in applications. To be effectively paced, a network flow must use FQ packet scheduler. Note that a packet scheduler takes into account the headers for its computations. For more details, see the: Recommended LWN article: [[https://lwn.net/Articles/564978/|TSO sizing and the FQ scheduler]] (5th and 6th paragraph) Code: [[http://git.kernel.org/linus/62748f32d501f5d3712a7c372bbb92abc7c62bc7|commit]] |
Line 91: | Line 103: |
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. Code: [http://git.kernel.org/linus/0d41cca490c274352211efac50e9598d39a9dc80 commit] |
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. Code: [[http://git.kernel.org/linus/0d41cca490c274352211efac50e9598d39a9dc80|commit]] |
Line 96: | Line 108: |
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] |
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]] |
Line 102: | Line 114: |
[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] |
[[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]] |
Line 107: | Line 119: |
All the driver and architecture-specific changes can be found in the [http://kernelnewbies.org/Linux_3.13-DriversArch Linux_3.13-DriversArch page] | All the driver and architecture-specific changes can be found in the [[http://kernelnewbies.org/Linux_3.13-DriversArch|Linux_3.13-DriversArch page]] |
Line 110: | Line 122: |
* epoll: once we get over 10+ cpus, the scalability of SPECjbb falls over due to the contention on the global 'epmutex', which is taken in on EPOLL_CTL_ADD and EPOLL_CTL_DEL operations. This release improves locking to improve performance: on the 16 socket run the performance went from 35k jOPS to 125k jOPS. In addition the benchmark when from scaling well on 10 sockets to scaling well on just over 40 sockets [http://git.kernel.org/linus/ae10b2b4eb01bedc91d29d5c5bb9e416fd806c40 commit], [http://git.kernel.org/linus/67347fe4e6326338ee217d7eb826bedf30b2e155 commit] * Allow magic sysrq key functions to be disabled in Kconfig [http://git.kernel.org/linus/8eaede49dfdc1ff1d727f9c913665b8009945191 commit] * modules: remove rmmod --wait option. [http://git.kernel.org/linus/3f2b9c9cdf389e303b2273679af08aab5f153517 commit] * iommu: Add event tracing feature to iommu [http://git.kernel.org/linus/7f6db1717235bd45d265766dad53c10d30899d41 commit] * Add option to disable kernel compression [http://git.kernel.org/linus/69f0554ec261fd686ac7fa1c598cc9eb27b83a80 commit] * gcov: add support for gcc 4.7 gcov format [http://git.kernel.org/linus/5f41ea0386a53414d688cfcaa321a78310e5f7c1 commit] * fuse: Implement writepages callback, improving mmaped writeout [http://git.kernel.org/linus/26d614df1da9d7d255686af5d6d4508f77853c01 commit] * seqcount: Add lockdep functionality to seqcount/seqlock structures [http://git.kernel.org/linus/1ca7d67cf5d5a2aef26a8d9afd789006fa098347 commit] * Provide a per-cpu preempt_count implementation [http://git.kernel.org/linus/c2daa3bed53a81171cf8c1a36db798e82b91afe8 commit] * /proc/pid/smaps: show VM_SOFTDIRTY flag in VmFlags line [http://git.kernel.org/linus/ec8e41aec13005fed0dbee002fb8c99b4e001d50 commit] * Add a generic associative array implementation. [http://git.kernel.org/linus/3cb989501c2688cacbb7dc4b0d353faf838f53a1 commit] * RCU'd vfsmounts [http://git.kernel.org/linus/48a066e72d970a3e225a9c18690d570c736fc455 commit] |
* epoll: once we get over 10+ cpus, the scalability of SPECjbb falls over due to the contention on the global 'epmutex', which is taken in on EPOLL_CTL_ADD and EPOLL_CTL_DEL operations. This release improves locking to improve performance: on the 16 socket run the performance went from 35k jOPS to 125k jOPS. In addition the benchmark when from scaling well on 10 sockets to scaling well on just over 40 sockets [[http://git.kernel.org/linus/ae10b2b4eb01bedc91d29d5c5bb9e416fd806c40|commit]], [[http://git.kernel.org/linus/67347fe4e6326338ee217d7eb826bedf30b2e155|commit]] * Allow magic sysrq key functions to be disabled in Kconfig [[http://git.kernel.org/linus/8eaede49dfdc1ff1d727f9c913665b8009945191|commit]] * modules: remove rmmod --wait option. [[http://git.kernel.org/linus/3f2b9c9cdf389e303b2273679af08aab5f153517|commit]] * iommu: Add event tracing feature to iommu [[http://git.kernel.org/linus/7f6db1717235bd45d265766dad53c10d30899d41|commit]] * Add option to disable kernel compression [[http://git.kernel.org/linus/69f0554ec261fd686ac7fa1c598cc9eb27b83a80|commit]] * gcov: add support for gcc 4.7 gcov format [[http://git.kernel.org/linus/5f41ea0386a53414d688cfcaa321a78310e5f7c1|commit]] * fuse: Implement writepages callback, improving mmaped writeout [[http://git.kernel.org/linus/26d614df1da9d7d255686af5d6d4508f77853c01|commit]] * seqcount: Add lockdep functionality to seqcount/seqlock structures [[http://git.kernel.org/linus/1ca7d67cf5d5a2aef26a8d9afd789006fa098347|commit]] * Provide a per-cpu preempt_count implementation [[http://git.kernel.org/linus/c2daa3bed53a81171cf8c1a36db798e82b91afe8|commit]] * /proc/pid/smaps: show VM_SOFTDIRTY flag in VmFlags line [[http://git.kernel.org/linus/ec8e41aec13005fed0dbee002fb8c99b4e001d50|commit]] * Add a generic associative array implementation. [[http://git.kernel.org/linus/3cb989501c2688cacbb7dc4b0d353faf838f53a1|commit]] * RCU'd vfsmounts [[http://git.kernel.org/linus/48a066e72d970a3e225a9c18690d570c736fc455|commit]] |
Line 125: | Line 137: |
* Changes in the slab have been done to improve the slab memory usage and performance. kmem_caches consisting of objects less than or equal to 128 byte have now one more objects in a slab, and a change to the management of free objects improves the locality of the accesses, which [https://lkml.org/lkml/2013/10/16/155 improve] performance in some microbenchmarks [http://git.kernel.org/linus/8456a648cf44f14365f1f44de90a3da2526a4776 commit], [http://git.kernel.org/linus/b1cb0982bdd6f57fed690f796659733350bb2cae commit] * memcg: support hierarchical memory.numa_stats [http://git.kernel.org/linus/071aee138410210e3764f3ae8d37ef46dc6d3b42 commit] * Introduce movable_node boot option to enable the effects of CONFIG_MOVABLE_NODE [http://git.kernel.org/linus/c5320926e370b4cfb8f10c2169e26f960079cf67 commit] * thp: khugepaged: add policy for finding target node [http://git.kernel.org/linus/9f1b868a13ac36bd207a571f5ea1193d823ab18d commit] |
* Changes in the slab have been done to improve the slab memory usage and performance. kmem_caches consisting of objects less than or equal to 128 byte have now one more objects in a slab, and a change to the management of free objects improves the locality of the accesses, which [[https://lkml.org/lkml/2013/10/16/155|improve]] performance in some microbenchmarks [[http://git.kernel.org/linus/8456a648cf44f14365f1f44de90a3da2526a4776|commit]], [[http://git.kernel.org/linus/b1cb0982bdd6f57fed690f796659733350bb2cae|commit]] * memcg: support hierarchical memory.numa_stats [[http://git.kernel.org/linus/071aee138410210e3764f3ae8d37ef46dc6d3b42|commit]] * Introduce movable_node boot option to enable the effects of CONFIG_MOVABLE_NODE [[http://git.kernel.org/linus/c5320926e370b4cfb8f10c2169e26f960079cf67|commit]] * thp: khugepaged: add policy for finding target node [[http://git.kernel.org/linus/9f1b868a13ac36bd207a571f5ea1193d823ab18d|commit]] |
Line 131: | Line 143: |
* bcache: Incremental garbage collection. It means that there's less of a latency hit for doing garbage collection, which means bcache can gc more frequently (and do a better job of reclaiming from the cache), and it can coalesce across more btree nodes (improving space efficiency) [http://git.kernel.org/linus/a1f0358b2bf69be216cb6e4ea40fe7ae4d38b8a6 commit] * dm cache: add passthrough mode which is intended to be used when the cache contents are not known to be coherent with the origin device [http://git.kernel.org/linus/2ee57d587357f0d752af6c2e3e46434a74b1bee3 commit] * dm cache: add cache block invalidation support [http://git.kernel.org/linus/65790ff919e2e07ccb4457415c11075b245d643b commit] * dm cache: cache shrinking support [http://git.kernel.org/linus/f494a9c6b1b6dd9a9f21bbb75d9210d478eeb498 commit] * virtio_blk: blk-mq support [http://git.kernel.org/linus/1cf7e9c68fe84248174e998922b39e508375e7c1 commit] * Multi-queue aware null block test driver [http://git.kernel.org/linus/f2298c0403b0dfcaef637eba0c02c4a06d7a25ab commit] |
* bcache: Incremental garbage collection. It means that there's less of a latency hit for doing garbage collection, which means bcache can gc more frequently (and do a better job of reclaiming from the cache), and it can coalesce across more btree nodes (improving space efficiency) [[http://git.kernel.org/linus/a1f0358b2bf69be216cb6e4ea40fe7ae4d38b8a6|commit]] * dm cache: add passthrough mode which is intended to be used when the cache contents are not known to be coherent with the origin device [[http://git.kernel.org/linus/2ee57d587357f0d752af6c2e3e46434a74b1bee3|commit]] * dm cache: add cache block invalidation support [[http://git.kernel.org/linus/65790ff919e2e07ccb4457415c11075b245d643b|commit]] * dm cache: cache shrinking support [[http://git.kernel.org/linus/f494a9c6b1b6dd9a9f21bbb75d9210d478eeb498|commit]] * virtio_blk: blk-mq support [[http://git.kernel.org/linus/1cf7e9c68fe84248174e998922b39e508375e7c1|commit]] * Multi-queue aware null block test driver [[http://git.kernel.org/linus/f2298c0403b0dfcaef637eba0c02c4a06d7a25ab|commit]] |
Line 141: | Line 153: |
* Add FIEMAP_EXTENT_SHARED fiemap flag: Similar to ocfs2, btrfs also supports that extents can be shared by different inodes, and there are some userspace tools requesting for this kind of 'space shared infomation' [http://git.kernel.org/linus/fe09e16cc8d444ecc52f6f9a651946f16fffa4e1 commit] * Add new btrfs mount options: commit, which sets the interval of periodic commit in seconds, 30 by default, and rescan_uuid_tree, which forces check and rebuild procedure of the UUID tree [http://git.kernel.org/linus/906c176e541f89ed3c04d0e9af1c7cf7b3cc1adb commit] * XFS: For v5 filesystems scale the inode cluster size with the size of the inode so that we keep a constant 32 inodes per cluster ratio for all inode IO [http://git.kernel.org/linus/8f80587bacb6eb893df0ee4e35fefa0dfcfdf9f4 commit] * F2FS Introduce CONFIG_F2FS_CHECK_FS to disable BUG_ONs which check the file system consistency in runtime and cost performance [http://git.kernel.org/linus/3b218e3a21ccec183472015f1d7168400b187a58 commit] * HFS+: [http://git.kernel.org/linus/95e0d7dbb9b28ab0dfad7c7316066b05e1f1d4cd commit], [http://git.kernel.org/linus/099e9245e04d50bb12ed621b4fa61df0a4c9dba9 commit], [http://git.kernel.org/linus/b3b5b0f03cc4ea074ed0ac110d0afd17e0ccdf9e commit] |
* Add FIEMAP_EXTENT_SHARED fiemap flag: Similar to ocfs2, btrfs also supports that extents can be shared by different inodes, and there are some userspace tools requesting for this kind of 'space shared infomation' [[http://git.kernel.org/linus/fe09e16cc8d444ecc52f6f9a651946f16fffa4e1|commit]] * Add new btrfs mount options: commit, which sets the interval of periodic commit in seconds, 30 by default, and rescan_uuid_tree, which forces check and rebuild procedure of the UUID tree [[http://git.kernel.org/linus/906c176e541f89ed3c04d0e9af1c7cf7b3cc1adb|commit]] * XFS: For v5 filesystems scale the inode cluster size with the size of the inode so that we keep a constant 32 inodes per cluster ratio for all inode IO [[http://git.kernel.org/linus/8f80587bacb6eb893df0ee4e35fefa0dfcfdf9f4|commit]] * F2FS Introduce CONFIG_F2FS_CHECK_FS to disable BUG_ONs which check the file system consistency in runtime and cost performance [[http://git.kernel.org/linus/3b218e3a21ccec183472015f1d7168400b187a58|commit]] * HFS+: [[http://git.kernel.org/linus/95e0d7dbb9b28ab0dfad7c7316066b05e1f1d4cd|commit]], [[http://git.kernel.org/linus/099e9245e04d50bb12ed621b4fa61df0a4c9dba9|commit]], [[http://git.kernel.org/linus/b3b5b0f03cc4ea074ed0ac110d0afd17e0ccdf9e|commit]] |
Line 147: | Line 159: |
* SMB2/SMB3 Copy offload support (refcopy, aka "cp --reflink") [http://git.kernel.org/linus/41c1358e9181ab1ebd773905b3fa8039b61aa0e9 commit] * Query File System alignment, and the preferred (for performance) sector size and whether the underlying disk has no seek penalty (like SSD), make it visible in /proc/fs/cifs/DebugData for debugging purposes [http://git.kernel.org/linus/af6a12ea8d4bb39a87527835b943bde4215897e5 commit] * Query network adapter info [http://git.kernel.org/linus/c481e9feee78c6ce1ba0a1c8c892049f6514f6cf commit] * Allow setting per-file compression [http://git.kernel.org/linus/c7f508a99bf229963915e79a603e0618d1d2ba76 commit], [http://git.kernel.org/linus/64a5cfa6db94c5abba2cafe77aca077dd1e3283b commit] |
* SMB2/SMB3 Copy offload support (refcopy, aka "cp --reflink") [[http://git.kernel.org/linus/41c1358e9181ab1ebd773905b3fa8039b61aa0e9|commit]] * Query File System alignment, and the preferred (for performance) sector size and whether the underlying disk has no seek penalty (like SSD), make it visible in /proc/fs/cifs/DebugData for debugging purposes [[http://git.kernel.org/linus/af6a12ea8d4bb39a87527835b943bde4215897e5|commit]] * Query network adapter info [[http://git.kernel.org/linus/c481e9feee78c6ce1ba0a1c8c892049f6514f6cf|commit]] * Allow setting per-file compression [[http://git.kernel.org/linus/c7f508a99bf229963915e79a603e0618d1d2ba76|commit]], [[http://git.kernel.org/linus/64a5cfa6db94c5abba2cafe77aca077dd1e3283b|commit]] |
Line 155: | Line 167: |
* Introduce SO_MAX_PACING_RATE socket option, which offers the application the ability to cap the rate computed by transport layer (to be effectively paced, a flow must use FQ packet scheduler) [http://git.kernel.org/linus/62748f32d501f5d3712a7c372bbb92abc7c62bc7 commit] * Add a lightweight Berkley Packet Filter-based traffic classifier that can serve as a flexible alternative to ematch-based tree classification, i.e. now that BPF filter engine can also be JITed in the kernel [http://git.kernel.org/linus/7d1d65cb84e1cfacba3f54c5934194785259e0d8 commit] * ipv6: Add support for IPsec virtual tunnel interfaces, which provide a routable interface for IPsec tunnel endpoints [http://git.kernel.org/linus/ed1efb2aefbbc6f5a3da5b42158bfb753ba6fe82 commit] * ipv4: introduce new IP_MTU_DISCOVER mode IP_PMTUDISC_INTERFACE. Sockets marked with IP_PMTUDISC_INTERFACE won't do path mtu discovery, their sockets won't accept and install new path mtu information and they will always use the interface mtu for outgoing packets. It is guaranteed that the packet is not fragmented locally. The purpose behind this flag is to avoid PMTU attacks, particularly on DNS servers [http://git.kernel.org/linus/482fc6094afad572a4ea1fd722e7b11ca72022a0 commit] * ipv4: Allow unprivileged users to use network namespaces sysctls [http://git.kernel.org/linus/fd2d5356d90211f98ea3624263e37c4142b41edd commit] * Create sysfs symlinks for neighbour devices [http://git.kernel.org/linus/5831d66e8097aedfa3bc35941cf265ada2352317 commit] * ipv6: sit: add GSO/TSO support [http://git.kernel.org/linus/61c1db7fae21ed33c614356a43bf6580c5e53118 commit] * ipip: add GSO/TSO support [http://git.kernel.org/linus/cb32f511a70be8967ac9025cf49c44324ced9a39 commit] * packet scheduler: htb: support of 64bit rates [http://git.kernel.org/linus/df62cdf348c91baac61b4cb19d19ea1ef87b271e commit] * openvswitch: TCP flags matching support. [http://git.kernel.org/linus/5eb26b156e29eadcc21f73fb5d14497f0db24b86 commit] |
* Add a lightweight Berkley Packet Filter-based traffic classifier that can serve as a flexible alternative to ematch-based tree classification, i.e. now that BPF filter engine can also be JITed in the kernel [[http://git.kernel.org/linus/7d1d65cb84e1cfacba3f54c5934194785259e0d8|commit]] * ipv6: Add support for IPsec virtual tunnel interfaces, which provide a routable interface for IPsec tunnel endpoints [[http://git.kernel.org/linus/ed1efb2aefbbc6f5a3da5b42158bfb753ba6fe82|commit]] * ipv4: introduce new IP_MTU_DISCOVER mode IP_PMTUDISC_INTERFACE. Sockets marked with IP_PMTUDISC_INTERFACE won't do path mtu discovery, their sockets won't accept and install new path mtu information and they will always use the interface mtu for outgoing packets. It is guaranteed that the packet is not fragmented locally. The purpose behind this flag is to avoid PMTU attacks, particularly on DNS servers [[http://git.kernel.org/linus/482fc6094afad572a4ea1fd722e7b11ca72022a0|commit]] * ipv4: Allow unprivileged users to use network namespaces sysctls [[http://git.kernel.org/linus/fd2d5356d90211f98ea3624263e37c4142b41edd|commit]] * Create sysfs symlinks for neighbour devices [[http://git.kernel.org/linus/5831d66e8097aedfa3bc35941cf265ada2352317|commit]] * ipv6: sit: add GSO/TSO support [[http://git.kernel.org/linus/61c1db7fae21ed33c614356a43bf6580c5e53118|commit]] * ipip: add GSO/TSO support [[http://git.kernel.org/linus/cb32f511a70be8967ac9025cf49c44324ced9a39|commit]] * packet scheduler: htb: support of 64-bit rates [[http://git.kernel.org/linus/df62cdf348c91baac61b4cb19d19ea1ef87b271e|commit]] * openvswitch: TCP flags matching support. [[http://git.kernel.org/linus/5eb26b156e29eadcc21f73fb5d14497f0db24b86|commit]] |
Line 167: | Line 177: |
* Add network namespaces [http://git.kernel.org/linus/1785e8f473082aa60d62c7165856cf6484077b99 commit] * Support comments for ipset entries in the core. [http://git.kernel.org/linus/68b63f08d22f23161c43cd2417104aa213ff877f commit], in bitmap-type ipsets [http://git.kernel.org/linus/b90cb8ba19dac9b98add5e64adb583fccbf63f94 commit], in hash-type ipsets [http://git.kernel.org/linus/fda75c6d9e31a901e25b922e86c8fd505c899873 commit], and in the list-type ipset. [http://git.kernel.org/linus/81b10bb4bd16ea975c007f9bb2c2676cef6ade10 commit] * Enable ipset port set types to match IPv4 package fragments for protocols that doesn't have ports (or the port information isn't supported by ipset) [http://git.kernel.org/linus/60b0fe372499f66e0c965dc0594320438a3b711c commit] * Add hash:net,net set, providing the ability to configure pairs of subnets [http://git.kernel.org/linus/ea53ac5b630e813aec20c7cdcfe511daca70dee4 commit] * Add hash:net,port,net set, providing similar functionality to ip,port,net but permits arbitrary size subnets for both the first and last parameter [http://git.kernel.org/linus/7c3ad056ef79fd10f5f111c807ccbd9fa9068c7f commit] |
* Add network namespaces [[http://git.kernel.org/linus/1785e8f473082aa60d62c7165856cf6484077b99|commit]] * Support comments for ipset entries in the core. [[http://git.kernel.org/linus/68b63f08d22f23161c43cd2417104aa213ff877f|commit]], in bitmap-type ipsets [[http://git.kernel.org/linus/b90cb8ba19dac9b98add5e64adb583fccbf63f94|commit]], in hash-type ipsets [[http://git.kernel.org/linus/fda75c6d9e31a901e25b922e86c8fd505c899873|commit]], and in the list-type ipset. [[http://git.kernel.org/linus/81b10bb4bd16ea975c007f9bb2c2676cef6ade10|commit]] * Enable ipset port set types to match IPv4 package fragments for protocols that doesn't have ports (or the port information isn't supported by ipset) [[http://git.kernel.org/linus/60b0fe372499f66e0c965dc0594320438a3b711c|commit]] * Add hash:net,net set, providing the ability to configure pairs of subnets [[http://git.kernel.org/linus/ea53ac5b630e813aec20c7cdcfe511daca70dee4|commit]] * Add hash:net,port,net set, providing similar functionality to ip,port,net but permits arbitrary size subnets for both the first and last parameter [[http://git.kernel.org/linus/7c3ad056ef79fd10f5f111c807ccbd9fa9068c7f|commit]] |
Line 174: | Line 184: |
* 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] |
* 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]] |
Line 182: | Line 192: |
* 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] |
* 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 Bluetooth 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 Bluetooth LE advertising [[http://git.kernel.org/linus/eeca6f891305a80378da978f803821c2a0b648b6|commit]], [[http://git.kernel.org/linus/4375f1037d52602413142e290608d0d84671ad36|commit]] |
Line 190: | Line 200: |
* extend round-robin mode with packets_per_slave, which specifies the number of packets to transmit through a slave before moving to the next one [http://git.kernel.org/linus/73958329ea1fe0dc149b51e5d8703015f65a03e0 commit], [http://git.kernel.org/linus/12465fb8338fedddc20464fdc5b1fcbc1971bc3a commit] * add Netlink support mode option [http://git.kernel.org/linus/90af231106c0b8d223c27d35464af95cb3d9cacf commit] * add Netlink support active_slave option [http://git.kernel.org/linus/ec76aa49855f6d6fea5e01de179fb57dd47c619d commit] * tcp_memcontrol: Remove setting cgroup settings via sysctl, because the code is broken in both design and implementation and does not implement the functionality for which it was written for [http://git.kernel.org/linus/f594d63199688ad568fb69f6a790b11d6d6d1ba5 commit] * wifi: implement mesh channel switch userspace API [http://git.kernel.org/linus/b8456a14e9d2770846fcf74de18ff95b676149a3 commit] * wifi: enable channels 52-64 and 100-144 for world roaming [http://git.kernel.org/linus/131a19bc924c32cecd014be7036686f2186b48ad commit] * wifi: enable DFS for IBSS mode [http://git.kernel.org/linus/5336fa88e8ac6b666a3db9902a4797d94d86a702 commit], [http://git.kernel.org/linus/8e8d347da7613d0315295e730f2eecf9fe6f36ba commit], add support for CSA in IBSS mode [http://git.kernel.org/linus/cd7760e62c2ac8581f050b2d36501d1a60beaf83 commit], * B.A.T.M.A.N.: remove vis functionality (replaced by a userspace program) [http://git.kernel.org/linus/9f4980e68b4b72e6a4d7caadfacc54260d05ebf6 commit], add per VLAN interface attribute framework [http://git.kernel.org/linus/5d2c05b213377694a2aa8ce1ed9b23f7c39b0569 commit], add the T(ype) V(ersion) L(ength) V(alue) framework [http://git.kernel.org/linus/17cf0ea455f1a4a7e8436ef96236999e9c452a93 commit], [http://git.kernel.org/linus/3f4841ffb336075f74b05fe4a205e877bb22848d commit], [http://git.kernel.org/linus/ef26157747d42254453f6b3ac2bd8bd3c53339c3 commit], [http://git.kernel.org/linus/414254e342a0d58144de40c3da777521ebaeeb07 commit] |
* extend round-robin mode with packets_per_slave, which specifies the number of packets to transmit through a slave before moving to the next one [[http://git.kernel.org/linus/73958329ea1fe0dc149b51e5d8703015f65a03e0|commit]], [[http://git.kernel.org/linus/12465fb8338fedddc20464fdc5b1fcbc1971bc3a|commit]] * add Netlink support mode option [[http://git.kernel.org/linus/90af231106c0b8d223c27d35464af95cb3d9cacf|commit]] * add Netlink support active_slave option [[http://git.kernel.org/linus/ec76aa49855f6d6fea5e01de179fb57dd47c619d|commit]] * tcp_memcontrol: Remove setting cgroup settings via sysctl, because the code is broken in both design and implementation and does not implement the functionality for which it was written for [[http://git.kernel.org/linus/f594d63199688ad568fb69f6a790b11d6d6d1ba5|commit]] * wifi: implement mesh channel switch userspace API [[http://git.kernel.org/linus/b8456a14e9d2770846fcf74de18ff95b676149a3|commit]] * wifi: enable channels 52-64 and 100-144 for world roaming [[http://git.kernel.org/linus/131a19bc924c32cecd014be7036686f2186b48ad|commit]] * wifi: enable DFS for IBSS mode [[http://git.kernel.org/linus/5336fa88e8ac6b666a3db9902a4797d94d86a702|commit]], [[http://git.kernel.org/linus/8e8d347da7613d0315295e730f2eecf9fe6f36ba|commit]], add support for CSA in IBSS mode [[http://git.kernel.org/linus/cd7760e62c2ac8581f050b2d36501d1a60beaf83|commit]], * B.A.T.M.A.N.: remove vis functionality (replaced by a userspace program) [[http://git.kernel.org/linus/9f4980e68b4b72e6a4d7caadfacc54260d05ebf6|commit]], add per VLAN interface attribute framework [[http://git.kernel.org/linus/5d2c05b213377694a2aa8ce1ed9b23f7c39b0569|commit]], add the T(ype) V(ersion) L(ength) V(alue) framework [[http://git.kernel.org/linus/17cf0ea455f1a4a7e8436ef96236999e9c452a93|commit]], [[http://git.kernel.org/linus/3f4841ffb336075f74b05fe4a205e877bb22848d|commit]], [[http://git.kernel.org/linus/ef26157747d42254453f6b3ac2bd8bd3c53339c3|commit]], [[http://git.kernel.org/linus/414254e342a0d58144de40c3da777521ebaeeb07|commit]] |
Line 203: | Line 213: |
* caam: Add Platform driver for Job Ring, which are part of Freescale's Cryptographic Accelerator and Assurance Module (CAAM) [http://git.kernel.org/linus/313ea293e9c4d1eabcaddd2c0800f083b03c2a2e commit] * random: Our mixing functions [http://eprint.iacr.org/2012/251.pdf were analyzed], they suggested a slight change to improve our mixing functions which has been implemented [http://git.kernel.org/linus/6e9fa2c8a630e6d0882828012431038abce285b9 commit] * random32: upgrade taus88 generator to taus113 from errata paper [http://git.kernel.org/linus/a98814cef87946d2708812ad9f8b1e03b8366b6f commit] |
* caam: Add platform driver for Job Ring, which are part of Freescale's Cryptographic Accelerator and Assurance Module (CAAM) [[http://git.kernel.org/linus/313ea293e9c4d1eabcaddd2c0800f083b03c2a2e|commit]] * random: Our mixing functions [[http://eprint.iacr.org/2012/251.pdf|were analyzed]], they suggested a slight change to improve our mixing functions which has been implemented [[http://git.kernel.org/linus/6e9fa2c8a630e6d0882828012431038abce285b9|commit]] * random32: upgrade taus88 generator to taus113 from errata paper [[http://git.kernel.org/linus/a98814cef87946d2708812ad9f8b1e03b8366b6f|commit]] |
Line 210: | Line 219: |
* hyperv: fb: add blanking support [http://git.kernel.org/linus/9b5254b4604d358e64d1798544e242f67a81c106 commit], add pci stub, the hyperv framebuffer driver will bind to the pci device then, so linux kernel and userspace know there is a proper kernel driver for the device active [http://git.kernel.org/linus/7ad9684721606efbfb9b347346816e1e6baff8bb commit] * kvm: Add VFIO device [http://git.kernel.org/linus/ec53500fae421e07c5d035918ca454a429732ef4 commit] * xen-netback: add support for IPv6 checksum offload to guest [http://git.kernel.org/linus/146c8a77d27bcbd7722120f70f51e3b287205d0a commit] * xen-netback: enable IPv6 TCP GSO to the guest [http://git.kernel.org/linus/82cada22a0bbec6a7afb573ef5fb6c512aaa2739 commit] * xen-netfront: convert to GRO API [http://git.kernel.org/linus/99d3d587b2b4314ccc8ea066cb327dfb523d598e commit] |
* hyperv: fb: add blanking support [[http://git.kernel.org/linus/9b5254b4604d358e64d1798544e242f67a81c106|commit]], add PCI stub, the hyperv framebuffer driver will bind to the PCI device then, so Linux kernel and userspace know there is a proper kernel driver for the device active [[http://git.kernel.org/linus/7ad9684721606efbfb9b347346816e1e6baff8bb|commit]] * kvm: Add VFIO device [[http://git.kernel.org/linus/ec53500fae421e07c5d035918ca454a429732ef4|commit]] * xen-netback: add support for IPv6 checksum offload to guest [[http://git.kernel.org/linus/146c8a77d27bcbd7722120f70f51e3b287205d0a|commit]] * xen-netback: enable IPv6 TCP GSO to the guest [[http://git.kernel.org/linus/82cada22a0bbec6a7afb573ef5fb6c512aaa2739|commit]] * xen-netfront: convert to GRO API [[http://git.kernel.org/linus/99d3d587b2b4314ccc8ea066cb327dfb523d598e|commit]] |
Line 217: | Line 226: |
* 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] * SELinux: Add the always_check_network policy capability which, when enabled, treats SECMARK as enabled, even if there are no netfilter SECMARK rules and treats peer labeling as enabled, even if there is no Netlabel or labeled IPSEC configuration.policy capability for always checking packet and peer classes [http://git.kernel.org/linus/2be4d74f2fd45460d70d4fe65cc1972ef45bf849 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] * ima: add audit log support for larger hashes [http://git.kernel.org/linus/5278aa52f35003ddafda80b0243b3693f935b134 commit] * ima: enable support for larger default filedata hash algorithms [http://git.kernel.org/linus/e7a2ad7eb6f48ad80c70a22dd8167fb34b409466 commit] * ima: new templates management mechanism [http://git.kernel.org/linus/adf53a778a0a5a5dc9103509da4a9719046e5310 commit] |
* 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]] * SELinux: Add the always_check_network policy capability which, when enabled, treats SECMARK as enabled, even if there are no netfilter SECMARK rules and treats peer labeling as enabled, even if there is no Netlabel or labeled IPsec configuration.policy capability for always checking packet and peer classes [[http://git.kernel.org/linus/2be4d74f2fd45460d70d4fe65cc1972ef45bf849|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]] * ima: add audit log support for larger hashes [[http://git.kernel.org/linus/5278aa52f35003ddafda80b0243b3693f935b134|commit]] * ima: enable support for larger default filedata hash algorithms [[http://git.kernel.org/linus/e7a2ad7eb6f48ad80c70a22dd8167fb34b409466|commit]] * ima: new templates management mechanism [[http://git.kernel.org/linus/adf53a778a0a5a5dc9103509da4a9719046e5310|commit]] |
Line 235: | Line 243: |
* Add "perf trace record" option, a convience alias to include the -e raw_syscalls:* argument to perf-record [http://git.kernel.org/linus/5e2485b1a2813faa6b80007c653f8bbbed9457ee commit] * Add --time/-T option to show full timestamp [http://git.kernel.org/linus/4bb09192d38ef08f0619667527cabb26354fff89 commit] * Add option --comm to show process COMM [http://git.kernel.org/linus/50c95cbd70808aa2e5ba8d79e503456f1da37aeb commit] * Add summary only option [http://git.kernel.org/linus/fd2eabaf16984bc75695e43f4b76e6f20ed4ea41 commit] * Add summary option to dump syscall statistics [http://git.kernel.org/linus/bf2575c121ca11247ef07fd02b43f7430834f7b1 commit] |
* Add "perf trace record" option, a convience alias to include the -e raw_syscalls:* argument to perf-record [[http://git.kernel.org/linus/5e2485b1a2813faa6b80007c653f8bbbed9457ee|commit]] * Add --time/-T option to show full timestamp [[http://git.kernel.org/linus/4bb09192d38ef08f0619667527cabb26354fff89|commit]] * Add option --comm to show process COMM [[http://git.kernel.org/linus/50c95cbd70808aa2e5ba8d79e503456f1da37aeb|commit]] * Add summary only option [[http://git.kernel.org/linus/fd2eabaf16984bc75695e43f4b76e6f20ed4ea41|commit]] * Add summary option to dump syscall statistics [[http://git.kernel.org/linus/bf2575c121ca11247ef07fd02b43f7430834f7b1|commit]] |
Line 241: | Line 249: |
* Add --demangle/--no-demangle options [http://git.kernel.org/linus/35e17b2450e09968f9702d4048c228199af171bc commit] * Support "$vars" meta argument syntax for local variables [http://git.kernel.org/linus/7969ec7728ba6340de8000ddb0a8833273629d6a commit] * perf record: Add option --force-per-cpu to force per-cpu mmaps [http://git.kernel.org/linus/539e6bb71e350541105e67e3d6c31392d9da25ef commit] * perf record: Add abort_tx,no_tx,in_tx branch filter options to perf record -j [http://git.kernel.org/linus/0126d493b62e1306db09e1019c05e0bfe84ae8e7 commit] * perf report: Add --max-stack option to limit callchain stack scan [http://git.kernel.org/linus/91e95617429cb272fd908b1928a1915b37b9655f commit] * perf top: Add new option --ignore-vmlinux to explicitly indicate that we do not want to use these kernels and just use what we have (kallsyms [http://git.kernel.org/linus/fc2be6968e99b5314f20e938a547d44dcb1c40eb commit] * perf tools: Add possibility to specify mmap size via -m/--mmap-pages by appending unit size character (B/K/M/G) to the number [http://git.kernel.org/linus/27050f530dc4fd88dc93d85c177e000efe970d12 commit] * perf top: Add --max-stack option to limit callchain stack scan [http://git.kernel.org/linus/5dbb6e81d85e55ee2b4cf523c1738e16f63e5400 commit] * perf stat: Add perf stat --transaction to print the basic transactional execution statistics [http://git.kernel.org/linus/4cabc3d1cb6a46f581a2628d1d11c483d5f300e5 commit] * perf: Add support for recording transaction flags [http://git.kernel.org/linus/475eeab9f3c1579c8da89667496084db4867bf7c commit] * perf: Support sorting by in_tx or abort branch flags [http://git.kernel.org/linus/f5d05bcec409aec2c41727077ad818f7c4db005b commit] * ftrace: Add set_graph_notrace filter, analogous to set_ftrace_notrace and can be used for eliminating uninteresting part of function graph trace output [http://git.kernel.org/linus/29ad23b00474c34e3b5040dda508c78d33a1a3eb commit] * perf bench sched: Add --threaded option, allow the measurement of thread versus process context switch performance [http://git.kernel.org/linus/a9faa0cab619fad380c2669825aa84212943d528 commit] * perf buildid-cache: Add ability to add kcore to the cache [http://git.kernel.org/linus/fc1b691d7651d9496e912de7e0fc73a5be3294af commit] |
* Add --demangle/--no-demangle options [[http://git.kernel.org/linus/35e17b2450e09968f9702d4048c228199af171bc|commit]] * Support "$vars" meta argument syntax for local variables [[http://git.kernel.org/linus/7969ec7728ba6340de8000ddb0a8833273629d6a|commit]] * perf record: Add option --force-per-cpu to force per-cpu mmaps [[http://git.kernel.org/linus/539e6bb71e350541105e67e3d6c31392d9da25ef|commit]] * perf record: Add abort_tx,no_tx,in_tx branch filter options to perf record -j [[http://git.kernel.org/linus/0126d493b62e1306db09e1019c05e0bfe84ae8e7|commit]] * perf report: Add --max-stack option to limit callchain stack scan [[http://git.kernel.org/linus/91e95617429cb272fd908b1928a1915b37b9655f|commit]] * perf top: Add new option --ignore-vmlinux to explicitly indicate that we do not want to use these kernels and just use what we have (kallsyms [[http://git.kernel.org/linus/fc2be6968e99b5314f20e938a547d44dcb1c40eb|commit]] * perf tools: Add possibility to specify mmap size via -m/--mmap-pages by appending unit size character (B/K/M/G) to the number [[http://git.kernel.org/linus/27050f530dc4fd88dc93d85c177e000efe970d12|commit]] * perf top: Add --max-stack option to limit callchain stack scan [[http://git.kernel.org/linus/5dbb6e81d85e55ee2b4cf523c1738e16f63e5400|commit]] * perf stat: Add perf stat --transaction to print the basic transactional execution statistics [[http://git.kernel.org/linus/4cabc3d1cb6a46f581a2628d1d11c483d5f300e5|commit]] * perf: Add support for recording transaction flags [[http://git.kernel.org/linus/475eeab9f3c1579c8da89667496084db4867bf7c|commit]] * perf: Support sorting by in_tx or abort branch flags [[http://git.kernel.org/linus/f5d05bcec409aec2c41727077ad818f7c4db005b|commit]] * ftrace: Add set_graph_notrace filter, analogous to set_ftrace_notrace and can be used for eliminating uninteresting part of function graph trace output [[http://git.kernel.org/linus/29ad23b00474c34e3b5040dda508c78d33a1a3eb|commit]] * perf bench sched: Add --threaded option, allow the measurement of thread versus process context switch performance [[http://git.kernel.org/linus/a9faa0cab619fad380c2669825aa84212943d528|commit]] * perf buildid-cache: Add ability to add kcore to the cache [[http://git.kernel.org/linus/fc1b691d7651d9496e912de7e0fc73a5be3294af|commit]] |
Line 258: | Line 266: |
* 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] * Phoronix [http://www.phoronix.com/scan.php?page=news_item&px=MTU2NDE The Linux 3.13 Kernel Has Many Improvements] |
* 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]] * French: linuxfr.org [[http://linuxfr.org/news/sortie-de-linux-3-13|Sortie de Linux 3.13]] * 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]] * Phoronix [[http://www.phoronix.com/scan.php?page=news_item&px=MTU2NDE|The Linux 3.13 Kernel Has Many Improvements]] |
Linux 3.13 was released on Sun, 19 Jan 2014.
Summary: This release includes nftables, the successor of iptables, a revamp of the block layer designed for high-performance SSDs, a power capping framework to cap power consumption in Intel RAPL devices, improved squashfs performance, AMD Radeon power management enabled by default and automatic Radeon GPU switching, improved NUMA performance, improved performance with hugepage workloads, TCP Fast Open enabled by default, support for NFC payments, support for the High-availability Seamless Redundancy protocol, new drivers and many other small improvements.
Contents
-
Prominent features
- A scalable block layer for high performance SSD storage
- nftables, the successor of iptables
- Radeon: power management enabled by default, automatic GPU switching, R9 290X Hawaii support
- Power capping framework
- Support for the Intel Many Integrated Core Architecture
- Improved performance in NUMA systems
- Improved page table access scalability in hugepage workloads
- Squashfs performance improved
- Applications can cap the rate computed by network transport layer
- TCP Fast Open enabled by default
- NFC payments support
- Support for the High-availability Seamless Redundancy protocol
- Drivers and architectures
- Core
- Memory management
- Block layer
- File systems
- Networking
- Crypto
- Virtualization
- Security
- Tracing/perf
- Other news sites that track the changes of this release
1. Prominent features
1.1. A scalable block layer for high performance SSD storage
Traditional hard disks have defined for decades the design 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 has become not enough for the most advanced 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. Note: in this release, only the virtioblk driver has been ported to this interface, other drivers will be ported in next releases.
Paper: Linux Block IO: Introducing Multi-queue SSD Access on Multi-core Systems
Recommended LWN article: The multiqueue block layer
Code: 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 and 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 simple pseudo-virtual machine inspired in BPF. 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. There is also a new library for utilities that need to interact with the firewall. In this release, nftables is already usable in most cases but a complete support (read: nftables at a better level than iptables) should be available in future releases.
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.
The new nft utility has a improved syntax. nftables documentation is available in the nftables wiki page; a small, quick and incomplete how-to is available here.
Recommended LWN article: The return of nftables
Video talk about nftables: http://youtu.be/P58CCi5Hhl4 (slides)
Project page and utility source code: http://netfilter.org/projects/nftables/
1.3. Radeon: power management enabled by default, automatic GPU switching, R9 290X Hawaii support
Power management enabled by default
Linux 3.11 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: commit, commit, commit, commit, commit, commit
Automatic GPU switching
Linux 3.12 added infrastructure support for automatic GPU switching in laptops with dual GPUs. This release adds support for this feature in AMD Radeon hardware. Code: commit
R9 290X Hawaii
This release adds support for R9 290X "Hawaii" devices. Code: 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 here
1.5. Support for the Intel Many Integrated Core Architecture
This release adds support for the Intel Many Integrated Core Architecture or MIC, a multiprocessor computer architecture incorporating earlier work on the Larrabee many core architecture, the Teraflops Research Chip multicore chip research project, and the Intel Single-chip Cloud Computer multicore microprocessor. The currently world's fastest supercomputer, the Tianhe-2 at the National Supercomputing Center in Guangzhou, China, utilizes this architecture to achieve 33.86 PetaFLOPS.
The MIC family of PCIe form factor coprocessor devices run a 64-bit Linux OS. The driver manages card OS state and enables communication between host and card. More information about the Intel MIC family as well as the Linux OS and tools for MIC to use with this driver are available here. This release currently supports Intel MIC X100 devices, and includes a sample user space daemon.
1.6. Improved performance in NUMA systems
Modern multiprocessors (for example, x86) usually have non-uniform memory access (NUMA) memory designs. In these systems, the performance of a process can be different depending on whether the memory range it accesses it's attached to the local CPU or other CPU. Since performance 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 whose memory controller is connected to the memory it will access.
The way Linux handles these situations was deficient; Linux 3.8 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 here)
Recommended LWN article: NUMA scheduling progress
1.7. 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: Split PMD locks
1.8. Squashfs performance improved
Squashfs, the read-only filesystem used by most live distributions, 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 intermediate buffer. The other one is multithreaded decompression.
1.9. Applications can cap the rate computed by network transport layer
This release adds a new socket option, SO_MAX_PACING_RATE, which offers applications the ability to cap the rate computed by transport layer. It has been designed as a bufferbloat mechanism to avoid buffers getting filled up with packets, but it can also be used to limit the transmission rate in applications. To be effectively paced, a network flow must use FQ packet scheduler. Note that a packet scheduler takes into account the headers for its computations. For more details, see the:
Recommended LWN article: TSO sizing and the FQ scheduler (5th and 6th paragraph)
Code: commit
1.10. 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 Linux 3.6 and Linux 3.7, support was added for this feature, which requires userspace support. This release enables TCP Fast Open by default.
Code: commit
1.11. NFC payments support
This release implements support for the 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: commit
1.12. Support for the High-availability Seamless Redundancy protocol
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: commit
2. Drivers and architectures
All the driver and architecture-specific changes can be found in the Linux_3.13-DriversArch page
3. Core
epoll: once we get over 10+ cpus, the scalability of SPECjbb falls over due to the contention on the global 'epmutex', which is taken in on EPOLL_CTL_ADD and EPOLL_CTL_DEL operations. This release improves locking to improve performance: on the 16 socket run the performance went from 35k jOPS to 125k jOPS. In addition the benchmark when from scaling well on 10 sockets to scaling well on just over 40 sockets commit, commit
Allow magic sysrq key functions to be disabled in Kconfig commit
modules: remove rmmod --wait option. commit
iommu: Add event tracing feature to iommu commit
Add option to disable kernel compression commit
gcov: add support for gcc 4.7 gcov format commit
fuse: Implement writepages callback, improving mmaped writeout commit
seqcount: Add lockdep functionality to seqcount/seqlock structures commit
Provide a per-cpu preempt_count implementation commit
/proc/pid/smaps: show VM_SOFTDIRTY flag in VmFlags line commit
Add a generic associative array implementation. commit
RCU'd vfsmounts commit
4. Memory management
Changes in the slab have been done to improve the slab memory usage and performance. kmem_caches consisting of objects less than or equal to 128 byte have now one more objects in a slab, and a change to the management of free objects improves the locality of the accesses, which improve performance in some microbenchmarks commit, commit
memcg: support hierarchical memory.numa_stats commit
Introduce movable_node boot option to enable the effects of CONFIG_MOVABLE_NODE commit
thp: khugepaged: add policy for finding target node commit
5. Block layer
bcache: Incremental garbage collection. It means that there's less of a latency hit for doing garbage collection, which means bcache can gc more frequently (and do a better job of reclaiming from the cache), and it can coalesce across more btree nodes (improving space efficiency) commit
dm cache: add passthrough mode which is intended to be used when the cache contents are not known to be coherent with the origin device commit
dm cache: add cache block invalidation support commit
dm cache: cache shrinking support commit
virtio_blk: blk-mq support commit
Multi-queue aware null block test driver commit
6. File systems
- Btrfs
Add FIEMAP_EXTENT_SHARED fiemap flag: Similar to ocfs2, btrfs also supports that extents can be shared by different inodes, and there are some userspace tools requesting for this kind of 'space shared infomation' commit
Add new btrfs mount options: commit, which sets the interval of periodic commit in seconds, 30 by default, and rescan_uuid_tree, which forces check and rebuild procedure of the UUID tree commit
XFS: For v5 filesystems scale the inode cluster size with the size of the inode so that we keep a constant 32 inodes per cluster ratio for all inode IO commit
F2FS Introduce CONFIG_F2FS_CHECK_FS to disable BUG_ONs which check the file system consistency in runtime and cost performance commit
- CIFS
SMB2/SMB3 Copy offload support (refcopy, aka "cp --reflink") commit
Query File System alignment, and the preferred (for performance) sector size and whether the underlying disk has no seek penalty (like SSD), make it visible in /proc/fs/cifs/DebugData for debugging purposes commit
Query network adapter info commit
7. Networking
Add a lightweight Berkley Packet Filter-based traffic classifier that can serve as a flexible alternative to ematch-based tree classification, i.e. now that BPF filter engine can also be JITed in the kernel commit
ipv6: Add support for IPsec virtual tunnel interfaces, which provide a routable interface for IPsec tunnel endpoints commit
ipv4: introduce new IP_MTU_DISCOVER mode IP_PMTUDISC_INTERFACE. Sockets marked with IP_PMTUDISC_INTERFACE won't do path mtu discovery, their sockets won't accept and install new path mtu information and they will always use the interface mtu for outgoing packets. It is guaranteed that the packet is not fragmented locally. The purpose behind this flag is to avoid PMTU attacks, particularly on DNS servers commit
ipv4: Allow unprivileged users to use network namespaces sysctls commit
Create sysfs symlinks for neighbour devices commit
ipv6: sit: add GSO/TSO support commit
ipip: add GSO/TSO support commit
packet scheduler: htb: support of 64-bit rates commit
openvswitch: TCP flags matching support. commit
- ipset
Add network namespaces commit
Support comments for ipset entries in the core. commit, in bitmap-type ipsets commit, in hash-type ipsets commit, and in the list-type ipset. commit
Enable ipset port set types to match IPv4 package fragments for protocols that doesn't have ports (or the port information isn't supported by ipset) commit
Add hash:net,net set, providing the ability to configure pairs of subnets commit
Add hash:net,port,net set, providing similar functionality to ip,port,net but permits arbitrary size subnets for both the first and last parameter commit
- 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 commit
Add support for NFC-F technology at 212 kbits/s and 424 kbits/s commit
Add initiator NFC-DEP support commit
Add target NFC-DEP support commit
Implement the mechanism used to send commands to the driver in initiator mode commit
Digital Protocol stack implementation 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 commit, commit
Add support creating virtual AMP controllers commit
Add support for setting Device Under Test mode 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 Bluetooth LE is enabled before using it 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 commit
Add new management setting for enabling and disabling Bluetooth LE advertising commit, commit
- bonding
tcp_memcontrol: Remove setting cgroup settings via sysctl, because the code is broken in both design and implementation and does not implement the functionality for which it was written for commit
wifi: implement mesh channel switch userspace API commit
wifi: enable channels 52-64 and 100-144 for world roaming commit
wifi: enable DFS for IBSS mode commit, commit, add support for CSA in IBSS mode commit,
B.A.T.M.A.N.: remove vis functionality (replaced by a userspace program) commit, add per VLAN interface attribute framework commit, add the T(ype) V(ersion) L(ength) V(alue) framework commit, commit, commit, commit
8. Crypto
caam: Add platform driver for Job Ring, which are part of Freescale's Cryptographic Accelerator and Assurance Module (CAAM) commit
random: Our mixing functions were analyzed, they suggested a slight change to improve our mixing functions which has been implemented commit
random32: upgrade taus88 generator to taus113 from errata paper commit
9. Virtualization
hyperv: fb: add blanking support commit, add PCI stub, the hyperv framebuffer driver will bind to the PCI device then, so Linux kernel and userspace know there is a proper kernel driver for the device active commit
kvm: Add VFIO device commit
xen-netback: add support for IPv6 checksum offload to guest commit
xen-netback: enable IPv6 TCP GSO to the guest commit
xen-netfront: convert to GRO API commit
10. Security
SELinux: Enable setting security contexts on rootfs (ramfs) inodes. commit
SELinux: Reduce overhead that harmed the high_systime workload of the AIM7 benchmark commit
SELinux: Add the always_check_network policy capability which, when enabled, treats SECMARK as enabled, even if there are no netfilter SECMARK rules and treats peer labeling as enabled, even if there is no Netlabel or labeled IPsec configuration.policy capability for always checking packet and peer classes 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 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 commit
audit: new feature which only grants processes with CAP_AUDIT_CONTROL the ability to unset their loginuid 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 commit, commit
keys: Expand the capacity of a keyring commit
keys: Implement a big key type that can save to tmpfs commit
keys: Add per-user namespace registers for persistent per-UID kerberos caches commit
ima: add audit log support for larger hashes commit
ima: enable support for larger default filedata hash algorithms commit
ima: new templates management mechanism commit
11. Tracing/perf
- perf trace
- perf probe
perf record: Add option --force-per-cpu to force per-cpu mmaps commit
perf record: Add abort_tx,no_tx,in_tx branch filter options to perf record -j commit
perf report: Add --max-stack option to limit callchain stack scan commit
perf top: Add new option --ignore-vmlinux to explicitly indicate that we do not want to use these kernels and just use what we have (kallsyms commit
perf tools: Add possibility to specify mmap size via -m/--mmap-pages by appending unit size character (B/K/M/G) to the number commit
perf top: Add --max-stack option to limit callchain stack scan commit
perf stat: Add perf stat --transaction to print the basic transactional execution statistics commit
perf: Add support for recording transaction flags commit
perf: Support sorting by in_tx or abort branch flags commit
ftrace: Add set_graph_notrace filter, analogous to set_ftrace_notrace and can be used for eliminating uninteresting part of function graph trace output commit
perf bench sched: Add --threaded option, allow the measurement of thread versus process context switch performance commit
perf buildid-cache: Add ability to add kcore to the cache commit
12. Other news sites that track the changes of this release
French: linuxfr.org Sortie de Linux 3.13
German language: heise.de Kernel-Log Was 3.13 bringt (1): Dateisysteme und Storage, (2) Netzwerk, (3) Infrastruktur, (4) Treiber, (5) Grafiktreiber