11467
Comment: SCHED_DEADLINE has not been implemented by people behind PREEMP_RT !!
|
13084
|
Deletions are marked like this. | Additions are marked like this. |
Line 37: | Line 37: |
Code: [http://git.kernel.org/linus/cd67e10ac6997c6d1e1504e3c111b693bfdbc148 commit] | Code: [http://git.kernel.org/linus/cd67e10ac6997c6d1e1504e3c111b693bfdbc148 commit], [http://git.kernel.org/linus/1b945aeef0b9cb5e98d682c310272b08198e54b5 commit], [http://git.kernel.org/linus/bcf1647d0899666f0fb90d176abf63bae22abb7c commit] == Btrfs: inode properties == This release adds infrastructure to 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. |
Line 89: | Line 93: |
= 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 = = Memory management = = Block layer = * Device Manager * dm cache policy mq: introduce three promotion threshold tunables [http://git.kernel.org/linus/78e03d69733c48312ae81fe4ac0790dbea412b9d commit] * dm cache: add block sizes and total cache blocks to status output [http://git.kernel.org/linus/6a388618f120cdc70cd6b6dbcab5f7a4aff500f6 commit] * dm cache: add policy name to status output [http://git.kernel.org/linus/2e68c4e6caad9fdadc1cef8b6cb9569192e8a42b commit] = File systems = * Btrfs = Networking = = Virtualization = = Security = = Tracing/perf = = Other news sites that track the changes of this release = |
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]
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. [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 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?]
Recommended page on Wikipedia: [http://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: [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]
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, 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], [http://git.kernel.org/linus/1b945aeef0b9cb5e98d682c310272b08198e54b5 commit], [http://git.kernel.org/linus/bcf1647d0899666f0fb90d176abf63bae22abb7c commit]
1.3. Btrfs: inode properties
This release adds infrastructure to 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.
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 [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.
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 [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]
1.5. Userspace probes access to all arguments
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: [http://git.kernel.org/linus/b7e0bf341f6cfa92ae0a0e3d0c3496729595e1e9 commit 1], [http://git.kernel.org/linus/b079d374fd84637aba4b825a329e794990b7b486 2], [http://git.kernel.org/linus/306cfe2025adcba10fb883ad0c540f5541d1b086 3]
1.6. Userspace locking validator
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]
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: [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]
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 [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]
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 [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 [http://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: [http://git.kernel.org/linus/d4b36210c2e6ecef0ce52fb6c18c51144f5c2d88 commit]
2. 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]
3. Core
4. Memory management
5. Block layer
- Device Manager
dm cache policy mq: introduce three promotion threshold tunables [http://git.kernel.org/linus/78e03d69733c48312ae81fe4ac0790dbea412b9d commit]
dm cache: add block sizes and total cache blocks to status output [http://git.kernel.org/linus/6a388618f120cdc70cd6b6dbcab5f7a4aff500f6 commit]
dm cache: add policy name to status output [http://git.kernel.org/linus/2e68c4e6caad9fdadc1cef8b6cb9569192e8a42b commit]
6. File systems
- Btrfs
7. Networking
8. Virtualization
9. Security
10. Tracing/perf