13941
Comment: Fixes only
|
← Revision 23 as of 2017-12-30 01:30:13 ⇥
32497
converted to 1.6 markup
|
Deletions are marked like this. | Additions are marked like this. |
Line 5: | Line 5: |
Linux 3.10 [https://lkml.org/lkml/2013/6/30/75 has been released]. '''Summary''': This release adds support for bcache, which allows to use SSD devices to cache data from other block devices; a Btrfs format improvement that makes the tree dedicated to store extent information 30-35% smaller; support for XFS metadata checksums and self-describing metadata, timer free multitasking for applications running alone in a CPU, SysV IPC and rwlock scalability improvements, the TCP Tail loss probe algorithm that reduces tail latency of short transactions, KVM virtualization support in the MIPS architecture, many new drivers and small improvements. [[TableOfContents()]] |
Linux 3.10 [[https://lkml.org/lkml/2013/6/30/75|has been released]] on Sun, 30 Jun 2013. '''Summary''': This release adds support for bcache, which allows to use SSD devices to cache data from other block devices; a Btrfs format improvement that makes the tree dedicated to store extent information 30-35% smaller; support for XFS metadata checksums and self-describing metadata, timerless multitasking, SysV IPC, rwlock and mutex scalability improvements, a TCP Tail loss probe algorithm that reduces tail latency of short transactions, KVM virtualization support in the MIPS architecture, support for the ARM big.LITTLE architecture that mixes CPUs of different types, tracing snapshots, new drivers and many small improvements. <<TableOfContents>> |
Line 12: | Line 12: |
== Timer free multitasking == | == Timerless multitasking == |
Line 16: | Line 16: |
But preemptive multitasking had some side effects in modern hardware. CPUs of laptops and mobile devices require inactivity to enter in low power modes. Preemptive multitasking fires the the timer often, 1000 times per second in a typical Linux kernel, even when the system is not doing anything, so the CPUs could not save as much power as it was possible. Virtualization created more problems, since each Linux VM runs its own timer.[http://kernelnewbies.org/Linux_2_6_21#head-8547911895fda9cdff32a94771c8f5706d66bba0 In 2.6.21, released in April 2007, Linux partially solved this]: the timer would fire off 1000 times per second as always when the system is running tasks, but it would stop completely the timer when the system is idle. But this is not enough. There are single task workloads like scientific number crunching or users of the real-time pachset whose performance or latency is hurt because they need to be temporally paused 1000 times per second for no reason. | But preemptive multitasking had some side effects in modern hardware. CPUs of laptops and mobile devices require inactivity to enter in low power modes. Preemptive multitasking fires the the timer often, 1000 times per second in a typical Linux kernel, even when the system is not doing anything, so the CPUs could not save as much power as it was possible. Virtualization created more problems, since each Linux VM runs its own timer.[[http://kernelnewbies.org/Linux_2_6_21#head-8547911895fda9cdff32a94771c8f5706d66bba0|In 2.6.21, released in April 2007, Linux partially solved this]]: the timer would fire off 1000 times per second as always when the system is running tasks, but it would stop completely the timer when the system is idle. But this is not enough. There are single task workloads like scientific number crunching or users of the real-time pachset whose performance or latency is hurt because they need to be temporally paused 1000 times per second for no reason. |
Line 20: | Line 20: |
For more details and future plans, it's strongly recommended to read this LWN article: '[https://lwn.net/Articles/549580/ (Nearly) full tickless operation in 3.10]' and the [http://git.kernel.org/linus/0c87f9b5ca5bdda1a868b0d7df4bec92e41a468d Documentation]. Code: [https://git.kernel.org/linus/534c97b0950b1967bca1c753aeaed32f5db40264 (merge commit)] |
For more details and future plans, it's strongly recommended to read this LWN article: '[[https://lwn.net/Articles/549580/|(Nearly) full tickless operation in 3.10]]' and the [[http://git.kernel.org/linus/0c87f9b5ca5bdda1a868b0d7df4bec92e41a468d|Documentation]]. Code: [[https://git.kernel.org/linus/534c97b0950b1967bca1c753aeaed32f5db40264|(merge commit)]] |
Line 29: | Line 29: |
For more details read the [https://git.kernel.org/cgit/linux/kernel/git/torvalds/linux.git/tree/Documentation/bcache.txt documentation] or visit the [http://bcache.evilpiepirate.org/ wiki] Recommended LWN article: [https://lwn.net/Articles/497024/ A bcache update] Code: [http://git.kernel.org/linus/cafe563591446cf80bfbc2fe3bc72a2e36cf1060 (commit)] == Btrfs: smaller extents == |
For more details read the [[https://git.kernel.org/cgit/linux/kernel/git/torvalds/linux.git/tree/Documentation/bcache.txt|documentation]] or visit the [[http://bcache.evilpiepirate.org/|wiki]] Recommended LWN article: [[https://lwn.net/Articles/497024/|A bcache update]] Code: [[http://git.kernel.org/linus/cafe563591446cf80bfbc2fe3bc72a2e36cf1060|(commit)]] == Btrfs: smaller, more space-efficient extent tree == |
Line 42: | Line 42: |
Code: [http://git.kernel.org/linus/3173a18f70554fe7880bb2d85c7da566e364eb3c (commit)] | Code: [[http://git.kernel.org/linus/3173a18f70554fe7880bb2d85c7da566e364eb3c|(commit)]] |
Line 49: | Line 49: |
This feature is experimental and requires using experimental xfsprogs. For more information, you can read the self-describing metadata [http://git.kernel.org/linus/dccc3f447a5e065a1c4406aede72d160ae38a736 Documentation]. Code: [https://git.kernel.org/linus/c8d8566952fda026966784a62f324c8352f77430 (merge commit)] |
This feature is experimental and requires using experimental xfsprogs. For more information, you can read the self-describing metadata [[http://git.kernel.org/linus/dccc3f447a5e065a1c4406aede72d160ae38a736|Documentation]]. Code: [[https://git.kernel.org/linus/c8d8566952fda026966784a62f324c8352f77430|(merge commit)]] |
Line 57: | Line 57: |
Code: [https://git.kernel.org/linus/823e75f723aa3fefd5d2eecbf8636184ca4790fc (merge commit)],[https://git.kernel.org/linus/16df3674efe39f3ab63e7052f1244dd3d50e7f84 (commit 1], [https://git.kernel.org/linus/6062a8dc0517bce23e3c2f7d2fea5e22411269a3 2], [https://git.kernel.org/linus/9f1bc2c9022c1d4944c4a1a44c2f365487420aca 3], [https://git.kernel.org/linus/c460b662d5cae467f1c341c59b02a5c5e68fed0b 4], [https://git.kernel.org/linus/444d0f621b64716f7868dcbde448e0c66ece4e61 5], [https://git.kernel.org/linus/4d2bff5eb86e8d7b4a20934cccb93bdeebed3558 6], [https://git.kernel.org/linus/7bb4deff61bdab3338534841cb6d0508314a41d6 7] | Code: [[https://git.kernel.org/linus/823e75f723aa3fefd5d2eecbf8636184ca4790fc|(merge commit)]],[[https://git.kernel.org/linus/16df3674efe39f3ab63e7052f1244dd3d50e7f84|(commit 1]], [[https://git.kernel.org/linus/6062a8dc0517bce23e3c2f7d2fea5e22411269a3|2]], [[https://git.kernel.org/linus/9f1bc2c9022c1d4944c4a1a44c2f365487420aca|3]], [[https://git.kernel.org/linus/c460b662d5cae467f1c341c59b02a5c5e68fed0b|4]], [[https://git.kernel.org/linus/444d0f621b64716f7868dcbde448e0c66ece4e61|5]], [[https://git.kernel.org/linus/4d2bff5eb86e8d7b4a20934cccb93bdeebed3558|6]], [[https://git.kernel.org/linus/7bb4deff61bdab3338534841cb6d0508314a41d6|7]] |
Line 61: | Line 61: |
The rwsem ("read-writer semaphore") locking scheme, used in many places in the Linux kernel, had [https://lkml.org/lkml/2013/1/29/84 performance problems] because of strict, serialized, FIFO sequential write-ownership of the semaphore. In [http://kernelnewbies.org/Linux_3.9#head-8c93f0925010a379572a8e544adad642fe0c5009 Linux 3.9], an "opportunistic lock stealing" patch was merged to fix it, but only in the slow path. | The rwsem ("read-writer semaphore") locking scheme, used in many places in the Linux kernel, had [[https://lkml.org/lkml/2013/1/29/84|performance problems]] because of strict, serialized, FIFO sequential write-ownership of the semaphore. In [[http://kernelnewbies.org/Linux_3.9#head-8c93f0925010a379572a8e544adad642fe0c5009|Linux 3.9]], an "opportunistic lock stealing" patch was merged to fix it, but only in the slow path. |
Line 65: | Line 65: |
Code: [https://git.kernel.org/linus/c8de2fa4dc2778ae3605925c127b3deac54b2b3a (merge commit)] |
Code: [[https://git.kernel.org/linus/c8de2fa4dc2778ae3605925c127b3deac54b2b3a|(merge commit)]] == mutex locking scalability improvements == The mutex locking scheme, used widely in the Linux kernel, has been improved with some scalability improvements due to the use of less atomic operations and some queuing changes that reduce reduce cacheline contention. For details, see the commit links. Code: [[http://git.kernel.org/linus/0dc8c730c98a06a4d927f8d08bd0dd6de973b8dd|(commit)]], [[http://git.kernel.org/linus/2bd2c92cf07cc4a373bf316c75b78ac465fefd35|(commit)]] |
Line 70: | Line 75: |
This release adds the [http://tools.ietf.org/html/draft-dukkipati-tcpm-tcp-loss-probe-01 TCP Tail loss probe algorithm]. Its goal is to reduce tail latency of short transactions. It achieves this by converting retransmission timeouts (RTOs) occuring due to tail losses (losses at end of transactions) into fast recovery. TLP transmits one packet in two round-trips when a connection is in Open state and isn't receiving any ACKs. The transmitted packet, aka loss probe, can be either new or a retransmission. When there is tail loss, the ACK from a loss probe triggers FACK/early-retransmit based fast recovery, thus avoiding a costly retransmission timeout. Code: [http://git.kernel.org/linus/6ba8a3b19e764b6a65e4030ab0999be50c291e6c (commit 1], [http://git.kernel.org/linus/9b717a8d245075ffb8e95a2dfb4ee97ce4747457 2)] |
This release adds the [[http://tools.ietf.org/html/draft-dukkipati-tcpm-tcp-loss-probe-01|TCP Tail loss probe algorithm]]. Its goal is to reduce tail latency of short transactions. It achieves this by converting retransmission timeouts (RTOs) occuring due to tail losses (losses at end of transactions) into fast recovery. TLP transmits one packet in two round-trips when a connection is in Open state and isn't receiving any ACKs. The transmitted packet, aka loss probe, can be either new or a retransmission. When there is tail loss, the ACK from a loss probe triggers FACK/early-retransmit based fast recovery, thus avoiding a costly retransmission timeout. Code: [[http://git.kernel.org/linus/6ba8a3b19e764b6a65e4030ab0999be50c291e6c|(commit 1]], [[http://git.kernel.org/linus/9b717a8d245075ffb8e95a2dfb4ee97ce4747457|2)]] == ARM big.LITTLE support == The ARM big.LITTLE architecture is a ARM SMP solution where, according [[https://lwn.net/Articles/481055/|to this LWN Article]], "instead of having a bunch of identical CPU cores put together in a system, the big.LITTLE architecture is effectively pushing the concept further by pulling two different SMP systems together: one being a set of "big" and fast processors, the other one consisting of "little" and power-efficient processors." Recommended LWN article: [[https://lwn.net/Articles/539082/|Multi-cluster power management]] Product site: http://www.arm.com/products/processors/technologies/bigLITTLEprocessing.php Code: [[http://git.kernel.org/linus/8a67f0ef2b684b34162d39e8f436fe39e9635a19|(commit)]] |
Line 76: | Line 91: |
Another Linux architecture has added support for KVM; in this case MIPS. KVM/MIPS should support MIPS32R2 and beyond. For more details, see the [https://git.kernel.org/cgit/linux/kernel/git/torvalds/linux.git/tree/arch/mips/kvm/00README.txt?id=03a0331c8c715c73d877aba8c542a60b13f70ed0 release notes]. Code: [http://git.kernel.org/linus/03a0331c8c715c73d877aba8c542a60b13f70ed0 (commit)] ---- /!\ '''Edit conflict - other version:''' ---- ---- /!\ '''Edit conflict - your version:''' ---- /!\ /!\ This document is incomplete and will be finished in the next 24 hours /!\ /!\ ---- /!\ '''End of edit conflict''' ---- |
Another Linux architecture has added support for KVM; in this case MIPS. KVM/MIPS should support MIPS32R2 and beyond. For more details, see the [[https://git.kernel.org/cgit/linux/kernel/git/torvalds/linux.git/tree/arch/mips/kvm/00README.txt?id=03a0331c8c715c73d877aba8c542a60b13f70ed0|release notes]]. Code: [[http://git.kernel.org/linus/03a0331c8c715c73d877aba8c542a60b13f70ed0|(commit)]] == tracing: tracing snapshots, stack tracing == The tracing framework has got the ability to allow several tracing buffers, which can be used to take snapshots of the main tracing buffer. These tracing snapshots can be triggered manually or with function probes. It's also possible to cause a stack trace to be traced in the ring buffer when a given function is called. Code: [[http://git.kernel.org/linus/277ba04461c2746cf935353474c0961161951b68|(commit 1]], [[http://git.kernel.org/linus/0b85ffc293044393623059eda9904a7d5b644e36|2]], [[http://git.kernel.org/linus/ce9bae55972b228cf7bac34350c4d2caf8ea0d0b|3]], [[http://git.kernel.org/linus/55034cd6e648155393b0d665eef76b38d49ad6bf|4]], [[http://git.kernel.org/linus/77fd5c15e3216b901be69047ca43b05ae9099951|5]], [[http://git.kernel.org/linus/dd42cd3ea96d687f15525c4f14fa582702db223f|6)]] |
Line 90: | Line 103: |
All the driver and architecture-specific changes can be found in the [http://kernelnewbies.org/Linux_3.10-DriversArch Linux_3.10-DriversArch page] | All the driver and architecture-specific changes can be found in the [[http://kernelnewbies.org/Linux_3.10-DriversArch|Linux_3.10-DriversArch page]] |
Line 93: | Line 106: |
= CPU scheduler = |
* Asynchronous I/O scalability improvements "Performance wise, the end result of this patch series is that submitting a kiocb writes to _no_ shared cachelines - the penalty for sharing an ioctx is gone there [[https://git.kernel.org/cgit/linux/kernel/git/torvalds/linux.git/commit/?id=697f4d68cfd10d10731f6fa98f59488b29c1729d|(commit)]] * Make VT switching to the suspend console optional [[http://git.kernel.org/linus/f43f627d2f17e95c78647eeddf968d12f5c286b1|(commit)]] * posix-timers: Introduce /proc/PID/timers file to get info about what posix timers are configured by processes [[http://git.kernel.org/linus/48f6a7a511ef8823fdff39afee0320092d43a8a0|(commit)]] * kconfig: implement KCONFIG_PROBABILITY for randconfig [[http://git.kernel.org/linus/e43956e607692f9b1c710311e4a6591ffba1edf0|(commit)]] * modpost: add -T option to read module names from file/stdin. [[http://git.kernel.org/linus/712f9b46843d941347e86dcd2e1d63f9d3b112cb|(commit)]] * lib/int_sqrt.c: optimize square root algorithm [[http://git.kernel.org/linus/30493cc9dddb68066dcc4878015660fdaa8e0965|(commit)]] * device control group: propagate local changes down the hierarchy [[http://git.kernel.org/linus/bd2953ebbb533aeda9b86c82a53d5197a9a38f1b|(commit)]] * Add uid and gid to devtmpfs [[http://git.kernel.org/linus/3c2670e6515cf584810f417db9b00992c8b2d75a|(commit)]] * Introduce a dummy IRQ handler driver. This module accepts a single 'irq' parameter, which it should register for. The sole purpose of this module is to help with debugging [[http://git.kernel.org/linus/54f69b92f037f4ff5779e5645ab714dee5b59095|(commit)]] * control groups: introduce sane_behavior mount option [[http://git.kernel.org/linus/873fe09ea5df6ccf6bb34811d8c9992aacb67598|(commit)]] * ptrace: add ability to retrieve signals without removing from a queue [[http://git.kernel.org/linus/84c751bd4aebbaae995fe32279d3dba48327bad4|(commit)]] * cpufreq: Implement per policy instances of governors [[http://git.kernel.org/linus/4d5dcc4211f9def4281eafb54b8ed483862e8135|(commit)]] '' Workqueues '' * Implement sysfs interface for workqueues in /sys/bus/workqueue/devices/WQ_NAME. There currently are two attributes common to both per-cpu and unbound pools and extra attributes for unbound pools including nice level and cpumask [[http://git.kernel.org/linus/226223ab3c4118ddd10688cc2c131135848371ab|(commit)]] * Implement NUMA affinity for unbound workqueues [[http://git.kernel.org/linus/4c16bd327c74d6678858706211a0c6e4e53eb3e6|(commit)]] '' fuse '' * Add support of async IO [[http://git.kernel.org/linus/01e9d11a3e79035ca5cd89b035435acd4ba61ee1|(commit)]], [[http://git.kernel.org/linus/bcba24ccdc82f7415154cf87226c2577cea13a5c|(commit)]] * Optimize short direct reads [[http://git.kernel.org/linus/439ee5f0c5080d4fd15fda0c5bbee1fb3a57894e|(commit)]] |
Line 97: | Line 127: |
* Limit the growth of the memory reserved for other user processes to min(3% current process size, user_reserve_pages) in the OVERCOMMIT_NEVER mode. For more details, see the commit links [[http://git.kernel.org/linus/c9b1d0981fcce3d9976d7b7a56e4e0503bc610dd|(commit)]], [[http://git.kernel.org/linus/4eeab4f5580d11bffedc697684b91b0bca0d5009|(commit)]] '' Memory control group '' * Add memory.pressure_level events [[http://git.kernel.org/linus/70ddf637eebe47e61fb2be08a59315581b6d2f38|(commit)]] * Add rss_huge stat to memory.stat [[http://git.kernel.org/linus/b070e65c0bb58d90fa1ac693dc85e239a6b16872|(commit)]] = Block layer = * Expose the block layer bdi_wq workqueue to userland. It appears under /sys/bus/workqueue/devices/writeback/ and allows adjusting maximum concurrency level, cpumask and nice level [[http://git.kernel.org/linus/b5c872ddb7083c7909fb76a170c3807e04564bb3|(commit)]] * Implement runtime power management [[http://git.kernel.org/linus/c8158819d506a8aedeca53c52dfb709a0aabe011|(commit)]] * md: Allow devices to be re-added to a read-only array. [[http://git.kernel.org/linus/7ceb17e87bde79d285a8b988cfed9eaeebe60b86|(commit)]] |
|
Line 100: | Line 141: |
* Introduce reserved space [[http://git.kernel.org/linus/27dd43854227bb0e6ab70129bd21b60d396db2e7|(commit)]] * Implementation of a new ioctl called EXT4_IOC_SWAP_BOOT [[http://git.kernel.org/linus/393d1d1d76933886d5e1ce603214c9987589c6d5|(commit)]] * Reserve xattr index for Rich ACL support [[http://git.kernel.org/linus/fd03d8daf417fffbcb27fdb30d60f6c81ed813c8|(commit)]] ''XFS'' * add quota-driven speculative preallocation throttling [[http://git.kernel.org/linus/76a4202a388690e664668c4f668ee12d709100b3|(commit)]] * increase prealloc size to double that of the previous extent [[http://git.kernel.org/linus/e114b5fce6befb8fa345d7cf1a4de8ce5a211910|(commit)]] * introduce CONFIG_XFS_WARN [[http://git.kernel.org/linus/742ae1e35b038ed65ddd86182723441ea74db765|(commit)]] * xfs_dquot prealloc throttling watermarks and low free space [[http://git.kernel.org/linus/b136645116e5471cf0b037a1759dc83620236631|(commit)]] |
|
Line 102: | Line 154: |
* Rescan for qgroups [http://git.kernel.org/linus/2f2320360b0c35b86938bfc561124474f0dac6e4 (commit)] * Automatic rescan after "quota enable" command [http://git.kernel.org/linus/3d7b5a2882133a04716903b1f4878a64c6610842 (commit)] * Create the subvolume qgroup automatically when enabling quota [http://git.kernel.org/linus/7708f029dca5f1b9e9d6ea01ab10cd83e4c74ff2 (commit)] * Deprecate subvolrootid mount option (obsoleted by subvol) [http://git.kernel.org/linus/5e2a4b25da232a2f4ce264a4b2ae113d0b2a799c (commit)] |
* Rescan for qgroups [[http://git.kernel.org/linus/2f2320360b0c35b86938bfc561124474f0dac6e4|(commit)]] * Automatic rescan after "quota enable" command [[http://git.kernel.org/linus/3d7b5a2882133a04716903b1f4878a64c6610842|(commit)]] * Create the subvolume qgroup automatically when enabling quota [[http://git.kernel.org/linus/7708f029dca5f1b9e9d6ea01ab10cd83e4c74ff2|(commit)]] * Deprecate subvolrootid mount option (obsoleted by subvol) [[http://git.kernel.org/linus/5e2a4b25da232a2f4ce264a4b2ae113d0b2a799c|(commit)]] '' F2FS '' * Introduce readahead mode of node pages [[http://git.kernel.org/linus/266e97a81cf73d1a0dac5f68391da382630a80b7|(commit)]] '' NFS '' * NFSv4.1: Enable open-by-filehandle [[http://git.kernel.org/linus/49f9a0fafd844c32f2abada047c0b9a5ba0d6255|(commit)]] |
Line 110: | Line 166: |
= Block = |
* netlink: Add support for memory mapped netlink I/O [[http://git.kernel.org/linus/5683264c3981047aa93eebabcdbb81676018a7c9|(commit 1]], [[http://git.kernel.org/linus/cd1df525da59c64244d27b4548ff5d132489488a|2]], [[http://git.kernel.org/linus/9652e931e73be7e54a9c40e9bcd4bbdafe92a406|3]] ,[[http://git.kernel.org/linus/cf0a018ac669955c10e4fca24fa55dde58434e9a|4]], [[http://git.kernel.org/linus/1298ca4671acb10310baa550ed044c553e3a3387|5]], [[http://git.kernel.org/linus/5fd96123ee19b96be7d7b57fd42227e1a146ef05|6]], [[http://git.kernel.org/linus/ccdfcc398594ddf3f77348c5a10938dbe9efefbe|7]], [[http://git.kernel.org/linus/3ab1f683bf8be7aa7869cc3ffb8d1db2ec8c8307|8)]] * per hash bucket locking for the frag queue hash. This removes two write locks, and the only remaining write lock is for protecting hash rebuild. This essentially reduce the readers-writer lock to a rebuild lock [[http://git.kernel.org/linus/19952cc4f8f572493293a8caed27c4be89c5fc9d|(commit)]], [[http://git.kernel.org/linus/a4c4009f4f54dabaaea1bb2b2c3c8930e93cd409|(commit)]] * IPv6: implement RFC3168 5.3 (ecn protection) for ipv6 fragmentation handling [[http://git.kernel.org/linus/eec2e6185ff6eab18c2cae9b01a9fbc5c33248fc|(commit)]] * IPv6: Add support for IPv6 tokenized IIDs, that allow for administrators to assign well-known host-part addresses to nodes whilst still obtaining global network prefix from Router Advertisements. It is currently in [[http://tools.ietf.org/html/draft-chown-6man-tokenised-ipv6-identifiers-02|draft]] status [[http://git.kernel.org/linus/f53adae4eae5ad9f7343ff4a0fc68b468c981138|(commit)]] * tcp: implement RFC5682 F-RTO [[http://git.kernel.org/linus/e33099f96d99c391b3325caa9c44258de04aae86|(commit)]] * tcp: Remove TCP cookie transactions [[http://git.kernel.org/linus/1a2c6181c4a1922021b4d7df373bba612c3e5f04|(commit)]] * tunneling: Add generic Tunnel segmentation offloading support for IPv4-UDP based tunnels [[http://git.kernel.org/linus/731362674580cb0c696cd1b1a03d8461a10cf90a|(commit)]] * vlan: Add 802.1ad support [[http://git.kernel.org/linus/8ad227ff89a7e6f05d07cd0acfd95ed3a24450ca|(commit)]], [[http://git.kernel.org/linus/80d5c3689b886308247da295a228a54df49a44f6|(commit)]], [[http://git.kernel.org/linus/1fd9b1fc310314911f66d2f14a8e4f0ef37bf47b|(commit)]] * bond: add support to read speed and duplex via ethtool [[http://git.kernel.org/linus/bb5b052f751b309b5181686741c724a66c5cb15a|(commit)]] * xfrm: add rfc4494 AES-CMAC-96 support [[http://git.kernel.org/linus/d2049d8566bf74723f0c353621174b37ff3d75ec|(commit)]] * sctp: Add buffer utilization fields to /proc/net/sctp/assocs [[http://git.kernel.org/linus/f406c8b9693f2f71ef2caeb0b68521a7d22d00f0|(commit)]] * tipc: Add support for running TIPC on IP-over-InfiniBand devices [[http://git.kernel.org/linus/a29a194a15df9840b24c6c383a9a9a1236979db5|(commit)]], [[http://git.kernel.org/linus/dc850b0e68ad92583098b9a4871183087225972f|(commit)]] * Add MIB counters for checksum errors in IP layer, and TCP/UDP/ICMP layers [[http://git.kernel.org/linus/6a5dc9e598fe90160fee7de098fa319665f5253e|(commit)]] * Add socket option to enable error queue packets waking select [[http://git.kernel.org/linus/7d4c04fc170087119727119074e72445f2bb192b|(commit)]] * team: introduce random mode [[http://git.kernel.org/linus/753f993911b32e479b4fab5d228dc07c11d1e7e7|(commit)]] * sock_diag: allow to dump bpf filters [[http://git.kernel.org/linus/e8d9612c181b1a68ba5f71384629343466f1bd13|(commit)]] * filter: add minimal BPF JIT image disassembler [[http://git.kernel.org/linus/e306e2c13b8c214618af0c61acf62a6e42d486de|(commit)]] '' VXLAN '' * Allow L2 redirection with L3 switching [[http://git.kernel.org/linus/ae8840825605f36f98f247323edc150e761cb64e|(commit)]] * Use UDP Tunnel segmention. [[http://git.kernel.org/linus/05c0db08abb82a11e50c1a66392b21bb15aee9cd|(commit)]] * Allow setting destination to unicast address. [[http://git.kernel.org/linus/c7995c43facc6e5dea4de63fa9d283a337aabeb1|(commit)]] '' Netfilter '' * implement RFC3168 5.3 (ecn protection) for ipv6 fragmentation handling [[http://git.kernel.org/linus/b8dd6a223eb86d537c2c6d8d28916c1f0ba3ea3c|(commit)]] * ipset: Make possible to test elements marked with nomatch [[http://git.kernel.org/linus/43c56e595bb81319230affd545392536c933317e|(commit)]] * ipset: set match: add support to match the counters [[http://git.kernel.org/linus/6e01781d1c80e2e8263471252a631e86165b15c5|(commit)]] * nfnetlink_queue: zero copy support [[http://git.kernel.org/linus/ae08ce0021087a5d812d2714fb2a326ef9f8c450|(commit)]] * Diag core and basic socket info dumping [[http://git.kernel.org/linus/eaaa31392690c7609f7afeec5ba38a79d009842d|(commit)]] '' 802.11 (wireless) '' * Extend support for IEEE 802.11r Fast BSS Transition [[http://git.kernel.org/linus/355199e02b831fd4f652c34d6c7673d973da1369|(commit)]] * Add P2P Notice of Absence attribute [[http://git.kernel.org/linus/19dde0bd71e3dffb03ddc509019e22250f4e20c0|(commit)]] * Enable TDLS on P2P client interfaces [[http://git.kernel.org/linus/93d08f0b785dd3878a3b84a9013a15e57e6b4344|(commit)]] * Introduce critical protocol indication from user-space [[http://git.kernel.org/linus/5de17984898c5758fc6ebe08eccea9f4b6548914|(commit)]] * mac80211: add P2P NoA settings [[http://git.kernel.org/linus/67baf66339f82b5ddef5731caedb1e6db496818d|(commit)]] * Support userspace MPM [[http://git.kernel.org/linus/a6dad6a26e15f2f9269eea41b756c8cf0971b2bc|(commit)]] '' NFC '' * RFKILL support [[http://git.kernel.org/linus/be055b2f89b5842f41363b5655a33dffb51a8294|(commit)]] * llcp: Implement socket options [[http://git.kernel.org/linus/26fd76cab2e61cedc5c25f7151fb31b57ddc53c7|(commit)]] * llcp: Service Name Lookup SDRES aggregation [[http://git.kernel.org/linus/e0ae7bac06ccb90bb0cf7a3362730b48c7d7f1a8|(commit)]] * llcp: Service Name Lookup netlink interface [[http://git.kernel.org/linus/d9b8d8e19b073096d3609bbd60f82148d128b555|(commit)]] * llcp: Add support in getsockopt for RW, LTO, and MIU remote parameters [[http://git.kernel.org/linus/064f370c5fd982e1264c03f5b704e00f5e41eb36|(commit)]] * llcp: Aggregated frames support [[http://git.kernel.org/linus/098dafcfb4db0d3c08cffec88c87bbb2f4513f20|(commit)]] |
Line 114: | Line 215: |
* Add CMAC support to CryptoAPI [http://git.kernel.org/linus/93b5e86a6d13c5dec18c6611933fb38d7d80f0d2 (commit)] * aesni_intel - add more optimized XTS mode for x86-64 [http://git.kernel.org/linus/c456a9cd1ac4eae9147ffd7ac4fb77ca0fa980c6 (commit)] * atmel-aes: add support for latest release of the IP (0x130) [http://git.kernel.org/linus/cadc4ab8f6f73719ef0e124320cdd210d1c9ff3e (commit)] * atmel-sha - add support for latest release of the IP (0x410) [http://git.kernel.org/linus/d4905b38d1f6b60761a6fd16f45ebd1fac8b6e1f (commit)] * atmel-tdes - add support for latest release of the IP (0x700) [http://git.kernel.org/linus/1f858040c2f78013fd2b10ddeb9dc157c3362b04 (commit)] * blowfish: add AVX2/x86_64 implementation of blowfish cipher [http://git.kernel.org/linus/604880107010a1e5794552d184cd5471ea31b973 (commit)] * camellia: add AVX2/AES-NI/x86_64 assembler implementation of camellia cipher [http://git.kernel.org/linus/f3f935a76aa0eee68da2b273a08d84ba8ffc7a73 (commit)], add more optimized XTS code [http://git.kernel.org/linus/b5c5b072dc2f35d45d3404b957e264a3e8e71069 (commit)] * sahara: Add driver for SAHARA2 accelerator. [http://git.kernel.org/linus/5de8875281e1db024d67cbd5c792264194bfca2a (commit)] * sha256: optimized sha256 x86_64 assembly routine using Supplemental SSE3 instructions. [http://git.kernel.org/linus/46d208a2bdf5c3d4a60f2363318f600d64493f60 (commit)], otimized sha256 x86_64 assembly routine with AVX instructions. [http://git.kernel.org/linus/ec2b4c851f4da48a51b79a69843beb135e3db8c2 (commit)], optimized sha256 x86_64 routine using AVX2's RORX instructions [http://git.kernel.org/linus/d34a460092d857f1616e39eed7eac6f40cea2225 (commit)]; module providing optimized routines using SSSE3, AVX or AVX2 instructions. [http://git.kernel.org/linus/8275d1aa642295edd34a11a117080384bb9d65c2 (commit)] * sha512: Optimized SHA512 x86_64 assembly routine using AVX instructions. [http://git.kernel.org/linus/e01d69cb01956e97b6880c1952e264b19473e7f3 (commit)], optimized SHA512 x86_64 assembly routine using AVX2 RORX instruction. [http://git.kernel.org/linus/5663535b69eef3940dcdb3110f95651304fe41af (commit)], optimized SHA512 x86_64 assembly routine using Supplemental SSE3 instructions. [http://git.kernel.org/linus/bf215cee23ad6e278bfba1291863718934de392a (commit)]; create module providing optimized SHA512 routines using SSSE3, AVX or AVX2 instructions. [http://git.kernel.org/linus/87de4579f92dbe50e92f33b94f8688793c894571 (commit)] * twofish: add AVX2/x86_64 assembler implementation of twofish cipher [http://git.kernel.org/linus/cf1521a1a5e21fd1e79a458605c4282fbfbbeee2 (commit)], use optimized XTS code [http://git.kernel.org/linus/18be45270a80ab489d9402b63e1f103428f0afde (commit)] * Add more optimized XTS-mode for serpent-avx [http://git.kernel.org/linus/a05248ed2d9a83ae7c3e6db7c4ef9331c3dedc81 (commit)] |
* Add CMAC support to CryptoAPI [[http://git.kernel.org/linus/93b5e86a6d13c5dec18c6611933fb38d7d80f0d2|(commit)]] * aesni_intel - add more optimized XTS mode for x86-64 [[http://git.kernel.org/linus/c456a9cd1ac4eae9147ffd7ac4fb77ca0fa980c6|(commit)]] * atmel-aes: add support for latest release of the IP (0x130) [[http://git.kernel.org/linus/cadc4ab8f6f73719ef0e124320cdd210d1c9ff3e|(commit)]] * atmel-sha - add support for latest release of the IP (0x410) [[http://git.kernel.org/linus/d4905b38d1f6b60761a6fd16f45ebd1fac8b6e1f|(commit)]] * atmel-tdes - add support for latest release of the IP (0x700) [[http://git.kernel.org/linus/1f858040c2f78013fd2b10ddeb9dc157c3362b04|(commit)]] * blowfish: add AVX2/x86_64 implementation of blowfish cipher [[http://git.kernel.org/linus/604880107010a1e5794552d184cd5471ea31b973|(commit)]] * camellia: add AVX2/AES-NI/x86_64 assembler implementation of camellia cipher [[http://git.kernel.org/linus/f3f935a76aa0eee68da2b273a08d84ba8ffc7a73|(commit)]], add more optimized XTS code [[http://git.kernel.org/linus/b5c5b072dc2f35d45d3404b957e264a3e8e71069|(commit)]] * sahara: Add driver for SAHARA2 accelerator. [[http://git.kernel.org/linus/5de8875281e1db024d67cbd5c792264194bfca2a|(commit)]] * sha256: optimized sha256 x86_64 assembly routine using Supplemental SSE3 instructions. [[http://git.kernel.org/linus/46d208a2bdf5c3d4a60f2363318f600d64493f60|(commit)]], otimized sha256 x86_64 assembly routine with AVX instructions. [[http://git.kernel.org/linus/ec2b4c851f4da48a51b79a69843beb135e3db8c2|(commit)]], optimized sha256 x86_64 routine using AVX2's RORX instructions [[http://git.kernel.org/linus/d34a460092d857f1616e39eed7eac6f40cea2225|(commit)]]; module providing optimized routines using SSSE3, AVX or AVX2 instructions. [[http://git.kernel.org/linus/8275d1aa642295edd34a11a117080384bb9d65c2|(commit)]] * sha512: Optimized SHA512 x86_64 assembly routine using AVX instructions. [[http://git.kernel.org/linus/e01d69cb01956e97b6880c1952e264b19473e7f3|(commit)]], optimized SHA512 x86_64 assembly routine using AVX2 RORX instruction. [[http://git.kernel.org/linus/5663535b69eef3940dcdb3110f95651304fe41af|(commit)]], optimized SHA512 x86_64 assembly routine using Supplemental SSE3 instructions. [[http://git.kernel.org/linus/bf215cee23ad6e278bfba1291863718934de392a|(commit)]]; create module providing optimized SHA512 routines using SSSE3, AVX or AVX2 instructions. [[http://git.kernel.org/linus/87de4579f92dbe50e92f33b94f8688793c894571|(commit)]] * twofish: add AVX2/x86_64 assembler implementation of twofish cipher [[http://git.kernel.org/linus/cf1521a1a5e21fd1e79a458605c4282fbfbbeee2|(commit)]], use optimized XTS code [[http://git.kernel.org/linus/18be45270a80ab489d9402b63e1f103428f0afde|(commit)]] * Add more optimized XTS-mode for serpent-avx [[http://git.kernel.org/linus/a05248ed2d9a83ae7c3e6db7c4ef9331c3dedc81|(commit)]] |
Line 129: | Line 230: |
* KVM: Port to MIPS32 [http://git.kernel.org/linus/740765ce45689a4eca21914f8b2cc872a970f53f (commit)] * KVM: PPC: Book3S: Add infrastructure to implement kernel-side RTAS calls [http://git.kernel.org/linus/8e591cb7204739efa8e15967ea334eb367039dde (commit)] * KVM: PPC: Book3S: Add kernel emulation for the XICS interrupt controller [http://git.kernel.org/linus/bc5ad3f3701116e7db57268e6f89010ec714697e (commit)] * KVM: x86: Increase the "hard" max VCPU limit [http://git.kernel.org/linus/cbf64358588ae45dcf0207dbc97fba783577d64a (commit)] |
* pvpanic: pvpanic device driver [[http://git.kernel.org/linus/8b10acd74cdad9063c7a63468e31759d9ac877d9|(commit)]] '' KVM '' * New emulated device API [[http://git.kernel.org/linus/852b6d57dc7fa378019786fa84727036e56839ea|(commit)]], [[http://git.kernel.org/linus/2a5bab1004729f3302c776e53ee7c895b98bb1ce|(commit)]] * x86: Increase the "hard" max VCPU limit [[http://git.kernel.org/linus/cbf64358588ae45dcf0207dbc97fba783577d64a|(commit)]] * PPC: Book3S: Add infrastructure to implement kernel-side RTAS calls [[http://git.kernel.org/linus/8e591cb7204739efa8e15967ea334eb367039dde|(commit)]], add kernel emulation for the XICS interrupt controller [[http://git.kernel.org/linus/bc5ad3f3701116e7db57268e6f89010ec714697e|(commit)]] '' virtio '' * caif_virtio: Introduce caif over virtio [[http://git.kernel.org/linus/0d2e1a2926b1839a4b74519e660739b2566c9386|(commit)]] * virtio-scsi: introduce multiqueue support [[http://git.kernel.org/linus/9141a4ca0d9551729573042660e9bce83a01e0af|(commit)]] * vringh: host-side implementation of virtio rings. [[http://git.kernel.org/linus/f87d0fbb579818fed3eeb0923cc253163ab93039|(commit)]] '' HV '' * Add a new driver to support host initiated backup [[http://git.kernel.org/linus/96dd86fa588169b745a71aedf2070e80f4943623|(commit)]] * balloon: Implement hot-add functionality [[http://git.kernel.org/linus/1cac8cd4d146b60a7c70d778b5be928281b3b551|(commit)]] '' XEN '' * xen/arm: SMP support [[http://git.kernel.org/linus/9a9ab3cc00dc0c338e3ab96f75a0e1a3c1aa3c27|(commit)]] |
Line 137: | Line 249: |
* Smack: add support for modification of existing rules [[http://git.kernel.org/linus/e05b6f982a049113a88a1750e13fdb15298cbed4|(commit)]] * audit: add an option to control logging of passwords with pam_tty_audit [[http://git.kernel.org/linus/46e959ea2969cc1668d09b0dc55226946cf781f1|(commit)]] * audit: allow checking the type of audit message in the user filter [[http://git.kernel.org/linus/62062cf8a3a99a933efdac549da380f230dbe982|(commit)]] |
|
Line 139: | Line 255: |
'' perf '' * Add new "perf mem" command for memory access profiling [[http://git.kernel.org/linus/ccf49bfc6bb1025788637417780e9f1eeae9fc37|(commit 1]], [[http://git.kernel.org/linus/f4f7e28d0e813ddb997f49ae718ddf98db972292|2]], [[http://git.kernel.org/linus/98a3b32c99ada4bca8aaf4f91efd96fc906dd5c4|3]], [[http://git.kernel.org/linus/f20093eef5f7843a25adfc0512617d4b1ff1aa6e|4]], [[http://git.kernel.org/linus/028f12ee6beff0961781c5ed3f740e5f3b56f781|5)]] * perf stat: Add per-core aggregation. This option is used to aggregate system-wide counts on a per physical core basis. On processors with hyperthreading, this means counts of all HT threads running on a physical core are aggregated [[http://git.kernel.org/linus/12c08a9f591aeda57fb3b05897169e7da5439a79|(commit)]] * perf stat: Introduce --repeat forever [[http://git.kernel.org/linus/a7e191c376fad084d9f3c7ac89a1f7c47462ebc8|(commit)]], rename --aggr-socket to --per-socket [[http://git.kernel.org/linus/d4304958a25414a6e67b8a41c0f230e05cafafb6|(commit)]] * perf annotate: Add --group option to enable event grouping. When enabled, all the group members information will be shown with the leader so skip non-leader events [[http://git.kernel.org/linus/b1dd443296b4f8c6869eba790eec950f80392aea|(commit)]], [[http://git.kernel.org/linus/c7e7b6101361025fbea03833c6aee18e3d7bed34|(commit)]], [[http://git.kernel.org/linus/d8d7cd93e6b5f42bd2ae77680b5dc27415ba7492|(commit)]] * perf report: Add --no-demangle option [[http://git.kernel.org/linus/328ccdace8855289ad114b70ee1464ba5e3f6436|(commit)]] * perf tests: Add attr record -C cpu test [[http://git.kernel.org/linus/b03ec1b53070e0fae9de72b584d94b65a4a97635|(commit)]], add attr stat -C cpu test [[http://git.kernel.org/linus/9687b89d21999301ed386855c04b60d00ed1ec02|(commit)]] * Add support for weightened sampling [[http://git.kernel.org/linus/05484298cbfebbf8c8c55b000541a245bc286bec|(commit)]] * Make perf_event cgroup hierarchical [[http://git.kernel.org/linus/ef824fa129b7579f56b92d466ecda2e378879806|(commit)]] '' tracing '' * Add function probe triggers to enable/disable events [[http://git.kernel.org/linus/3cd715de261182413b3487abfffe1b6af41b81b3|(commit)]] * Add "uptime" trace clock that uses jiffies [[http://git.kernel.org/linus/8aacf017b065a805d27467843490c976835eb4a5|(commit)]] * Add a way to soft disable trace events [[http://git.kernel.org/linus/417944c4c7a0f657158d0515f3b8e8c043fd788f|(commit)]] * Add function-trace option to disable function tracing of latency tracers [[http://git.kernel.org/linus/328df4759c03e2c3e7429cc6cb0e180c38f32063|(commit)]] = Other news sites that track the changes of this release = * LWN: [[https://lwn.net/Articles/548834/|What's coming in 3.10, part 1]], [[https://lwn.net/Articles/549477/|What's coming in 3.10, part 2]], [[https://lwn.net/Articles/550205/|The conclusion of the 3.10 merge window]] * H-Open: Kernel Log [[http://www.h-online.com/open/features/Kernel-Log-Coming-in-3-10-Part-1-Networking-1885040.html|Kernel Log: Coming in 3.10 (Part 1)]], [[http://www.h-online.com/open/features/Kernel-Log-Coming-in-3-10-Part-2-File-systems-and-storage-1894579.html|Kernel Log: Coming in 3.10 (Part 2)]], [[http://www.h-online.com/open/features/Kernel-Log-Coming-in-3-10-Part-3-Infrastructure-1897249.html|Kernel Log: Coming in 3.10 (Part 3)]], [[http://www.h-online.com/open/features/Kernel-Log-Coming-in-3-10-Part-4-Drivers-1897675.html|Kernel Log: Coming in 3.10 (Part 4)]] * Phoronix: [[http://www.phoronix.com/scan.php?page=news_item&px=MTM4NzM|The Best Features Of The Linux 3.10 Kernel]] |
Linux 3.10 has been released on Sun, 30 Jun 2013.
Summary: This release adds support for bcache, which allows to use SSD devices to cache data from other block devices; a Btrfs format improvement that makes the tree dedicated to store extent information 30-35% smaller; support for XFS metadata checksums and self-describing metadata, timerless multitasking, SysV IPC, rwlock and mutex scalability improvements, a TCP Tail loss probe algorithm that reduces tail latency of short transactions, KVM virtualization support in the MIPS architecture, support for the ARM big.LITTLE architecture that mixes CPUs of different types, tracing snapshots, new drivers and many small improvements.
Contents
-
Prominent features (the cool stuff)
- Timerless multitasking
- Bcache, a block layer cache for SSD caching
- Btrfs: smaller, more space-efficient extent tree
- XFS metadata checksums
- SysV IPC scalability improvements
- rwsem locking scalability improvements
- mutex locking scalability improvements
- TCP optimization: Tail loss probe
- ARM big.LITTLE support
- MIPS KVM support
- tracing: tracing snapshots, stack tracing
- 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 (the cool stuff)
1.1. Timerless multitasking
In the prehistory of computing, computers could only have one task running at one time. But people wanted to start other tasks without waiting for first one to end, and even switch between tasks, and thus multitasking was born. First, multitasking was "collaborative", a process would run until its own code voluntarily decided to pause and allow other tasks to run. But it was possible to do multitasking better: the hardware could have a timer that fires up at regular intervals (called "ticks"); this timer could forcefully pause any program and run a OS routine that decides which task should continue running next. This is called preemptive multitasking, and it's what modern OSs do.
But preemptive multitasking had some side effects in modern hardware. CPUs of laptops and mobile devices require inactivity to enter in low power modes. Preemptive multitasking fires the the timer often, 1000 times per second in a typical Linux kernel, even when the system is not doing anything, so the CPUs could not save as much power as it was possible. Virtualization created more problems, since each Linux VM runs its own timer.In 2.6.21, released in April 2007, Linux partially solved this: the timer would fire off 1000 times per second as always when the system is running tasks, but it would stop completely the timer when the system is idle. But this is not enough. There are single task workloads like scientific number crunching or users of the real-time pachset whose performance or latency is hurt because they need to be temporally paused 1000 times per second for no reason.
This Linux release adds support for not firing the timer (tickless) even when tasks are running. With some caveats: in this release it's not actually fully tickless, it still needs the timer, but only fires up one time per second; the full tickless mode is disabled when a CPU runs more than one process; and a CPU must be kept running with full ticks to allow other CPUs to go into tickless mode.
For more details and future plans, it's strongly recommended to read this LWN article: '(Nearly) full tickless operation in 3.10' and the Documentation.
Code: (merge commit)
1.2. Bcache, a block layer cache for SSD caching
Since SSD storage devices became popular, many people has used them to speed up their storage stack. Bcache is an implementation of this functionality, and it allows SSDs to cache other block devices. It's analogous to L2Arc for ZFS, but Bcache also does writeback caching (besides just write through caching), and it's filesystem agnostic. It's designed to be switched on with a minimum of effort, and to work well without configuration on any setup. By default it won't cache sequential IO, just the random reads and writes that SSDs excel at. It's meant to be suitable for desktops, servers, high-end storage arrays, and perhaps even embedded.
For more details read the documentation or visit the wiki
Recommended LWN article: A bcache update
Code: (commit)
1.3. Btrfs: smaller, more space-efficient extent tree
Btrfs has incorporated a new key type for metadata extent references which uses disk space more efficiently and reduces the size from 51 bytes to 33 bytes per extent reference for each tree block. In practice, this results in a 30-35% decrease in the size of the extent tree, which means less copy-on-write operations, larger parts of the extent tree stored in memory which makes heavy metadata operations go much faster.
This is not an automatic format change, it must be enabled at mkfs time or with btrfstune -x.
Code: (commit)
1.4. XFS metadata checksums
In this release, XFS has a experimental implementation of metadata CRC32c checksums. These metadata checksums are part of a bigger project that aims to implement what the XFS developers have called "self-describing metadata". This project aims to solve the problem of verification scalability (fsck will need too much time to verify petabyte scale filesystems with billions of inodes). It requires a filesystem format change that will add to every XFS metadata object some information that allows to quickly determine if the metadata is intact and can be ignored for the purpose of forensic analysis. metadata type, filesystem identifier and block placement, metadata owner, log sequence identifier and, of course, CRC checksum.
This feature is experimental and requires using experimental xfsprogs. For more information, you can read the self-describing metadata Documentation.
Code: (merge commit)
1.5. SysV IPC scalability improvements
Linux IPC semaphore scalability was pitiful. Linux used to lock much too big ranges, and it used to have a single IPC lock per IPC semaphore array. Most loads never cared, but some do. This release splits out locking and adds per-semaphore locks for greater scalability of the IPC semaphore code. Micro benchmarks show improvements of more than 10x in some cases (see commit links for details).
Code: (merge commit),(commit 1, 2, 3, 4, 5, 6, 7
1.6. rwsem locking scalability improvements
The rwsem ("read-writer semaphore") locking scheme, used in many places in the Linux kernel, had performance problems because of strict, serialized, FIFO sequential write-ownership of the semaphore. In Linux 3.9, an "opportunistic lock stealing" patch was merged to fix it, but only in the slow path.
In this release, opportunity lock stealing has been implemented in the fast path, improving the performance of pgbench with double digits in some cases.
Code: (merge commit)
1.7. mutex locking scalability improvements
The mutex locking scheme, used widely in the Linux kernel, has been improved with some scalability improvements due to the use of less atomic operations and some queuing changes that reduce reduce cacheline contention. For details, see the commit links.
1.8. TCP optimization: Tail loss probe
This release adds the TCP Tail loss probe algorithm. Its goal is to reduce tail latency of short transactions. It achieves this by converting retransmission timeouts (RTOs) occuring due to tail losses (losses at end of transactions) into fast recovery. TLP transmits one packet in two round-trips when a connection is in Open state and isn't receiving any ACKs. The transmitted packet, aka loss probe, can be either new or a retransmission. When there is tail loss, the ACK from a loss probe triggers FACK/early-retransmit based fast recovery, thus avoiding a costly retransmission timeout.
1.9. ARM big.LITTLE support
The ARM big.LITTLE architecture is a ARM SMP solution where, according to this LWN Article, "instead of having a bunch of identical CPU cores put together in a system, the big.LITTLE architecture is effectively pushing the concept further by pulling two different SMP systems together: one being a set of "big" and fast processors, the other one consisting of "little" and power-efficient processors."
Recommended LWN article: Multi-cluster power management
Product site: http://www.arm.com/products/processors/technologies/bigLITTLEprocessing.php
Code: (commit)
1.10. MIPS KVM support
Another Linux architecture has added support for KVM; in this case MIPS. KVM/MIPS should support MIPS32R2 and beyond. For more details, see the release notes.
Code: (commit)
1.11. tracing: tracing snapshots, stack tracing
The tracing framework has got the ability to allow several tracing buffers, which can be used to take snapshots of the main tracing buffer. These tracing snapshots can be triggered manually or with function probes. It's also possible to cause a stack trace to be traced in the ring buffer when a given function is called.
Code: (commit 1, 2, 3, 4, 5, 6)
2. Drivers and architectures
All the driver and architecture-specific changes can be found in the Linux_3.10-DriversArch page
3. Core
Asynchronous I/O scalability improvements "Performance wise, the end result of this patch series is that submitting a kiocb writes to _no_ shared cachelines - the penalty for sharing an ioctx is gone there (commit)
Make VT switching to the suspend console optional (commit)
posix-timers: Introduce /proc/PID/timers file to get info about what posix timers are configured by processes (commit)
kconfig: implement KCONFIG_PROBABILITY for randconfig (commit)
modpost: add -T option to read module names from file/stdin. (commit)
lib/int_sqrt.c: optimize square root algorithm (commit)
device control group: propagate local changes down the hierarchy (commit)
Add uid and gid to devtmpfs (commit)
Introduce a dummy IRQ handler driver. This module accepts a single 'irq' parameter, which it should register for. The sole purpose of this module is to help with debugging (commit)
control groups: introduce sane_behavior mount option (commit)
ptrace: add ability to retrieve signals without removing from a queue (commit)
cpufreq: Implement per policy instances of governors (commit)
Workqueues
Implement sysfs interface for workqueues in /sys/bus/workqueue/devices/WQ_NAME. There currently are two attributes common to both per-cpu and unbound pools and extra attributes for unbound pools including nice level and cpumask (commit)
Implement NUMA affinity for unbound workqueues (commit)
fuse
4. Memory management
Limit the growth of the memory reserved for other user processes to min(3% current process size, user_reserve_pages) in the OVERCOMMIT_NEVER mode. For more details, see the commit links (commit), (commit)
Memory control group
5. Block layer
Expose the block layer bdi_wq workqueue to userland. It appears under /sys/bus/workqueue/devices/writeback/ and allows adjusting maximum concurrency level, cpumask and nice level (commit)
Implement runtime power management (commit)
md: Allow devices to be re-added to a read-only array. (commit)
6. File systems
EXT4
Introduce reserved space (commit)
Implementation of a new ioctl called EXT4_IOC_SWAP_BOOT (commit)
Reserve xattr index for Rich ACL support (commit)
XFS
add quota-driven speculative preallocation throttling (commit)
increase prealloc size to double that of the previous extent (commit)
introduce CONFIG_XFS_WARN (commit)
xfs_dquot prealloc throttling watermarks and low free space (commit)
Btrfs
Rescan for qgroups (commit)
Automatic rescan after "quota enable" command (commit)
Create the subvolume qgroup automatically when enabling quota (commit)
Deprecate subvolrootid mount option (obsoleted by subvol) (commit)
F2FS
Introduce readahead mode of node pages (commit)
NFS
NFSv4.1: Enable open-by-filehandle (commit)
7. Networking
netlink: Add support for memory mapped netlink I/O (commit 1, 2, 3 ,4, 5, 6, 7, 8)
per hash bucket locking for the frag queue hash. This removes two write locks, and the only remaining write lock is for protecting hash rebuild. This essentially reduce the readers-writer lock to a rebuild lock (commit), (commit)
IPv6: implement RFC3168 5.3 (ecn protection) for ipv6 fragmentation handling (commit)
IPv6: Add support for IPv6 tokenized IIDs, that allow for administrators to assign well-known host-part addresses to nodes whilst still obtaining global network prefix from Router Advertisements. It is currently in draft status (commit)
tcp: implement RFC5682 F-RTO (commit)
tcp: Remove TCP cookie transactions (commit)
tunneling: Add generic Tunnel segmentation offloading support for IPv4-UDP based tunnels (commit)
bond: add support to read speed and duplex via ethtool (commit)
xfrm: add rfc4494 AES-CMAC-96 support (commit)
sctp: Add buffer utilization fields to /proc/net/sctp/assocs (commit)
tipc: Add support for running TIPC on IP-over-InfiniBand devices (commit), (commit)
Add MIB counters for checksum errors in IP layer, and TCP/UDP/ICMP layers (commit)
Add socket option to enable error queue packets waking select (commit)
team: introduce random mode (commit)
sock_diag: allow to dump bpf filters (commit)
filter: add minimal BPF JIT image disassembler (commit)
VXLAN
Allow L2 redirection with L3 switching (commit)
Use UDP Tunnel segmention. (commit)
Allow setting destination to unicast address. (commit)
Netfilter
implement RFC3168 5.3 (ecn protection) for ipv6 fragmentation handling (commit)
ipset: Make possible to test elements marked with nomatch (commit)
ipset: set match: add support to match the counters (commit)
nfnetlink_queue: zero copy support (commit)
Diag core and basic socket info dumping (commit)
802.11 (wireless)
Extend support for IEEE 802.11r Fast BSS Transition (commit)
Add P2P Notice of Absence attribute (commit)
Enable TDLS on P2P client interfaces (commit)
Introduce critical protocol indication from user-space (commit)
mac80211: add P2P NoA settings (commit)
Support userspace MPM (commit)
NFC
RFKILL support (commit)
llcp: Implement socket options (commit)
llcp: Service Name Lookup SDRES aggregation (commit)
llcp: Service Name Lookup netlink interface (commit)
llcp: Add support in getsockopt for RW, LTO, and MIU remote parameters (commit)
llcp: Aggregated frames support (commit)
8. Crypto
Add CMAC support to CryptoAPI (commit)
aesni_intel - add more optimized XTS mode for x86-64 (commit)
atmel-aes: add support for latest release of the IP (0x130) (commit)
atmel-sha - add support for latest release of the IP (0x410) (commit)
atmel-tdes - add support for latest release of the IP (0x700) (commit)
blowfish: add AVX2/x86_64 implementation of blowfish cipher (commit)
camellia: add AVX2/AES-NI/x86_64 assembler implementation of camellia cipher (commit), add more optimized XTS code (commit)
sahara: Add driver for SAHARA2 accelerator. (commit)
sha256: optimized sha256 x86_64 assembly routine using Supplemental SSE3 instructions. (commit), otimized sha256 x86_64 assembly routine with AVX instructions. (commit), optimized sha256 x86_64 routine using AVX2's RORX instructions (commit); module providing optimized routines using SSSE3, AVX or AVX2 instructions. (commit)
sha512: Optimized SHA512 x86_64 assembly routine using AVX instructions. (commit), optimized SHA512 x86_64 assembly routine using AVX2 RORX instruction. (commit), optimized SHA512 x86_64 assembly routine using Supplemental SSE3 instructions. (commit); create module providing optimized SHA512 routines using SSSE3, AVX or AVX2 instructions. (commit)
twofish: add AVX2/x86_64 assembler implementation of twofish cipher (commit), use optimized XTS code (commit)
Add more optimized XTS-mode for serpent-avx (commit)
9. Virtualization
pvpanic: pvpanic device driver (commit)
KVM
x86: Increase the "hard" max VCPU limit (commit)
PPC: Book3S: Add infrastructure to implement kernel-side RTAS calls (commit), add kernel emulation for the XICS interrupt controller (commit)
virtio
caif_virtio: Introduce caif over virtio (commit)
virtio-scsi: introduce multiqueue support (commit)
vringh: host-side implementation of virtio rings. (commit)
HV
Add a new driver to support host initiated backup (commit)
balloon: Implement hot-add functionality (commit)
XEN
xen/arm: SMP support (commit)
10. Security
Smack: add support for modification of existing rules (commit)
audit: add an option to control logging of passwords with pam_tty_audit (commit)
audit: allow checking the type of audit message in the user filter (commit)
11. Tracing/perf
perf
Add new "perf mem" command for memory access profiling (commit 1, 2, 3, 4, 5)
perf stat: Add per-core aggregation. This option is used to aggregate system-wide counts on a per physical core basis. On processors with hyperthreading, this means counts of all HT threads running on a physical core are aggregated (commit)
perf stat: Introduce --repeat forever (commit), rename --aggr-socket to --per-socket (commit)
perf annotate: Add --group option to enable event grouping. When enabled, all the group members information will be shown with the leader so skip non-leader events (commit), (commit), (commit)
perf report: Add --no-demangle option (commit)
perf tests: Add attr record -C cpu test (commit), add attr stat -C cpu test (commit)
Add support for weightened sampling (commit)
Make perf_event cgroup hierarchical (commit)
tracing
Add function probe triggers to enable/disable events (commit)
Add "uptime" trace clock that uses jiffies (commit)
Add a way to soft disable trace events (commit)
Add function-trace option to disable function tracing of latency tracers (commit)
12. Other news sites that track the changes of this release
LWN: What's coming in 3.10, part 1, What's coming in 3.10, part 2, The conclusion of the 3.10 merge window
H-Open: Kernel Log Kernel Log: Coming in 3.10 (Part 1), Kernel Log: Coming in 3.10 (Part 2), Kernel Log: Coming in 3.10 (Part 3), Kernel Log: Coming in 3.10 (Part 4)