9980
Comment:
|
← Revision 24 as of 2017-12-30 01:30:14 ⇥
37804
converted to 1.6 markup
|
Deletions are marked like this. | Additions are marked like this. |
Line 5: | Line 5: |
Linux 3.14 [https://lkml.org/lkml/2014/3/30/336 has been released] on Sun, 30 Mar 2014. /!\ /!\ /!\ WARNING /!\ /!\ /!\ : This page is not complete and it's missing lots of critical information. While it is finished, you can read: * LWN list of changes: [https://lwn.net/Articles/581657/ part 1], [https://lwn.net/Articles/582352/ part 2], [https://lwn.net/Articles/583681/ part 3] * Phoronix: [http://www.phoronix.com/scan.php?page=news_item&px=MTYzNDg Recapping The Top Changes Of The Linux 3.14 Kernel] [[TableOfContents()]] |
Linux 3.14 [[https://lkml.org/lkml/2014/3/30/336|has been released]] on Sun, 30 Mar 2014. '''Summary''': This release includes the deadline task scheduling policy for real-time tasks, a memory compression mechanism is now considered stable, a port of the locking validator to userspace, ability to store properties such as compression for each inode in Btrfs, trigger support for tracing events, improvements to userspace probing, kernel address space randomization, TCP automatic coalescing of certain kinds of connections, a new network packet scheduler to fight bufferbloat, new drivers and many other small improvements. <<TableOfContents>> |
Line 15: | Line 11: |
== Deadline scheduling class for better real time scheduling == | == Deadline scheduling class for better real-time scheduling == |
Line 19: | Line 15: |
The approach of process priorities is, however, not well suited for real time tasks. The community of [https://rt.wiki.kernel.org/ Linux realtime users] has created an alternative designed around real time concepts: deadline scheduling, implemented as a new scheduling policy, SCHED_DEADLINE. Deadline scheduling gets away with the notion of process priorities. Instead, processes provide three parametsr: runtime, period, and deadline. A SCHED_DEADLINE task is guaranteed to receive "runtime" microseconds of execution time every "period" microseconds, and these "runtime" microseconds are available within "deadline" microseconds from the beginning of the period. The task scheduler uses that information to run the process with the earliest deadline, a behavior closer to the requirements needed by real time systems. For more details about the scheduling algorithms, [https://git.kernel.org/cgit/linux/kernel/git/torvalds/linux.git/plain/Documentation/scheduler/sched-deadline.txt?id=712e5e34aef449ab680b35c0d9016f59b0a4494c read the documentation] Recommended LWN article: [https://lwn.net/Articles/575497/ Deadline scheduling: coming soon?] Documentation: [https://git.kernel.org/cgit/linux/kernel/git/torvalds/linux.git/plain/Documentation/scheduler/sched-deadline.txt?id=712e5e34aef449ab680b35c0d9016f59b0a4494c Documentation/scheduler/sched-deadline.txt] Code: [http://git.kernel.org/linus/1baca4ce16b8cc7d4f50be1f7914799af30a2861 commit 1], [http://git.kernel.org/linus/239be4a982154ea0c979fca5846349bb68973aed 2], [http://git.kernel.org/linus/aab03e05e8f7e26f51dee792beddcb5cca9215a5 3], [http://git.kernel.org/linus/755378a47192a3d1f7c3a8ca6c15c1cf76de0af2 4], [http://git.kernel.org/linus/2d3d891d3344159d5b452a645e355bbe29591e8b 5], [http://git.kernel.org/linus/332ac17ef5bfcff4766dfdfd3b4cdf10b8f8f155 6], [http://git.kernel.org/linus/af6ace764d03900524e9b1ac621a1c520ee49fc6 7], [http://git.kernel.org/linus/de212f18e92c952533d57c5510d2790199c75734 8], [http://git.kernel.org/linus/e4099a5e929435cd6349343f002583f29868c900 9], [http://git.kernel.org/linus/1724813d9f2c7ff702b46d3e4a4f6d9b10a8f8c2 10], [http://git.kernel.org/linus/6bfd6d72f51c51177676f2b1ba113fe0a85fdae4 11], [http://git.kernel.org/linus/712e5e34aef449ab680b35c0d9016f59b0a4494c 12], [http://git.kernel.org/linus/d50dde5a10f305253cbc3855307f608f8a3c5f73 13] |
The approach of process priorities is, however, not well suited for real-time tasks. [[http://en.wikipedia.org/wiki/SCHED_DEADLINE|Evidence Srl and the ReTiS Lab]] have created an alternative designed around real time concepts: deadline scheduling, implemented as a new scheduling policy, SCHED_DEADLINE. Deadline scheduling gets away with the notion of process priorities. Instead, processes provide three parameters: runtime, period, and deadline. A SCHED_DEADLINE task is guaranteed to receive "runtime" microseconds of execution time every "period" microseconds, and these "runtime" microseconds are available within "deadline" microseconds from the beginning of the period. The task scheduler uses that information to run the process with the earliest deadline, a behavior closer to the requirements needed by real-time systems. For more details about the scheduling algorithms, [[https://git.kernel.org/cgit/linux/kernel/git/torvalds/linux.git/plain/Documentation/scheduler/sched-deadline.txt?id=712e5e34aef449ab680b35c0d9016f59b0a4494c|read the documentation]] Recommended LWN article: [[https://lwn.net/Articles/575497/|Deadline scheduling: coming soon?]] Recommended page on Wikipedia: [[https://en.wikipedia.org/wiki/SCHED_DEADLINE|SCHED_DEADLINE]] Documentation: [[https://git.kernel.org/cgit/linux/kernel/git/torvalds/linux.git/plain/Documentation/scheduler/sched-deadline.txt?id=712e5e34aef449ab680b35c0d9016f59b0a4494c|Documentation/scheduler/sched-deadline.txt]] Code: [[https://git.kernel.org/linus/1baca4ce16b8cc7d4f50be1f7914799af30a2861|commit 1]], [[https://git.kernel.org/linus/239be4a982154ea0c979fca5846349bb68973aed|2]], [[https://git.kernel.org/linus/aab03e05e8f7e26f51dee792beddcb5cca9215a5|3]], [[https://git.kernel.org/linus/755378a47192a3d1f7c3a8ca6c15c1cf76de0af2|4]], [[https://git.kernel.org/linus/2d3d891d3344159d5b452a645e355bbe29591e8b|5]], [[https://git.kernel.org/linus/332ac17ef5bfcff4766dfdfd3b4cdf10b8f8f155|6]], [[https://git.kernel.org/linus/af6ace764d03900524e9b1ac621a1c520ee49fc6|7]], [[https://git.kernel.org/linus/de212f18e92c952533d57c5510d2790199c75734|8]], [[https://git.kernel.org/linus/e4099a5e929435cd6349343f002583f29868c900|9]], [[https://git.kernel.org/linus/1724813d9f2c7ff702b46d3e4a4f6d9b10a8f8c2|10]], [[https://git.kernel.org/linus/6bfd6d72f51c51177676f2b1ba113fe0a85fdae4|11]], [[https://git.kernel.org/linus/712e5e34aef449ab680b35c0d9016f59b0a4494c|12]], [[https://git.kernel.org/linus/d50dde5a10f305253cbc3855307f608f8a3c5f73|13]] |
Line 31: | Line 29: |
zram provides RAM block devices. Everything written to these block devices gets compressed. If zram block devices are used as swap, the system will be effectively compressing the memory it tries to swap. This effetively works as a cheap memory compression mechanism to improve reponsiveness in systems with limited amounts of memory. Zram is being used by TV companies, Android 4.4, cyanogenmod, ChromeOS, Lubuntu... Zram has been in staging since [http://kernelnewbies.org/Linux_2_6_33#head-2d401df4d54a65a60c31ce7c591cf7660851cfd8 Linux 2.6.33]. In this release, zram has been moved out of staging to drivers/block/zram. Code: [http://git.kernel.org/linus/cd67e10ac6997c6d1e1504e3c111b693bfdbc148 commit] |
zram provides RAM block devices. Everything written to these block devices gets compressed. If zram block devices are used as swap, when the system tries to move parts of memory to swap it will be effectively moving memory from one part of the RAM to another, except that the data will be compressed before being copied to the destination. This effectively works as a cheap memory compression mechanism to improve responsiveness in systems with limited amounts of memory. Zram is being used by TV companies, Android 4.4, Cyanogenmod, Chrome OS, Lubuntu... Zram has been in staging since [[http://kernelnewbies.org/Linux_2_6_33#head-2d401df4d54a65a60c31ce7c591cf7660851cfd8|Linux 2.6.33]]. In this release, zram has been moved out of staging to drivers/block/zram. Code: [[https://git.kernel.org/linus/cd67e10ac6997c6d1e1504e3c111b693bfdbc148|commit]], [[https://git.kernel.org/linus/1b945aeef0b9cb5e98d682c310272b08198e54b5|commit]], [[https://git.kernel.org/linus/bcf1647d0899666f0fb90d176abf63bae22abb7c|commit]] == Btrfs: inode properties == This release adds infrastructure in Btrfsto attach name/value pairs to inodes as xattrs. The purpose of these pairs is to store properties for inodes, such as compression. These properties can be inherited, this means when a directory inode has inheritable properties set, these are added to new inodes created under that directory. Subvolumes can also have properties associated with them, and they can be inherited from their parent subvolume. This release adds one specific property implementation, named "compression", whose values can be "lzo" or "zlib" and it's an inheritable property. Code: [[https://git.kernel.org/linus/63541927c8d11d2686778b1e8ec71c14b4fd53e4|commit]] |
Line 39: | Line 44: |
The tracing infastructure in the Linux kernel allows to easily register probe functions as events (for more details, see [https://git.kernel.org/cgit/linux/kernel/git/torvalds/linux.git/plain/Documentation/trace/events.txt Documentation/trace/events.txt]. This release allows these events to conditionally trigger "commands". These commands can take various forms, examples would be enabling or disabling other trace events or invoking a stack trace whenever the trace event is hit. Any given trigger can additionally have an event filter, the command will only be invoked if the event being invoked passes the associated filter. | The tracing infastructure in the Linux kernel allows to easily register probe functions as events (for more details, see [[https://git.kernel.org/cgit/linux/kernel/git/torvalds/linux.git/plain/Documentation/trace/events.txt|Documentation/trace/events.txt]]. This release allows these events to conditionally trigger "commands". These commands can take various forms, examples would be enabling or disabling other trace events or invoking a stack trace whenever the trace event is hit. Any given trigger can additionally have an event filter, the command will only be invoked if the event being invoked passes the associated filter. |
Line 45: | Line 50: |
For more details, see Section 6 in [https://git.kernel.org/cgit/linux/kernel/git/torvalds/linux.git/tree/Documentation/trace/events.txt Documentation/trace/events.txt] Recommended LWN article: [https://lwn.net/Articles/556186/ Triggers for tracing] Code: [http://git.kernel.org/linus/7862ad1846e994574cb47dc503cc2b1646ea6593 commit 1], [http://git.kernel.org/linus/93e31ffbf417a84fbae518fb46b3ea3f0d8fa6e1 2], [http://git.kernel.org/linus/f21ecbb35f865a508073c0e73854da469a07f278 3], [http://git.kernel.org/linus/2a2df321158817811c5dc206dce808e0aa9f6d89 4],[http://git.kernel.org/linus/bac5fb97a173aeef8296b3efdb552e3489d55179 5], [http://git.kernel.org/linus/85f2b08268c014e290b600ba49fa85530600eaa1 6], [http://git.kernel.org/linus/ac38fb8582d86ba887b5d07c0912dec135bf6931 7] |
For more details, see Section 6 in [[https://git.kernel.org/cgit/linux/kernel/git/torvalds/linux.git/tree/Documentation/trace/events.txt|Documentation/trace/events.txt]] Recommended LWN article: [[https://lwn.net/Articles/556186/|Triggers for tracing]] Code: [[https://git.kernel.org/linus/7862ad1846e994574cb47dc503cc2b1646ea6593|commit 1]], [[https://git.kernel.org/linus/93e31ffbf417a84fbae518fb46b3ea3f0d8fa6e1|2]], [[https://git.kernel.org/linus/f21ecbb35f865a508073c0e73854da469a07f278|3]], [[https://git.kernel.org/linus/2a2df321158817811c5dc206dce808e0aa9f6d89|4]],[[https://git.kernel.org/linus/bac5fb97a173aeef8296b3efdb552e3489d55179|5]], [[https://git.kernel.org/linus/85f2b08268c014e290b600ba49fa85530600eaa1|6]], [[https://git.kernel.org/linus/ac38fb8582d86ba887b5d07c0912dec135bf6931|7]] |
Line 54: | Line 59: |
Userspace probes are a [http://kernelnewbies.org/Linux_3.5#head-95fccbb746226f6b9dfa4d1a48801f63e11688de Linux 3.5] feature that allows to set tracing probes in userspace programs at runtime. This release enables to fetch other types of argument for the uprobes: memory, stack, deference, bitfield, retval and file offset. For more details see the commit links. Code: [http://git.kernel.org/linus/b7e0bf341f6cfa92ae0a0e3d0c3496729595e1e9 commit 1], [http://git.kernel.org/linus/b079d374fd84637aba4b825a329e794990b7b486 2], [http://git.kernel.org/linus/306cfe2025adcba10fb883ad0c540f5541d1b086 3] |
Userspace probes are a [[http://kernelnewbies.org/Linux_3.5#head-95fccbb746226f6b9dfa4d1a48801f63e11688de|Linux 3.5]] feature that allows to set tracing probes in userspace programs at runtime. This release enables to fetch other types of argument for the uprobes: memory, stack, deference, bitfield, retval and file offset. For more details see [[https://lwn.net/Articles/577142/|here]]. Code: [[https://git.kernel.org/linus/b7e0bf341f6cfa92ae0a0e3d0c3496729595e1e9|commit 1]], [[https://git.kernel.org/linus/b079d374fd84637aba4b825a329e794990b7b486|2]], [[https://git.kernel.org/linus/306cfe2025adcba10fb883ad0c540f5541d1b086|3]] |
Line 60: | Line 65: |
The Linux kernel has ([http://kernelnewbies.org/Linux_2_6_18#head-5f53299debf913cd806ce6e9a2670f28d708832d since 2.6.18]) a lock validator that can find locking issues at runtime. This release makes possible to run the Linux locking validator in userspace, making possible to debug locking issues in userspace programs. For more details, see the recommended LWN link. Recommended LWN article: [https://lwn.net/Articles/536363/ User-space lockdep] Code: [http://git.kernel.org/linus/5634bd7d2ab14fbf736b62b0788fb68e2cb0fde2 commit 1], [http://git.kernel.org/linus/45e6207464b59dca63c8a9a79a7befbbf6a68fdb 2], [http://git.kernel.org/linus/878f968eeb852383ff79dc3f181db24e5b52fd75 3], [http://git.kernel.org/linus/5a52c9b480e09a782618dbf08de57f9ca54c8b49 4], [http://git.kernel.org/linus/dbe941827eab53194eda5cd350a4e1414f192658 5], [http://git.kernel.org/linus/231941eec8aeee4f0ac210a28e484200b20f74d8 6], [http://git.kernel.org/linus/f612ac05b7ce66919507d25f4c81e4272f7a8705 7] |
The Linux kernel has ([[http://kernelnewbies.org/Linux_2_6_18#head-5f53299debf913cd806ce6e9a2670f28d708832d|since 2.6.18]]) a lock validator that can find locking issues at runtime. This release makes possible to run the Linux locking validator in userspace, making possible to debug locking issues in userspace programs. For more details, see the recommended LWN link. Recommended LWN article: [[https://lwn.net/Articles/536363/|User-space lockdep]] Code: [[https://git.kernel.org/linus/5634bd7d2ab14fbf736b62b0788fb68e2cb0fde2|commit 1]], [[https://git.kernel.org/linus/45e6207464b59dca63c8a9a79a7befbbf6a68fdb|2]], [[https://git.kernel.org/linus/878f968eeb852383ff79dc3f181db24e5b52fd75|3]], [[https://git.kernel.org/linus/5a52c9b480e09a782618dbf08de57f9ca54c8b49|4]], [[https://git.kernel.org/linus/dbe941827eab53194eda5cd350a4e1414f192658|5]], [[https://git.kernel.org/linus/231941eec8aeee4f0ac210a28e484200b20f74d8|6]], [[https://git.kernel.org/linus/f612ac05b7ce66919507d25f4c81e4272f7a8705|7]] |
Line 70: | Line 75: |
Recommended LWN article: [https://lwn.net/Articles/569635/ Kernel address space layout randomization] Code: [http://git.kernel.org/linus/e8236c4d9338d52d0f2fcecc0b792ac0542e4ee9 1], [http://git.kernel.org/linus/da2b6fb990cf782b18952f534ec7323453bc4fc9 2], [http://git.kernel.org/linus/a653f3563c51c7bb7de63d607bef09d3baddaeb8 3], [http://git.kernel.org/linus/5bfce5ef55cbe78ee2ee6e97f2e26a8a582008f3 4], [http://git.kernel.org/linus/6145cfe394a7f138f6b64491c5663f97dba12450 5], [http://git.kernel.org/linus/19259943f0954dcd1817f94776376bf51c6a46d5 6], [http://git.kernel.org/linus/f32360ef6608434a032dc7ad262d45e9693c27f3 7], [http://git.kernel.org/linus/8ab3820fd5b2896d66da7bb2a906bc382e63e7bc 8], [http://git.kernel.org/linus/82fa9637a2ba285bcc7c5050c73010b2c1b3d803 9] |
Recommended LWN article: [[https://lwn.net/Articles/569635/|Kernel address space layout randomization]] Code: [[https://git.kernel.org/linus/e8236c4d9338d52d0f2fcecc0b792ac0542e4ee9|1]], [[https://git.kernel.org/linus/da2b6fb990cf782b18952f534ec7323453bc4fc9|2]], [[https://git.kernel.org/linus/a653f3563c51c7bb7de63d607bef09d3baddaeb8|3]], [[https://git.kernel.org/linus/5bfce5ef55cbe78ee2ee6e97f2e26a8a582008f3|4]], [[https://git.kernel.org/linus/6145cfe394a7f138f6b64491c5663f97dba12450|5]], [[https://git.kernel.org/linus/19259943f0954dcd1817f94776376bf51c6a46d5|6]], [[https://git.kernel.org/linus/f32360ef6608434a032dc7ad262d45e9693c27f3|7]], [[https://git.kernel.org/linus/8ab3820fd5b2896d66da7bb2a906bc382e63e7bc|8]], [[https://git.kernel.org/linus/82fa9637a2ba285bcc7c5050c73010b2c1b3d803|9]] |
Line 76: | Line 81: |
When applications do consecutive small write()/sendmsg() system calls, the Linux kernel will try to coalesce these small writes as much as possible, to lower total amount of sent packets - this feature is called "automatic corking". Automatic corking is done if at least one prior packet for the flow is waiting in Qdisc queues or device transmit queue. Applications can still [https://access.redhat.com/site/documentation/en-US/Red_Hat_Enterprise_MRG/1.2/html/Realtime_Tuning_Guide/sect-Realtime_Tuning_Guide-Application_Tuning_and_Deployment-TCP_NODELAY_and_Small_Buffer_Writes.html use TCP_CORK] for optimal behavior when they know how/when to uncork their sockets. A new sysctl (/proc/sys/net/ipv4/tcp_autocorking) has been added to control this feature, which defaults to enabled. For benchmarks and more details see the commit link. Code: [http://git.kernel.org/linus/f54b311142a92ea2e42598e347b84e1655caf8e3 commit] |
When applications do consecutive small write()/sendmsg() system calls, the Linux kernel will try to coalesce these small writes as much as possible, to lower total amount of sent packets - this feature is called "automatic corking". Automatic corking is done if at least one prior packet for the flow is waiting in Qdisc queues or device transmit queue. Applications can still [[https://access.redhat.com/site/documentation/en-US/Red_Hat_Enterprise_MRG/1.2/html/Realtime_Tuning_Guide/sect-Realtime_Tuning_Guide-Application_Tuning_and_Deployment-TCP_NODELAY_and_Small_Buffer_Writes.html|use TCP_CORK]] for optimal behavior when they know how/when to uncork their sockets. A new sysctl (/proc/sys/net/ipv4/tcp_autocorking) has been added to control this feature, which defaults to enabled. For benchmarks and more details see the commit link. Code: [[https://git.kernel.org/linus/f54b311142a92ea2e42598e347b84e1655caf8e3|commit]] == Antibufferbloat: "Proportional Integral controller Enhanced" packet scheduler == Bufferbloat is a phenomenon where excess buffers in the network cause high latency and jitter. As more and more interactive applications (e.g. voice over IP, real-time video streaming and financial transactions) run in the Internet, high latency and jitter degrade application performance. There has been a number of features and improvements in the Linux kernel network stack that try to address this problem. This release adds a new network packet scheduler: PIE(Proportional Integral controller Enhanced) that can effectively control the average queueing latency to a target value. Simulation results, theoretical analysis and Linux testbed results have shown that PIE can ensure low latency and achieve high link utilization under various congestion situations. The design incurs very small overhead. For more information, please [[ftp://ftpeng.cisco.com/pie/documents/|see technical paper about PIE]] in the IEEE Conference on High Performance Switching and Routing 2013. Also you can refer to the [[https://tools.ietf.org/html/draft-pan-tsvwg-pie-00|IETF draft submission]]. All relevant code, documents and test scripts and results can be found at ftp://ftpeng.cisco.com/pie/. Code: [[https://git.kernel.org/linus/d4b36210c2e6ecef0ce52fb6c18c51144f5c2d88|commit]] = Drivers and architectures = All the driver and architecture-specific changes can be found in the [[http://kernelnewbies.org/Linux_3.14-DriversArch|Linux_3.14-DriversArch page]] = Core = * Tool for suspend/resume performance analysis and optimization [[https://git.kernel.org/linus/ee8b09cd60bfe45d856e7c3bef8742835686bf4e|commit]] * futexes: Increase hash table size for better performance [[https://git.kernel.org/linus/a52b89ebb6d4499be38780db8d176c5d3a6fbc17|commit]] * IPC queues: remove limits for the amount of system-wide queues that were added in 93e6f119c0ce [[https://git.kernel.org/linus/f3713fd9cff733d9df83116422d8e4af6e86b2bb|commit]] * kexec: add sysctl to disable future kexec usage [[https://git.kernel.org/linus/7984754b99b6c89054edc405e9d9d35810a91d36|commit]] * lib: introduce arch optimized hash library [[https://git.kernel.org/linus/71ae8aac3e198c6f3577cb7ad3a17f6128e97bfa|commit]] * locking: Optimize lock_bh functions [[https://git.kernel.org/linus/9ea4c380066fbe23fe0da7f4abfabc444f2467f4|commit]] * scheduler: Drop sysctl_numa_balancing_settle_count sysctl [[https://git.kernel.org/linus/1bd53a7efdc988163ec4c25f656df38dbe500632|commit]] * scheduler: add tracepoints related to NUMA task migration [[https://git.kernel.org/linus/286549dcaf4f128cb04f0ad56dfb677d7d19b500|commit]] * stackprotector: Introduce CONFIG_CC_STACKPROTECTOR_STRONG [[https://git.kernel.org/linus/8779657d29c0ebcc0c94ede4df2f497baf1b563f|commit]] * swap: add a simple detector for inappropriate swapin readahead [[https://git.kernel.org/linus/579f82901f6f41256642936d7e632f3979ad76d4|commit]] * sysfs, kernfs: add skeletons for kernfs [[https://git.kernel.org/linus/b8441ed279bff09a0a5ddeacf8f4087d2fb424ca|commit]] * rcutorture: Add --bootargs argument to specify additional boot arguments [[https://git.kernel.org/linus/7dca927328fce6f6854486c4c2355ffbe1469240|commit]], add --buildonly dry-run capability [[https://git.kernel.org/linus/1127481392c8b95ad5066b6be99b3482522d4c89|commit]], add --kmake-arg argument to kvm.sh [[https://git.kernel.org/linus/74878fb6368eb254d5bedd8f21a165562222919f|commit]], add --no-initrd argument to kvm.sh [[https://git.kernel.org/linus/73931b5ee92d013b7b7d62927cca2a8dfdf3a9d3|commit]], add --qemu-args argument to kvm.sh [[https://git.kernel.org/linus/e9ce640001c681a1ec01a996dfae2f8fa5d1cfba|commit]], add KVM-based test framework [[https://git.kernel.org/linus/c87b9c601ac862b1fa41a9d759a3c05711a8391d|commit]], add SRCU Kconfig-fragment files [[https://git.kernel.org/linus/a0b8e0853a87ef008a819e8cbe905735934396da|commit]], add datestamp argument to kvm.sh [[https://git.kernel.org/linus/847bfd254399eebc8752d39f43628e6c1baac076|commit]], add per-Kconfig fragment boot parameters [[https://git.kernel.org/linus/0cc2441447eafd4e0742b6363e416967167c5137|commit]], add per-version default Kconfig fragments and module parameters [[https://git.kernel.org/linus/4275be83b807c2926d2b23e67eb61692a1810080|commit]], add v3.12 version, which adds sysidle testing [[https://git.kernel.org/linus/ccb51a893c8c2b7c933b93f5c298e00b9d6eb76f|commit]], eliminate --rcu-kvm argument [[https://git.kernel.org/linus/2bcdf4e31ae4e215b1e61831d9defa3632cb7bd3|commit]], eliminate configdir argument from kvm-recheck.sh script [[https://git.kernel.org/linus/06d9d1b2e2e58347af37f00856156a550522b2cb|commit]], remove decorative qemu argument [[https://git.kernel.org/linus/14db63f575db5e27a733f873e17930f3071076ef|commit]] * cpufreq: support for boost frequency support [[https://git.kernel.org/linus/2fb4719b25602a03fb6c7da77d029db03103663d|commit]], [[https://git.kernel.org/linus/6f19efc0a1ca08bc61841b971d8b85ab505d95c8|commit]] = Memory management = * /proc/meminfo: provide estimated available memory [[https://git.kernel.org/linus/34e431b0ae398fc54ea69ff85ec700722c9da773|commit]] * Add overcommit_kbytes sysctl variable, it allows a more finer grain configuration than overcommit_ratio in machines with lots of memory [[https://git.kernel.org/linus/49f0ce5f92321cdcf741e35f385669a421013cb7|commit]] * Document improved handling of swappiness==0 (implemented long time ago) [[https://git.kernel.org/linus/8582cb96b0bfd6891766d8c30d759bf21aad3b4d|commit]] = Block layer = * Immutable bio vecs [[https://git.kernel.org/linus/4550dd6c6b062fc5e5b647296d55da22616123c3|commit]] * rbd: add support for single-major device number allocation scheme [[https://git.kernel.org/linus/9b60e70b3b6a8e4bc2d1b6d9f858a30e1cec496b|commit]], enable extended devt in single-major mode [[https://git.kernel.org/linus/7e513d43669a0505ee3b122344176147a674bcbf|commit]] * Device Manager * dm cache policy mq: introduce three promotion threshold tunables [[https://git.kernel.org/linus/78e03d69733c48312ae81fe4ac0790dbea412b9d|commit]] * dm cache: add block sizes and total cache blocks to status output [[https://git.kernel.org/linus/6a388618f120cdc70cd6b6dbcab5f7a4aff500f6|commit]] * dm cache: add policy name to status output [[https://git.kernel.org/linus/2e68c4e6caad9fdadc1cef8b6cb9569192e8a42b|commit]] = File systems = * Btrfs * Incompatible format change to remove hole extents [[https://git.kernel.org/linus/16e7549f045d33b0c5b0ebf19d08439e9221d40c|commit]] * Add a few mount options so that features can be changed on remounts: "barrier" [[https://git.kernel.org/linus/842bef5891aaf13e2dede01d86397d810fde2dd8|commit]], "datacow" [[https://git.kernel.org/linus/a258af7a3e395a1d36190c81614dca0bcb5f6012|commit]], "datasum" [[https://git.kernel.org/linus/d399167d88ea53590d6c0850b2d5534cbd21da02|commit]], "noautodefrag" [[https://git.kernel.org/linus/fc0ca9af180b91aad2fbf2fe3b16a12e1e05a760|commit]], "nodiscard" [[https://git.kernel.org/linus/e07a2ade4426a2cbafae4018aa7b6944bb627a6e|commit]], "noenospc_debug" [[https://git.kernel.org/linus/530362934332e4efac81d40583aa1225e64f556f|commit]], "noflushoncommit" [[https://git.kernel.org/linus/2c9ee85671f66cd3ffc7067de47cc59ed6677299|commit]], "noinode_cache" [[https://git.kernel.org/linus/3818aea275423236db38a2d2d0a4951bc6da2e01|commit]], "treelog" [[https://git.kernel.org/linus/a88998f291fc707f18ee42ae45220a3a3e384c27|commit]] * Publish btrfs internal information in sysfs, some of the features can be changed [[https://git.kernel.org/linus/ba631941ef09c10e229661219dbd1707e56131d8|commit 1]], [[https://git.kernel.org/linus/6ab0a2029ceaedb78af807871820708b7353e3be|2]], [[https://git.kernel.org/linus/29e5be240a3caf175364fdeecb0441dff500d5d9|3]], [[https://git.kernel.org/linus/f8ba9c11f8320be0d553d4b18000e35f7ad672ac|4]], [[https://git.kernel.org/linus/5ac1d209f11271fbfad0fa31ba56ec64c142d9ea|5]], [[https://git.kernel.org/linus/510d73600aafbc64efee8d0e71c219c0e651cb7f|6]], [[https://git.kernel.org/linus/079b72bca30dbc74c86c7c7825b8c34eb86ce3ee|7]], [[https://git.kernel.org/linus/79da4fa4d9dcf8c948ef8b5848f747ef08f6e732|8]] * Add ioctls to query/change feature bits online [[https://git.kernel.org/linus/2eaa055fab4e3127c9f572fda1b710cbb2acdf1c|commit]] * Performance improvements: Various performance improvements, see each commit for details [[https://git.kernel.org/linus/1b8e7e45e57cc98bf6c8ab9b3087d634636ba2e6|commit]], [[https://git.kernel.org/linus/32193c147f451652c6c089b5fa1c9852d53d65ee|commit]], [[https://git.kernel.org/linus/1acae57b161ef1282f565ef907f72aeed0eb71d9|commit]], [[https://git.kernel.org/linus/23c671a58831a5aaca3b56b915c8394a274a96df|commit]], [[https://git.kernel.org/linus/67de11769bd5ec339a62169f500b04f304826c00|commit]], [[https://git.kernel.org/linus/5039eddc19aee8c894191c24f2dde4e645ca1bbb|commit]], [[https://git.kernel.org/linus/12cfbad90e02793b7a71b7591ebd5c3f9228dc5d|commit]], [[https://git.kernel.org/linus/2ef1fed285d58e77ce777d9a525fed4788b5a6d0|commit]], [[https://git.kernel.org/linus/7ef81ac86c8a44ab9f4e6e04e1f4c9ea53615b8a|commit]], [[https://git.kernel.org/linus/eb653de15987612444b6cde3b0e67b1edd94625f|commit]], [[https://git.kernel.org/linus/0a2b2a844af616addc87cac3cc18dcaba2a9d0fb|commit]], [[https://git.kernel.org/linus/5a4267ca20d4c452a97dace4612f1dfc04147fbd|commit]] * Add ioctl to export size of global metadata reservation, for better btrfs df reporting [[https://git.kernel.org/linus/01e219e8069516cdb98594d417b8bb8d906ed30d|commit]] * f2fs * Add a new mount option: inline_data [[https://git.kernel.org/linus/8274de77b7072d983fe4b452b981b3e520f12698|commit]] * Add a sysfs entry to control max_discards [[https://git.kernel.org/linus/7ac8c3b051ed3a3e71df72a7ffc44e14cc5c2bae|commit]] * Improve write performance under frequent fsync calls [[https://git.kernel.org/linus/fb5566da9181d33ecdd9892e44f90320e7d4cc9f|commit]] * Introduce sysfs entry to control in-place-update policy [[https://git.kernel.org/linus/216fbd64437452d23db54ae845916facd7215caa|commit]] * hfsplus: add HFSX subfolder count support [[https://git.kernel.org/linus/d7d673a591701f131e53d4fd4e2b9352f1316642|commit]] * exofs: Allow O_DIRECT open [[https://git.kernel.org/linus/d83c7eb65d9bf0a57e7d5ed87a5bd8e5ea6b1fb6|commit]] * ext4: enable punch hole for bigalloc [[https://git.kernel.org/linus/9cb00419faa7dd81e921328a71931d2b95ed5876|commit]] * Ceph: Add ACL support [[https://git.kernel.org/linus/7221fe4c2ed72804b28633c8e0217d65abb0023f|commit]], [[https://git.kernel.org/linus/45195e42c78ea91135108207dbcaf75e5556a309|commit]] * XFS: Allow logical-sector sized O_DIRECT [[https://git.kernel.org/linus/7c71ee78031c248dca13fc94dea9a4cc217db6cf|commit]] * 9P: Introduction of a new cache=mmap model. [[https://git.kernel.org/linus/fb89b45cdfdc8bdab93986f1bc1474e313295c31|commit]] = Networking = * ipv6 addrconf: add IFA_F_NOPREFIXROUTE flag to suppress creation of IP6 routes [[https://git.kernel.org/linus/761aac737eb11901c382a3f021dead59a26983fc|commit]] * ipv6: enable anycast addresses as source addresses for datagrams [[https://git.kernel.org/linus/7c90cc2d40cab15adc78545edba8b5996bd4cade|commit]] * ipv6: router reachability probing [[https://git.kernel.org/linus/7e9805696428113e34625a65a30dbc62cb78acc5|commit]] * ipv6: send Change Status Report after DAD is completed [[https://git.kernel.org/linus/6a7cc41872dd46719fde09756e55e870cd453da8|commit]] * ipv6: support IPV6_PMTU_INTERFACE on sockets [[https://git.kernel.org/linus/93b36cf3425b9bd9c56df7680fb237686b9c82ae|commit]] * ipv6: add the option to use anycast addresses as source addresses in echo reply [[https://git.kernel.org/linus/509aba3b0d366b7f16a9a2eebac1156b25f5f622|commit]] * mac80211 * Add support for QoS mapping [[https://git.kernel.org/linus/32db6b54dfba38aa8fa4072b2a3fc6425139166a|commit]], * Tx frame latency statistics [[https://git.kernel.org/linus/ad38bfc916da6aee9160bfa5335aed8d6c190e39|commit]] * Add generic cipher scheme support [[https://git.kernel.org/linus/2475b1cc0d5283a33144b79f3eba6d401d873962|commit]] * Vendor command support [[https://git.kernel.org/linus/ad7e718c9b4f717823fd920a0103f7b0fb06183f|commit]] * macvtap: Add support of packet capture on macvtap device. [[https://git.kernel.org/linus/6acf54f1cf0a6747bac9fea26f34cfc5a9029523|commit]] * net-gre-gro: Add GRE support to the GRO stack [[https://git.kernel.org/linus/bf5a755f5e9186406bbf50f4087100af5bd68e40|commit]] * net-sysfs: add support for device-specific rx queue sysfs attributes [[https://git.kernel.org/linus/a953be53ce40440acb4740edb48577b9468d4c3d|commit]] * Add GRO support for UDP encapsulating protocols [[https://git.kernel.org/linus/b582ef0990d457f7ce8ccf827af51a575ca0b4a6|commit]] * Add GRO support for vxlan traffic [[https://git.kernel.org/linus/dc01e7d3447793fd9e4090aa9d50c549848b5a18|commit]] * Add NETDEV_PRECHANGEMTU to notify before mtu change happens [[https://git.kernel.org/linus/1d486bfb66971ebacc2a46a23431ace9af70dc66|commit]] * if_arp: add ARPHRD_6LOWPAN type [[https://git.kernel.org/linus/0abc652c796dab74d34d60473ec5594cd21620be|commit]] * net_tstamp: Add SIOCGHWTSTAMP ioctl to match SIOCSHWTSTAMP [[https://git.kernel.org/linus/fd468c74bd4d6949736810a80d6ca05eb20fba84|commit]] * netconf: add proxy-arp support [[https://git.kernel.org/linus/f085ff1c131c08fb6b34802f63c22921c4d8c506|commit]], add support for IPv6 proxy_ndp [[https://git.kernel.org/linus/c92d5491a6d9774c5fb863512e93f1f86aa083ad|commit]] * netfilter * Add IPv4/6 IPComp extension match support [[https://git.kernel.org/linus/6a649f339802f104549e1fb211e381036661e244|commit]] * Introduce l2tp match extension [[https://git.kernel.org/linus/74f77a6b2b1c98d3f14364dccdd2353b99ecfeda|commit]] * nf_nat: add full port randomization support [[https://git.kernel.org/linus/34ce324019e76f6d93768d68343a0e78f464d754|commit]] * nf_tables: add "inet" table for IPv4/IPv6 [[https://git.kernel.org/linus/1d49144c0aaa61be4e3ccbef9cc5c40b0ec5f2fe|commit]] * nf_tables: add nfproto support to meta expression [[https://git.kernel.org/linus/124edfa9e0451e97d621cd2796a44ff499e21036|commit]] * nf_tables: add support for multi family tables [[https://git.kernel.org/linus/115a60b173af0170e0db26b9a3fd6a911fba70a3|commit]] * nfnetlink_queue: enable UID/GID socket info retrieval [[https://git.kernel.org/linus/08c0cad69f32ad1e881fa3fb7f5e0a25db5b07ce|commit]] * nft: add queue module [[https://git.kernel.org/linus/0aff078d58e1c69139189e45ba5e929c030e8056|commit]] * nft_ct: Add support to set the connmark [[https://git.kernel.org/linus/c4ede3d3821a732120fd671846c2606a1eb4e8b3|commit]] * nft_meta: add l4proto support [[https://git.kernel.org/linus/4566bf27069b7780e453cffb24ea5f5323059885|commit]] * nft_reject: support for IPv6 and TCP reset [[https://git.kernel.org/linus/bee11dc78fc8a41299be5ce04b1c76b0057af450|commit]] * numa: add a sysctl for numa_balancing [[https://git.kernel.org/linus/54a43d54988a3731d644fdeb7a1d6f46b4ac64c7|commit]] * openvswitch: Allow user space to announce ability to accept unaligned Netlink messages [[https://git.kernel.org/linus/43d4be9cb55f3bac5253e9289996fd9d735531db|commit]], enable memory mapped Netlink i/o [[https://git.kernel.org/linus/795449d8b846a42d11d47d6ff2f51ab2967411c3|commit]] * packet: improve socket create/bind latency in some cases [[https://git.kernel.org/linus/902fefb82ef72a50c78cb4a20cc954b037a98d1c|commit]], introduce PACKET_QDISC_BYPASS socket option [[https://git.kernel.org/linus/d346a3fae3ff1d99f5d0c819bf86edf9094a26a1|commit]], use percpu mmap tx frame pending refcount [[https://git.kernel.org/linus/b013840810c221f2b0cf641d01531526052dc1fb|commit]] * tcp: metrics: New netlink attribute for src IP and dumped in netlink reply [[https://git.kernel.org/linus/8a59359cb80f448923a7bc9f555d477e74547d7a|commit]] * sunrpc: add an "info" file for the dummy gssd pipe [[https://git.kernel.org/linus/e2f0c83a9de331d9352185ca3642616c13127539|commit]] * tun: Add support for RFS on tun flows [[https://git.kernel.org/linus/9bc8893937c8369c9c3a045c05f5820f2242bc96|commit]] * pktgen, xfrm: Add statistics counting when transforming [[https://git.kernel.org/linus/6de9ace4aeef861bf093c5e9b55dc65d1558d1b3|commit]] * rtnetlink: provide api for getting and setting slave info [[https://git.kernel.org/linus/ba7d49b1f0f8e5f24294a880ed576964059af5ef|commit]] * IB: Add flow steering support for IPoIB UD traffic [[https://git.kernel.org/linus/90f1d1b41b70474bf73d07d4300196901cd81718|commit]], ethernet L2 attributes in verbs/cm structures [[https://git.kernel.org/linus/dd5f03beb4f76ae65d76d8c22a8815e424fc607c|commit]] * NFC: NCI: Add set_config API [[https://git.kernel.org/linus/22c15bf30b70ab2eae300f093ffc64e182620aba|commit]] * af_packet: Add Queue mapping mode to af_packet fanout operation [[https://git.kernel.org/linus/2d36097d26b5991d71a2cf4a20c1a158f0f1bfcd|commit]] * batman-adv: add bonding again [[https://git.kernel.org/linus/f3b3d9018975ffb2680b7c1d37122f9d80301587|commit]] * bonding: add netlink attribute support: ad_info [[https://git.kernel.org/linus/4ee7ac7526d4a9413cafa733d824edfe49fdcc46|commit]], ad_select [[https://git.kernel.org/linus/ec029fac3e96980fa8f6f81b8327787a9600dfaa|commit]], all_slaves_active [[https://git.kernel.org/linus/1cc0b1e30c662d84a89690f42826cf49e2278b97|commit]], arp_all_targets [[https://git.kernel.org/linus/d5c842544342fc3f13774ffc5581d4dd3975059b|commit]], arp_interval [[https://git.kernel.org/linus/06151dbcf3f76edbe900138cde9e862f429918c9|commit]], arp_ip_target [[https://git.kernel.org/linus/7f28fa10e21376a10d3b9faad5836869465cc376|commit]], add arp_validate [[https://git.kernel.org/linus/29c4948293bfc426e52a921f4259eb3676961e81|commit]], downdelay [[https://git.kernel.org/linus/c7461f9bf5a11bf88fdbd05b26c6d55b77dcd46d|commit]], fail_over_mac [[https://git.kernel.org/linus/89901972de4c00e74e56529804493734d77ee3d3|commit]], lacp_rate [[https://git.kernel.org/linus/998e40bbf8f0e10b5d84107afc61e29dbc8d2de4|commit]], lp_interval [[https://git.kernel.org/linus/8d836d092ed7b77d13ac1108399165ee7de7463f|commit]], miimon [[https://git.kernel.org/linus/eecdaa6e20284efbe9e76eebd44eac2b22f7b5d7|commit]], min_links [[https://git.kernel.org/linus/7d1010082785b2020b1e2e1211b76209976a33df|commit]], num_grat_arp [[https://git.kernel.org/linus/2c9839c143bbc8c6612f56351dae8d57111aee37|commit]], packets_per_slave [[https://git.kernel.org/linus/c13ab3ff176eab78b6ee93817484584af5807cf2|commit]], primary [[https://git.kernel.org/linus/0a98a0d12c40f9354b942325045cae123d594341|commit]], resend_igmp [[https://git.kernel.org/linus/d8838de70adc64e20db531333e035aacd5910fca|commit]], updelay [[https://git.kernel.org/linus/25852e29dfc58d249ad0db235996b36c33db6d61|commit]], use_carrier [[https://git.kernel.org/linus/9f53e14e86c46a2300f17309f6308ad0dfbb53ff|commit]], xmit_hash_policy [[https://git.kernel.org/linus/f70161c67231f54f784529d7447ce4386d258b7a|commit]] * bonding: add sysfs /slave dir for bond slave devices. [[https://git.kernel.org/linus/07699f9a7c8d1002e07011d5aa382cd63241eea8|commit]] * bonding: add option lp_interval for loading module [[https://git.kernel.org/linus/3a7129e52766f015f0d4035ac9c7c9408829b9a1|commit]] * cfg80211: Add support for QoS mapping [[https://git.kernel.org/linus/fa9ffc745610f31c6bc136d5a6a1782e00870e72|commit]] * filter: bpf_dbg: add minimal bpf debugger [[https://git.kernel.org/linus/fd981e3c321a7e8661e06fa6077aea89e8228c3a|commit]] = Virtualization = * Add support for Hyper-V reference time counter [[https://git.kernel.org/linus/e984097b553ed2d6551c805223e4057421370f00|commit]] * virtio-net: auto-tune mergeable rx buffer size for improved performance [[https://git.kernel.org/linus/ab7db91705e95ed1bba1304388936fccfa58c992|commit]] * virtio-net: initial rx sysfs support, export mergeable rx buffer size [[https://git.kernel.org/linus/fbf28d78f54016faa7f0b68cf632ac739f2204f7|commit]] * xen/pvh: Support ParaVirtualized Hardware extensions (v3). [[https://git.kernel.org/linus/4e903a20da51ed2329c1b9c182dba74f47ac2ca8|commit]] * xen-netfront: add support for IPv6 offloads [[https://git.kernel.org/linus/2c0057dec90bf65618c5e8f97e9193ff756ee2fb|commit]] * xen/events: Add the hypervisor interface for the FIFO-based event channels [[https://git.kernel.org/linus/bf2bbe07f13846a90d4447521d87566d6f87bc0e|commit]] * xen: balloon: enable for ARM [[https://git.kernel.org/linus/72f28071f14fd9b6cc03aaf83b057d169d817411|commit]] = Security = * Smack: Make the syslog control configurable [[https://git.kernel.org/linus/00f84f3f2e9d088f06722f4351d67f5f577abe22|commit]] * audit * Added exe field to audit core dump signal log [[https://git.kernel.org/linus/ff235f51a138fc61e1a22dcb8b072d9c78c2a8cc|commit]] * Add audit_backlog_wait_time configuration option [[https://git.kernel.org/linus/51cc83f024ee51de9da70c17e01ec6de524f5906|commit]] * Allow unlimited backlog queue [[https://git.kernel.org/linus/40c0775e5ea47667db497565b79a8dc154530992|commit]] * log on errors from filter user rules [[https://git.kernel.org/linus/724e4fcc8d80c63c7e56873b41987533db2a04c2|commit]] * log task info on feature change [[https://git.kernel.org/linus/ad2ac263278620205555a572c29b3ebb4a5bce3b|commit]] = Crypto = * Support for AMD Cryptographic Coprocessor which can be used to accelerate or offload encryption operations such as SHA, AES and more [[https://git.kernel.org/linus/7c1853711fc11df00f20bb6989358f1d3ce0fc04|commit 1]], [[https://git.kernel.org/linus/2b789435d7f36ed918d92db647f3a2f3fec9bb1f|2]], [[https://git.kernel.org/linus/0ab0a1d505ab6f684076b9c5ef9279e29c2b08ae|3]], [[https://git.kernel.org/linus/1d6b8a6f64076aee9e63474c0778a50f95c054ee|4]], [[https://git.kernel.org/linus/63b945091a070d8d4275dc0f7699ba22cd5f9435|5]], [[https://git.kernel.org/linus/d312359978e91fc43889ac0d386ab617215f802a|6]], [[https://git.kernel.org/linus/f114766088f352a47f57307ff927b815e0239644|7]] * mxs - Add Freescale MXS DCP driver [[https://git.kernel.org/linus/15b59e7c3733f90ff1f7dd66ad77ae1c90bcdff5|commit]], remove the old DCP driver [[https://git.kernel.org/linus/c493c04403769d833864ad5be2ff64dee7567ca7|commit]] * aesni: AVX and AVX2 version of AESNI-GCM encode and decode [[https://git.kernel.org/linus/d764593af924930d5c15685bc5946cb943da1a55|commit]] = Tracing/perf = * perf kvm: Introduce option -v for perf kvm command. [[https://git.kernel.org/linus/100b907350c87aa1f3b5dbd95bac3ad5aad3e108|commit]], make perf kvm diff support --guestmount. [[https://git.kernel.org/linus/d8d9608fdd19f85a524db0a41bc2def5c88cbdd0|commit]] * perf probe: Support basic dwarf-based operations on uprobe events [[https://git.kernel.org/linus/fb7345bbf7fad9bf72ef63a19c707970b9685812|commit]] * perf record: add --initial-delay option [[https://git.kernel.org/linus/6619a53ef7572b9eaf7aa71ff7f74c0d06b3817b|commit]], default -t option to no inheritance [[https://git.kernel.org/linus/69e7e5b02bc6a9e5cf4a54911b27ca133cc1f99f|commit]], make per-cpu mmaps the default. [[https://git.kernel.org/linus/3aa5939d71fa22a947808ba9c798b8537c35097a|commit]], rename --initial-delay to --delay [[https://git.kernel.org/linus/a6205a35ba2d56dcfb79b08cc11b8c7d549826aa|commit]], rename --no-delay to --no-buffering [[https://git.kernel.org/linus/509051ea8427b2f73f065a1b0a1ef871727c9cb2|commit]] * perf report: Add --header/--header-only options [[https://git.kernel.org/linus/5cfe2c82f3eb6876cf4b55e99decea0bd015d6b8|commit]] * perf script: add --header/--header-only options [[https://git.kernel.org/linus/e90debddf8f26094cd90162b9af2a8ed37ed57cb|commit]], add an option to print the source line number [[https://git.kernel.org/linus/cc8fae1d81648e85587f5d18b4f93e0b771fb02d|commit]], print callchains and symbols if they exist [[https://git.kernel.org/linus/80b8b496ec6edaff01f9ab74dbe8a517cd718de8|commit]], print comm, fork and exit events also [[https://git.kernel.org/linus/ad7ebb9a48f59bad2714b64725653a73d78b686e|commit]], print mmap events also [[https://git.kernel.org/linus/ba1ddf42f3c3af111d3adee277534f73c1ef6a9b|commit]] * perf timechart: Add --highlight option [[https://git.kernel.org/linus/e57a2dffbc7e28cef5f4659b98a9d5595010ab4d|commit]], add backtrace support [[https://git.kernel.org/linus/6f8d67fa0c6bdca535ecab137c44b095023cc1b4|commit]], add backtrace support to CPU info [[https://git.kernel.org/linus/8b6dcca017aa53fe13066411a653b5997c158a2c|commit]], add option to limit number of tasks [[https://git.kernel.org/linus/54874e3236b834064943c02a647823ab5d97be57|commit]], add support for -P and -T in timechart recording [[https://git.kernel.org/linus/367b3152d72c20d789b07650bd1189ce0fe266b8|commit]], add support for displaying only tasks related data [[https://git.kernel.org/linus/c87097d39dae1c42a5068e00dd3b76a4162ee0fc|commit]], always try to print at least 15 tasks [[https://git.kernel.org/linus/0a8eb275cbdb8462854d5f7e1168d86cee4cc9ea|commit]], group figures and add title with details [[https://git.kernel.org/linus/cbb2e81e5232b1bca5cd2aa1d7a7eb1cd30f8304|commit]], * perf tools: Add 'build-test' make target [[https://git.kernel.org/linus/a7077234d240f16ead29ffeb3cc17ceada50ea5f|commit]], add build and install plugins targets [[https://git.kernel.org/linus/3d7c0144491bd8c21d53b43032274a85efdfe434|commit]], allow '--inherit' as the negation of '--no-inherit' [[https://git.kernel.org/linus/4bc437964ef540462bd15af4a713da62961809aa|commit]] * perf trace: Add support for syscalls vs raw_syscalls [[https://git.kernel.org/linus/9aca7f1792c5d2d5d367bbe5cfe204fe40517929|commit]] * perf ui/tui: Implement header window [[https://git.kernel.org/linus/6dd601354f14b5cd7a0a4103811e52ccec22ac53|commit]] * perf stat: Add event unit and scale support [[https://git.kernel.org/linus/410136f5dd96b6013fe6d1011b523b1c247e1ccb|commit]] = Other news sites that track the changes of this release = * LWN list of changes: [[https://lwn.net/Articles/581657/|part 1]], [[https://lwn.net/Articles/582352/|part 2]], [[https://lwn.net/Articles/583681/|part 3]] * Phoronix: [[http://www.phoronix.com/scan.php?page=news_item&px=MTYzNDg|Recapping The Top Changes Of The Linux 3.14 Kernel]] |
Linux 3.14 has been released on Sun, 30 Mar 2014.
Summary: This release includes the deadline task scheduling policy for real-time tasks, a memory compression mechanism is now considered stable, a port of the locking validator to userspace, ability to store properties such as compression for each inode in Btrfs, trigger support for tracing events, improvements to userspace probing, kernel address space randomization, TCP automatic coalescing of certain kinds of connections, a new network packet scheduler to fight bufferbloat, new drivers and many other small improvements.
Contents
-
Prominent features
- Deadline scheduling class for better real-time scheduling
- zram: Memory compression mechanism considered stable
- Btrfs: inode properties
- Trigger support for tracing events
- Userspace probes access to all arguments
- Userspace locking validator
- Kernel address space randomization
- TCP automatic corking
- Antibufferbloat: "Proportional Integral controller Enhanced" packet scheduler
- Drivers and architectures
- Core
- Memory management
- Block layer
- File systems
- Networking
- Virtualization
- Security
- Crypto
- Tracing/perf
- Other news sites that track the changes of this release
1. Prominent features
1.1. Deadline scheduling class for better real-time scheduling
Operating systems traditionally provide scheduling priorities for processes: The higher priority a process has, the more scheduling time that process it can get with respect other processes with lower priorities. In Linux, users usually set scheduling priorities from a value of -20 to 19 using the nice(2) tool (in addition, Linux supports the notion scheduling classes: each class provides different scheduling policies; for example, there is a SCHED_FIFO class with a "first in, first out" policy, and a SCHED_RR with a round-robin policy).
The approach of process priorities is, however, not well suited for real-time tasks. Evidence Srl and the ReTiS Lab have created an alternative designed around real time concepts: deadline scheduling, implemented as a new scheduling policy, SCHED_DEADLINE.
Deadline scheduling gets away with the notion of process priorities. Instead, processes provide three parameters: runtime, period, and deadline. A SCHED_DEADLINE task is guaranteed to receive "runtime" microseconds of execution time every "period" microseconds, and these "runtime" microseconds are available within "deadline" microseconds from the beginning of the period. The task scheduler uses that information to run the process with the earliest deadline, a behavior closer to the requirements needed by real-time systems. For more details about the scheduling algorithms, read the documentation
Recommended LWN article: Deadline scheduling: coming soon?
Recommended page on Wikipedia: SCHED_DEADLINE
Documentation: Documentation/scheduler/sched-deadline.txt
Code: commit 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13
1.2. zram: Memory compression mechanism considered stable
zram provides RAM block devices. Everything written to these block devices gets compressed. If zram block devices are used as swap, when the system tries to move parts of memory to swap it will be effectively moving memory from one part of the RAM to another, except that the data will be compressed before being copied to the destination. This effectively works as a cheap memory compression mechanism to improve responsiveness in systems with limited amounts of memory. Zram is being used by TV companies, Android 4.4, Cyanogenmod, Chrome OS, Lubuntu...
Zram has been in staging since Linux 2.6.33. In this release, zram has been moved out of staging to drivers/block/zram.
1.3. Btrfs: inode properties
This release adds infrastructure in Btrfsto attach name/value pairs to inodes as xattrs. The purpose of these pairs is to store properties for inodes, such as compression. These properties can be inherited, this means when a directory inode has inheritable properties set, these are added to new inodes created under that directory. Subvolumes can also have properties associated with them, and they can be inherited from their parent subvolume. This release adds one specific property implementation, named "compression", whose values can be "lzo" or "zlib" and it's an inheritable property.
Code: commit
1.4. Trigger support for tracing events
The tracing infastructure in the Linux kernel allows to easily register probe functions as events (for more details, see Documentation/trace/events.txt. This release allows these events to conditionally trigger "commands". These commands can take various forms, examples would be enabling or disabling other trace events or invoking a stack trace whenever the trace event is hit. Any given trigger can additionally have an event filter, the command will only be invoked if the event being invoked passes the associated filter.
For example, the following trigger dumps a stacktrace the first 5 times a kmalloc request happens with a size >= 64K: {{{# echo 'stacktrace:5 if bytes_req >= 65536' > \
- /sys/kernel/debug/tracing/events/kmem/kmalloc/trigger}}}
For more details, see Section 6 in Documentation/trace/events.txt
Recommended LWN article: Triggers for tracing
Code: commit 1, 2, 3, 4,5, 6, 7
1.5. Userspace probes access to all arguments
Userspace probes are a Linux 3.5 feature that allows to set tracing probes in userspace programs at runtime. This release enables to fetch other types of argument for the uprobes: memory, stack, deference, bitfield, retval and file offset. For more details see here.
1.6. Userspace locking validator
The Linux kernel has (since 2.6.18) a lock validator that can find locking issues at runtime. This release makes possible to run the Linux locking validator in userspace, making possible to debug locking issues in userspace programs. For more details, see the recommended LWN link.
Recommended LWN article: User-space lockdep
Code: commit 1, 2, 3, 4, 5, 6, 7
1.7. Kernel address space randomization
This release allows to randomize the physical and virtual address at which the kernel image is decompressed, as a security feature that deters exploit attempts relying on knowledge of the location of kernel internals.
Recommended LWN article: Kernel address space layout randomization
Code: 1, 2, 3, 4, 5, 6, 7, 8, 9
1.8. TCP automatic corking
When applications do consecutive small write()/sendmsg() system calls, the Linux kernel will try to coalesce these small writes as much as possible, to lower total amount of sent packets - this feature is called "automatic corking". Automatic corking is done if at least one prior packet for the flow is waiting in Qdisc queues or device transmit queue. Applications can still use TCP_CORK for optimal behavior when they know how/when to uncork their sockets. A new sysctl (/proc/sys/net/ipv4/tcp_autocorking) has been added to control this feature, which defaults to enabled. For benchmarks and more details see the commit link.
Code: commit
1.9. Antibufferbloat: "Proportional Integral controller Enhanced" packet scheduler
Bufferbloat is a phenomenon where excess buffers in the network cause high latency and jitter. As more and more interactive applications (e.g. voice over IP, real-time video streaming and financial transactions) run in the Internet, high latency and jitter degrade application performance. There has been a number of features and improvements in the Linux kernel network stack that try to address this problem.
This release adds a new network packet scheduler: PIE(Proportional Integral controller Enhanced) that can effectively control the average queueing latency to a target value. Simulation results, theoretical analysis and Linux testbed results have shown that PIE can ensure low latency and achieve high link utilization under various congestion situations. The design incurs very small overhead. For more information, please see technical paper about PIE in the IEEE Conference on High Performance Switching and Routing 2013. Also you can refer to the IETF draft submission. All relevant code, documents and test scripts and results can be found at ftp://ftpeng.cisco.com/pie/.
Code: commit
2. Drivers and architectures
All the driver and architecture-specific changes can be found in the Linux_3.14-DriversArch page
3. Core
Tool for suspend/resume performance analysis and optimization commit
futexes: Increase hash table size for better performance commit
IPC queues: remove limits for the amount of system-wide queues that were added in 93e6f119c0ce commit
kexec: add sysctl to disable future kexec usage commit
lib: introduce arch optimized hash library commit
locking: Optimize lock_bh functions commit
scheduler: Drop sysctl_numa_balancing_settle_count sysctl commit
scheduler: add tracepoints related to NUMA task migration commit
stackprotector: Introduce CONFIG_CC_STACKPROTECTOR_STRONG commit
swap: add a simple detector for inappropriate swapin readahead commit
sysfs, kernfs: add skeletons for kernfs commit
rcutorture: Add --bootargs argument to specify additional boot arguments commit, add --buildonly dry-run capability commit, add --kmake-arg argument to kvm.sh commit, add --no-initrd argument to kvm.sh commit, add --qemu-args argument to kvm.sh commit, add KVM-based test framework commit, add SRCU Kconfig-fragment files commit, add datestamp argument to kvm.sh commit, add per-Kconfig fragment boot parameters commit, add per-version default Kconfig fragments and module parameters commit, add v3.12 version, which adds sysidle testing commit, eliminate --rcu-kvm argument commit, eliminate configdir argument from kvm-recheck.sh script commit, remove decorative qemu argument commit
4. Memory management
/proc/meminfo: provide estimated available memory commit
Add overcommit_kbytes sysctl variable, it allows a more finer grain configuration than overcommit_ratio in machines with lots of memory commit
Document improved handling of swappiness==0 (implemented long time ago) commit
5. Block layer
Immutable bio vecs commit
rbd: add support for single-major device number allocation scheme commit, enable extended devt in single-major mode commit
- Device Manager
6. File systems
- Btrfs
Incompatible format change to remove hole extents commit
Add a few mount options so that features can be changed on remounts: "barrier" commit, "datacow" commit, "datasum" commit, "noautodefrag" commit, "nodiscard" commit, "noenospc_debug" commit, "noflushoncommit" commit, "noinode_cache" commit, "treelog" commit
Publish btrfs internal information in sysfs, some of the features can be changed commit 1, 2, 3, 4, 5, 6, 7, 8
Add ioctls to query/change feature bits online commit
Performance improvements: Various performance improvements, see each commit for details commit, commit, commit, commit, commit, commit, commit, commit, commit, commit, commit, commit
Add ioctl to export size of global metadata reservation, for better btrfs df reporting commit
- f2fs
hfsplus: add HFSX subfolder count support commit
exofs: Allow O_DIRECT open commit
ext4: enable punch hole for bigalloc commit
XFS: Allow logical-sector sized O_DIRECT commit
9P: Introduction of a new cache=mmap model. commit
7. Networking
ipv6 addrconf: add IFA_F_NOPREFIXROUTE flag to suppress creation of IP6 routes commit
ipv6: enable anycast addresses as source addresses for datagrams commit
ipv6: router reachability probing commit
ipv6: send Change Status Report after DAD is completed commit
ipv6: support IPV6_PMTU_INTERFACE on sockets commit
- ipv6: add the option to use anycast addresses as source addresses in echo reply
- mac80211
macvtap: Add support of packet capture on macvtap device. commit
net-gre-gro: Add GRE support to the GRO stack commit
net-sysfs: add support for device-specific rx queue sysfs attributes commit
Add GRO support for UDP encapsulating protocols commit
Add GRO support for vxlan traffic commit
Add NETDEV_PRECHANGEMTU to notify before mtu change happens commit
if_arp: add ARPHRD_6LOWPAN type commit
net_tstamp: Add SIOCGHWTSTAMP ioctl to match SIOCSHWTSTAMP commit
netconf: add proxy-arp support commit, add support for IPv6 proxy_ndp commit
- netfilter
Add IPv4/6 IPComp extension match support commit
Introduce l2tp match extension commit
nf_nat: add full port randomization support commit
nf_tables: add "inet" table for IPv4/IPv6 commit
nf_tables: add nfproto support to meta expression commit
nf_tables: add support for multi family tables commit
nfnetlink_queue: enable UID/GID socket info retrieval commit
nft: add queue module commit
nft_ct: Add support to set the connmark commit
nft_meta: add l4proto support commit
nft_reject: support for IPv6 and TCP reset commit
numa: add a sysctl for numa_balancing commit
openvswitch: Allow user space to announce ability to accept unaligned Netlink messages commit, enable memory mapped Netlink i/o commit
packet: improve socket create/bind latency in some cases commit, introduce PACKET_QDISC_BYPASS socket option commit, use percpu mmap tx frame pending refcount commit
tcp: metrics: New netlink attribute for src IP and dumped in netlink reply commit
sunrpc: add an "info" file for the dummy gssd pipe commit
tun: Add support for RFS on tun flows commit
pktgen, xfrm: Add statistics counting when transforming commit
rtnetlink: provide api for getting and setting slave info commit
IB: Add flow steering support for IPoIB UD traffic commit, ethernet L2 attributes in verbs/cm structures commit
NFC: NCI: Add set_config API commit
af_packet: Add Queue mapping mode to af_packet fanout operation commit
batman-adv: add bonding again commit
bonding: add netlink attribute support: ad_info commit, ad_select commit, all_slaves_active commit, arp_all_targets commit, arp_interval commit, arp_ip_target commit, add arp_validate commit, downdelay commit, fail_over_mac commit, lacp_rate commit, lp_interval commit, miimon commit, min_links commit, num_grat_arp commit, packets_per_slave commit, primary commit, resend_igmp commit, updelay commit, use_carrier commit, xmit_hash_policy commit
bonding: add sysfs /slave dir for bond slave devices. commit
bonding: add option lp_interval for loading module commit
cfg80211: Add support for QoS mapping commit
filter: bpf_dbg: add minimal bpf debugger commit
8. Virtualization
Add support for Hyper-V reference time counter commit
virtio-net: auto-tune mergeable rx buffer size for improved performance commit
virtio-net: initial rx sysfs support, export mergeable rx buffer size commit
xen/pvh: Support ParaVirtualized Hardware extensions (v3). commit
xen-netfront: add support for IPv6 offloads commit
xen/events: Add the hypervisor interface for the FIFO-based event channels commit
xen: balloon: enable for ARM commit
9. Security
Smack: Make the syslog control configurable commit
- audit
10. Crypto
Support for AMD Cryptographic Coprocessor which can be used to accelerate or offload encryption operations such as SHA, AES and more commit 1, 2, 3, 4, 5, 6, 7
mxs - Add Freescale MXS DCP driver commit, remove the old DCP driver commit
aesni: AVX and AVX2 version of AESNI-GCM encode and decode commit
11. Tracing/perf
perf kvm: Introduce option -v for perf kvm command. commit, make perf kvm diff support --guestmount. commit
perf probe: Support basic dwarf-based operations on uprobe events commit
perf record: add --initial-delay option commit, default -t option to no inheritance commit, make per-cpu mmaps the default. commit, rename --initial-delay to --delay commit, rename --no-delay to --no-buffering commit
perf report: Add --header/--header-only options commit
perf script: add --header/--header-only options commit, add an option to print the source line number commit, print callchains and symbols if they exist commit, print comm, fork and exit events also commit, print mmap events also commit
perf timechart: Add --highlight option commit, add backtrace support commit, add backtrace support to CPU info commit, add option to limit number of tasks commit, add support for -P and -T in timechart recording commit, add support for displaying only tasks related data commit, always try to print at least 15 tasks commit, group figures and add title with details commit,
perf tools: Add 'build-test' make target commit, add build and install plugins targets commit, allow '--inherit' as the negation of '--no-inherit' commit
perf trace: Add support for syscalls vs raw_syscalls commit
perf ui/tui: Implement header window commit
perf stat: Add event unit and scale support commit