6540
Comment:
|
27868
|
Deletions are marked like this. | Additions are marked like this. |
Line 6: | Line 6: |
'''''Summary''''': | /!\ '''Note''' /!\ : The 2011 Kernel Summit was held in Prague on October 23-25. [https://lwn.net/Articles/KernelSummit2011/ Here you can read] the LWN's excellent coverage. '''''Summary''''': /!\ /!\ Not released /!\ /!\ This release includes support for Ext4 block sizes bigger than 4KB and up to 1MB, which improve performance with big files; btrfs has been updated with faster scrubbing, automatic backup of critical filesystem metadata, detailed corruption messages and tools for manual inspection of the metadata; the process scheduler has added support to set upper limits of CPU time to groups of processes; TCP has been updated to include the Proportional Rate Reduction algorithm, which speeds up the recovery of the connection after lost packets; the profiling tool "perf top" has added support for live inspection and the ability to zoom into tasks and libraries and explore the annotated assembly code; the Device Mapper has added support for 'thin provisioning' of storage, and it has been added support for the Hexagon DSP processor from Qualcomm. Other drivers and small improvements and fixes are also available in this release. |
Line 10: | Line 12: |
== == == == |
== Btrfs: Faster scrubbing, automatic backup of tree roots, detailed corruption messages, manual inspection of metadata == Recommended LWN article: [https://lwn.net/Articles/465160/ A btrfs update at LinuxCon Europe] Scrub read-ahead:: Scrubbing -the process of checking all the checksums of the filesystem- uses read-ahead to improve the performance. The average disk bandwith utilisation on a test volume was raised from 70% to 90%. On another volume, the time for a test run went down from 89 seconds to 43 seconds. Code: [http://git.kernel.org/linus/ab0fff03055d2d1b01a7581badeba18db9c4f55c (commit 1], [http://git.kernel.org/linus/90519d66abbccc251d14719ac76f191f70826e40 2], [http://git.kernel.org/linus/7414a03fbf9e75fbbf2a3c16828cd862e572aa44 3], [http://git.kernel.org/linus/7a26285eea8eb92e0088db011571d887d4551b0f 4)] Log of past tree roots:: Btrfs will store in the filesystem superblock information about most of the tree roots in the last four commits. A "-o recovery" mount option has been used to allow a user to use the root history log when the filesystem is not able to read the tree of the tree roots, the extent tree root, the device tree root or the csum root. Code: [http://git.kernel.org/linus/af31f5e5b84b5bf2bcec464153a5130b170b2770 (commit)] Detailed corruption messages:: Btrfs has always had [https://btrfs.wiki.kernel.org/articles/b/t/r/Btrfs_design.html "back references"] that allow to find which files or btrees actually reference a given block, but until now walking those references has been a manual process. Code to follow these backrefs has been added, with improved messages as result. For example, after scribbled over the blocks in one file on the disk and starting a scrub, instead of just telling that block xxyyzz is bad, the kernel now will print this: Code: [http://git.kernel.org/linus/a542ad1bafc7df9fc16de8a6894b350a4df75572 (commit 1], [http://git.kernel.org/linus/558540c17771eaf89b1a3be39aa2c8bc837da1a6 2)] {{{btrfs: checksum error at logical 5085110272 on dev /dev/sde, sector 2474832, root 5, inode 32583, offset 0, length 4096, links 1 (path: default/kernel-0/Makefile)}}} Manual inspection of the filesystem:: As part of the previous feature, some code has also been added to allow manual inspection of the filesystem from userspace utilities. To find the file that belongs to extent 5085110272 , you can run: Code: [http://git.kernel.org/linus/d7728c960dccf775b92f2c4139f1216275a45c44 (commit)] {{{btrfs inspect logical 5085110272 /mnt}}} Or to find the filename for inode number 32583: {{{btrfs inspect inode 32583 /mnt}}} == Ext4: Support for bigger block sizes == Recommended LWN article: [https://lwn.net/Articles/469805/ Improving ext4: bigalloc, inline data, and metadata checksums] The maximum size of a filesystem block in Ext4 has always been 4 KB in x86 systems. But the storage capacity of modern hard disks is growing fast, and with the size of hard disks, the overhead of using such small size as block size increases. Small block sizes benefit users who have many small files, because the space will be used more efficiently, but people who uses large files would benefit of larger block sizes. Ext4 supports now block sizes of up to 1MB of size, which decreases considerably [https://lwn.net/Articles/469821/ the time spent doing block allocations], and there is smaller fragmentation. These new block sizes must be set at creation time, using the mkfs -C option (requires e2fsprogs 1.42). This feature is not backwards compatible with older kernels. Code: [http://git.kernel.org/linus/281b59959707dfae03ce038cdf231bf4904e170c (commit 1], [http://git.kernel.org/linus/bab08ab9646288f1b0b72a7aaeecdff94bd62c18 2], [http://git.kernel.org/linus/7137d7a48e2213eb1f6d6529da14c2ed3706b795 3], [http://git.kernel.org/linus/49f7f9af4bb4d7972f3a35a74877937fec9f622d 4], [http://git.kernel.org/linus/fd034a84e1ea5c8c8d159cd2089c32e792c269b0 5], [http://git.kernel.org/linus/d5b8f31007a93777cfb0603b665858fb7aebebfc 6], [http://git.kernel.org/linus/3212a80a58062056bb922811071062be58d8fee1 7], [http://git.kernel.org/linus/53accfa9f819c80056db6f03f9c5cfa4bcba1ed8 8], [http://git.kernel.org/linus/84130193e0e6568dfdfb823f0e1e19aec80aff6e 9], [http://git.kernel.org/linus/4d33b1ef10995d7ba6191d67456202c697a92a32 10], [http://git.kernel.org/linus/0aa060000e83ca3d09ddc446a7174fb0820d99bc 11], [http://git.kernel.org/linus/5704265188ffe4290ed73b3cb685206c3ed8209d 12], [http://git.kernel.org/linus/24aaa8ef4e2b5764ada1fc69787e2fbd4f6276e5 13], [http://git.kernel.org/linus/f975d6bcc7a698a10cc755115e27d3612dcfe322 14], [http://git.kernel.org/linus/27baebb849d46d901e756e6502b0a65a62e43771 15], [http://git.kernel.org/linus/7b415bf60f6afb0499fd3dc0ee33444f54e28567 16], [http://git.kernel.org/linus/6f16b60690ba04cf476480a6f19b204e4b95b4a6 17)] == Process bandwith controller == Recommended LWN article: [https://lwn.net/Articles/428230/ CFS bandwidth control] The process scheduler divides the available CPU bandwith between all processes that need to run. There is no limits of how much CPU bandwith each process gets if there is free bandwith available, because all processes are supposed to want as much as possible. But apparently, some companies like Google have some scenarios where this unbounded allocation of CPU bandwith may lead to unacceptable utilization or latency variation. The CPU bandwidth control solves this problem allowing to set an explicit maximum limit for allowable CPU bandwidth. The bandwidth allowed for a group pf processes is specified using a quota and period. Within each given "period" (microseconds), a group is allowed to consume only up to "quota" microseconds of CPU time. When the CPU bandwidth consumption of a group exceeds this limit (for that period), the tasks belonging to its hierarchy will be throttled and are not allowed to run again until the next period. Documentation: [http://git.kernel.org/?p=linux/kernel/git/torvalds/linux-2.6.git;a=blob;f=Documentation/scheduler/sched-bwc.txt;hb=HEAD Documentation/scheduler/sched-bwc.txt]. Code: [http://git.kernel.org/linus/953bfcd10e6f3697233e8e5128c611d275da39c1 (commit 1], [http://git.kernel.org/linus/ab84d31e15502fb626169ba2663381e34bf965b2 2], [http://git.kernel.org/linus/a790de99599a29ad3f18667530cf4b9f4b7e3234 3], [http://git.kernel.org/linus/ec12cb7f31e28854efae7dd6f9544e0a66379040 4], [http://git.kernel.org/linus/58088ad0152ba4b7997388c93d0ca208ec1ece75 5], [http://git.kernel.org/linus/a9cf55b2861057a213e610da2fec52125439a11d 6], [http://git.kernel.org/linus/85dac906bec3bb41bfaa7ccaa65c4706de5cfdf8 7], [http://git.kernel.org/linus/671fd9dabe5239ad218c7eb48b2b9edee50250e6 8], [http://git.kernel.org/linus/8277434ef1202ce30315f8edb3fc760aa6e74493 9], [http://git.kernel.org/linus/64660c864f46202b932b911a69deb09805bdbaf8 10], [http://git.kernel.org/linus/5238cdd3873e67a98b28c1161d65d2a615c320a3 11], [http://git.kernel.org/linus/8cb120d3e41a0464a559d639d519cef563717a4e 12], [http://git.kernel.org/linus/d3d9dc3302368269acf94b7381663b93000fe2fe 13], [http://git.kernel.org/linus/e8da1b18b32064c43881bceef0f051c2110c9ab9 14], [http://git.kernel.org/linus/d8b4986d3dbc4fabc2054d63f1d31d6ed2fb1ca8 15], [http://git.kernel.org/linus/88ebc08ea9f721d1345d5414288a308ea42ac458 16)] == Thin provisioning and recursive snapshots in the Device Mapper == Typically, provisioning storage capacity to multiple users can be inefficient. For example, if 10 users need 10 GB each one, you will need 100 GB of storage capacity. These users, however, very probably won't use most of that storage space. Let's suppose that, on average, they only use 50% of their allocated space: only 50 GB will be used, and the other 50 GB will be underutilized. Thin provisioning allows to assign to all users combined more storage capacity than the total storage capacity of the system. In the previous case, you could buy only 50 GB of storage, let each users have 10 GB of theorical storage space (100 GB in total), and have no problems, because the 50 GB you bought are enought to satisfy the real demand of storage. And if users increase the demand, you can add more storage capacity. Thanks to thin provisioning, you can optimize your storage investment and avoid over-provisioning. Linux 3.2 adds experimental support for thin provisioning in the DM layer. Users will be able to create multiple thinly provisioned volumes out of a storage pool. Another significant feature included in the thin-provision DM target is support for an arbitrary depth of recursive snapshots (snapshots of snapshots of snapshots...), which avoids degradation with depth. Code: [http://git.kernel.org/linus/95d402f057f2e208e4631893f6cd4a59c7c05e41 (commit 1], [http://git.kernel.org/linus/3241b1d3e0aaafbfcd320f4d71ade629728cc4f4 2], [http://git.kernel.org/linus/991d9fa02da0dd1f843dc011376965e0c8c6c9b5 3)] == I/O-less dirty throttling, reduce filesystem writeback from page reclaim == Recommended LWN article: [https://lwn.net/Articles/456904/ No-I/O dirty throttling] "Writeback" is the process of writing data from the RAM to the disk, and in this context throttling means blocking processes temporally to avoid them creating new data that needs to be written, until the current data has been written to the disk. A critical part of the writeback code is deciding how much memory a process can dirty. In this kernel, the algorithms to make that decision have been rewritten. As a result, IO seeks and CPU contentions should be greatly reduced. Users will notice a more responsive system during heavy writeback, "killall dd" will take effect instantly. Users may also notice much smoothed pause times in workloads that have the write() syscall inside its loop, and also in NFS, JBOD and concurrent dd's. Lock contention and cache bouncing in concurrent IO workloads have been much improved. Code: [http://git.kernel.org/linus/c8e28ce049faa53a470c132893abbc9f2bde9420 (commit 1], [http://git.kernel.org/linus/6c14ae1e92c77eabd3e7527cf2e7836cde8b8487 2], [http://git.kernel.org/linus/af6a311384bce6c88e15c80ab22ab051a918b4eb 3], [http://git.kernel.org/linus/be3ffa276446e1b691a2bf84e7621e5a6fb49db9 4], [http://git.kernel.org/linus/7381131cbcf7e15d201a0ffd782a4698efe4e740 5], [http://git.kernel.org/linus/9d823e8f6b1b7b39f952d7d1795f29162143a433 6], [http://git.kernel.org/linus/143dfe8611a63030ce0c79419dc362f7838be557 7], [http://git.kernel.org/linus/c8462cc9de9e92264ec647903772f6036a99b286 8], [http://git.kernel.org/linus/57fc978cfb61ed40a7bbfe5a569359159ba31abd 9], [http://git.kernel.org/linus/8927f66c4ede9a18b4b58f7e6f9debca67065f6b 10], [http://git.kernel.org/linus/b00949aa2df9970a912bf060bc95e99da356881c 11], [http://git.kernel.org/linus/b48c104d2211b0ac881a71f5f76a3816225f8111 12], [http://git.kernel.org/linus/ece13ac31bbe492d940ba0bc4ade2ae1521f46a5 13], [http://git.kernel.org/linus/1df647197c5b8aacaeb58592cba9a1df322c9000 14)] There has been also work to reduce the filesystem writeback from the page reclaim, which also improves performance in many cases. Code: [http://git.kernel.org/linus/ee72886d8ed5d9de3fa0ed3b99a7ca7702576a96 (commit 1], [http://git.kernel.org/linus/a18bba061c789f5815c3efc3c80e6ac269911964 2], [http://git.kernel.org/linus/94054fa3fca1fd78db02cb3d68d5627120f0a1d4 3], [http://git.kernel.org/linus/966dbde2c208e07bab7a45a7855e1e693eabe661 4], [http://git.kernel.org/linus/f84f6e2b0868f198f97a32ba503d6f9f319a249a 5], [http://git.kernel.org/linus/92df3a723f84cdf8133560bbff950a7a99e92bc9 6], [http://git.kernel.org/linus/49ea7eb65e7c5060807fb9312b1ad4c3eab82e2c 7)] == TCP Proportional Rate Reduction == Recommended LWN article: [https://lwn.net/Articles/458610/ LPC: Making the net go faster] TCP tries to achieve the maximum bandwidth of a network link increasing the send rate until the network link starts losing packets. When a packet is lost, TCP slows down it tries to increase slowly the speed again. This systems works well, but in some cases where packets are lost, it takes too much time to recover the maximum speed. Google has developed an alternative recovering algorithm, called "Proportional Rate Reduction", which improves latency and the time to recover. For information, you can check [ http://tools.ietf.org/html/draft-mathis-tcpm-proportional-rate-reduction-01 a IETF draft], two slides ([http://www.ietf.org/proceedings/80/slides/tcpm-6.pdf 1], [http://tools.ietf.org/agenda/81/slides/tcpm-2.pdf 2]), or the [https://lwn.net/Articles/458610/ LWN article]. Code: [http://git.kernel.org/linus/a262f0cdf1f2916ea918dc329492abb5323d9a6c (commit)] == Improved live profiling tool "perf top" == The live profiling tool "perf top" has been rewritten and improved. Beyond the prettier output, it has the ability to navigate while data capture is going on, and the new ability to zoom into tasks and libraries. Users can even see annotated assembly code, hit enter on a CALLQ instruction and get moved to the called function's annotated assembly code. This works recursively, so users can explore the assembly code arbitrarily deep. Code: many different commits == Cross memory attach == Cross memory attach adds two syscalls -process_vm_readv, process_vm_writev- which allow to read/write from/to another processes' address space. The basic idea behind cross memory attach is to allow MPI programs doing intra-node communication to do a single copy of the message rather than a double copy of the message via shared memory. Code: [http://git.kernel.org/linus/fcf634098c00dd9cd247447368495f0b79be12d1 (commit)] == New architecture: Hexagon == Recommended LWN article: [https://lwn.net/Articles/457635/ Upcoming DSP architectures] [https://developer.qualcomm.com/hexagon-processor Qualcomm's Hexagon home page] The Hexagon processor is a general-purpose digital signal processor designed for high performance and low power across a wide variety of applications. It merges the numeric support, parallelism, and wide computation engine of a DSP, with the advanced system architecture of a modern microprocessor. Code: [http://git.kernel.org/?p=linux/kernel/git/torvalds/linux-2.6.git;a=tree;f=arch/hexagon;hb=HEAD arch/hexagon] |
Line 17: | Line 119: |
= VFS = * The i_mutex lock use of generic _file_llseek hurts. Do (nearly) lockless generic_file_llseek [http://git.kernel.org/linus/ (commit)] |
= File systems = * Ext4 * Optimize ext4_ext_convert_to_initialized(). Programs performing appending writes into files pre-allocated via fallocate(FALLOC_FL_KEEP_SIZE) via direct IO and when using a suboptimal implementation of memmove() will see a considerable reduction of kernel CPU consumption [http://git.kernel.org/linus/6f91bc5fda82d2c49b4f7fb29424cf6a3c7574bc (commit)] * Optimize memmmove lengths in extent/index insertions: Reduce the system CPU consumption by over 25% on a 4kB synchronous append DIO write workload [http://git.kernel.org/linus/80e675f906db54eb1ce3a9555cee5f45b5b72ab2 (commit)] * Remove deprecated oldalloc [http://git.kernel.org/linus/4113c4caa4f355b8ff8b7ff0510c29c9d00d30b3 (commit)] * Ext3 * Remove deprecated oldalloc [http://git.kernel.org/linus/fbc854027c91fa2813ae7f9de43cc0b5c1119f41 (commit)] * CIFS * uid/gid to SID mapping [http://git.kernel.org/linus/21fed0d5b763b94a7d1568c27d0cce892ab8d43e (commit)] * Add mount options for backup intent [http://git.kernel.org/linus/3d3ea8e64efbeb3e4289675dbbfab82333395642 (commit)] * Allow for larger rsize= options and change defaults [http://git.kernel.org/linus/5eba8ab3606621f7e175ae9f521d71f3ac534f82 (commit)] * Btrfs * Introduce mount option nospace_cache [http://git.kernel.org/linus/73bc187680f94bed498f8a669103cad290e41180 (commit)], [http://git.kernel.org/linus/8965593e41dd2d0e2a2f1e6f245336005ea94a2c (commit)] * Allow to mount -o subvol=path/to/subvol/you/want relative from the normal fs_tree root [http://git.kernel.org/linus/830c4adbd04a79f806d4fa579546f36a71b727c1 (commit)] * Allow to overcommit enospc reservations (speeds up a test from 45 minutes to 10 seconds) [http://git.kernel.org/linus/2bf64758fd6290797a5ce97d4b9c698a4ed1cbad (commit)] * Be smarter about committing the transaction: xfstests 83 goes from taking 445 seconds to taking 28 seconds [http://git.kernel.org/linus/663350ac38c67ca388acea6e876dc6d668c232b0 (commit)] * JFFS2 * Add compr=lzo and compr=zlib options [http://git.kernel.org/linus/123005f3ccfa58637ad6e1a8b9f7f3f861ca65f4 (commit)] * Implement mount option parsing and compression overriding [http://git.kernel.org/linus/92abc475d8de1c29373f6d96ed63d8ecaa199d25 (commit)] * EXOFS * Support for RAID5 read-4-write [http://git.kernel.org/linus/dd296619974c50c46c67e58f355a7e85ef3f0c01 (commit)], [http://git.kernel.org/linus/a1fec1dbbc8db974d2582e4040590cebe72171e4 (commit)], [http://git.kernel.org/linus/769ba8d92025fa390f3097e658b8ed6e032d68e9 (commit)], [44231e686b2ba3b5702db867bb84e6d76b7cf2c7 (commit)] * NFS * Support for RAID5 read-4-write interface. [http://git.kernel.org/linus/ (commit)] * GFS2 * Speed up delete/unlink performance for large files [http://git.kernel.org/linus/bd5437a7d4307a35f2c7cc19cad706ec0e5d61f0 (commit)] * SQUASHFS * Add an option to set dev block size to 4K [http://git.kernel.org/linus/7657cacf478940b995c2c73fdff981c13cc62c5c (commit)] |
Line 22: | Line 158: |
* thp: mremap support and TLB optimization [http://git.kernel.org/linus/ (commit)] * slub: per cpu cache for partial pages [http://git.kernel.org/linus/ (commit)], update slabinfo tools to report per cpu partial list [http://git.kernel.org/linus/ (commit)] |
* vmscan: add block plug for page reclaim to reduce lock contention [http://git.kernel.org/linus/3da367c3e5fca71d4e778fa565d9b098d5518f4a (commit)] * thp: mremap support and TLB optimization [http://git.kernel.org/linus/37a1c49a91ad55f917a399ef2174b5ebda4283f9 (commit)] * slub: per cpu cache for partial pages [http://git.kernel.org/linus/49e2258586b423684f03c278149ab46d8f8b6700 (commit)], [http://git.kernel.org/linus/aca726a07a71ff7aedc0e90a91f80a2701adcca5 (commit)] * Restrict access to slab files under procfs and sysfs [http://git.kernel.org/linus/ab067e99d22ec78ff646de1283348729d1aa66d4 (commit)] |
Line 26: | Line 164: |
* Add netlink based CAN routing [http://git.kernel.org/linus/ (commit)] * Add ethtool -g support to virtio_net [http://git.kernel.org/linus/ (commit)] * Batman adhoc networking:: implement AP-isolation on the receiver side [http://git.kernel.org/linus/ (commit)], implement AP-isolation on the sender side [http://git.kernel.org/linus/ (commit)] * af-iucv: The current transport mechanism for af_iucv is the z/VM offered communications facility IUCV. To provide equivalent support when running Linux in an LPAR, HiperSockets transport is added to the AF_IUCV address family [http://git.kernel.org/linus/ (commit)] * af-packet: af-packet: Added TPACKET_V3 headers. [http://git.kernel.org/linus/ (commit)], TPACKET_V3 flexible buffer implementation. [http://git.kernel.org/linus/ (commit)] * IEEE802.15.4: 6LoWPAN basic support [http://git.kernel.org/linus/ (commit)] * ipv4: gc_interval sysctl removed [http://git.kernel.org/linus/ (commit)] * mac80211: implement uAPSD [http://git.kernel.org/linus/ (commit)], mesh gate implementation [http://git.kernel.org/linus/ (commit)] * bridge: allow forwarding some link local frames, adding a new sysfs attribute /sys/class/net/brX/bridge/group_fwd_mask that controls forwarding of frames [http://git.kernel.org/linus/ (commit)] = File systems = * Ext3: remove deprecated oldalloc [http://git.kernel.org/linus/ (commit)] * GFS2 * Speed up delete/unlink performance for large files [http://git.kernel.org/linus/ (commit)] * CIFS * uid/gid to SID mapping [http://git.kernel.org/linus/ (commit)] * Add mount options for backup intent (try #6) [http://git.kernel.org/linus/ (commit)] * Allow for larger rsize= options and change defaults [http://git.kernel.org/linus/ (commit)] * JFFS2 * Add compr=lzo and compr=zlib options [http://git.kernel.org/linus/ (commit)] * Implement mount option parsing and compression overriding [http://git.kernel.org/linus/ (commit)] * XFS * exofs: Support for RAID5 read-4-write interface. [http://git.kernel.org/linus/ (commit)] * SQUASHFS * Add an option to set dev block size to 4K [http://git.kernel.org/linus/ (commit)] |
* Support for transmission of IPv6 packets as well as the formation of IPv6 link-local addresses and statelessly autoconfigured addresses on top of IEEE 802.15.4 networks. For more information please look at the RFC4944 "Compression Format for IPv6 Datagrams in Low Power and Losst Networks (6LoWPAN) [http://git.kernel.org/linus/44331fe2aa0d7eed54e68484df58e9e00aee0f6e (commit)] * NCI support. The NFC Controller Interface (NCI) is a standard communication protocol between an NFC Controller (NFCC) and a Device Host (DH), defined by the NFC Forum [http://git.kernel.org/linus/ (commit)], [http://git.kernel.org/linus/ (commit)] * Add netlink based CAN routing [http://git.kernel.org/linus/c1aabdf379bc2feeb0df7057ed5bad96f492133e (commit)] * Add ethtool -g support to virtio_net [http://git.kernel.org/linus/8f9f4668b37bcc877156dd525a856055735c8d24 (commit)] * Batman adhoc networking: implement AP-isolation on the receiver side [http://git.kernel.org/linus/59b699cdee039d75915c354da06937102d1f9a84 (commit)], implement AP-isolation on the sender side [http://git.kernel.org/linus/3d393e47321062dbf9078a66a7cc1c2a52bafecc (commit)] * af-iucv: The current transport mechanism for af_iucv is the z/VM offered communications facility IUCV. To provide equivalent support when running Linux in an LPAR, HiperSockets transport is added to the AF_IUCV address family [http://git.kernel.org/linus/3881ac441f642d56503818123446f7298442236b (commit)] * ipv4: gc_interval sysctl removed [http://git.kernel.org/linus/349d2895cc8b7db1f5be677cd685209a3805d2ed (commit)] * mac80211: implement uAPSD [http://git.kernel.org/linus/ (commit)], mesh gate implementation [http://git.kernel.org/linus/47086fc51aa2220f58049704a8b73e4fcdf372b9 (commit)] * af-packet: Added TPACKET_V3 support [http://git.kernel.org/linus/0d4691ce112be025019999df5f2a5e00c03f03c2 (commit)], TPACKET_V3 flexible buffer implementation. [http://git.kernel.org/linus/f6fb8f100b807378fda19e83e5ac6828b638603a (commit)] * bridge: allow forwarding some link local frames, adding a new sysfs attribute /sys/class/net/brX/bridge/group_fwd_mask that controls forwarding of frames [http://git.kernel.org/linus/515853ccecc6987dfb8ed809dd8bf8900286f29e (commit)] |
Line 62: | Line 176: |
* dm table: add always writeable feature [http://git.kernel.org/linus/ (commit)], add immutable feature [http://git.kernel.org/linus/ (commit)], add singleton feature [http://git.kernel.org/linus/ (commit)] * dm log userspace: add log device dependency [http://git.kernel.org/linus/ (commit)] = Block layer = |
* dm table: add always writeable feature [http://git.kernel.org/linus/cc6cbe141a20f6d876b161b60af38d93935bfa85 (commit)], add immutable feature [http://git.kernel.org/linus/36a0456fbf2d9680bf9af81b39daf4a8e22cb1b8 (commit)], add singleton feature [http://git.kernel.org/linus/3791e2fc0e4b40d4188e79b0a99bfa6bce714a10 (commit)] * dm log userspace: add log device dependency [http://git.kernel.org/linus/5a25f0eb707bbb4a5aaaf19c933605a6dbaf77a5 (commit)] = Power management = * devfreq: devfreq is a generic DVFS framework that can be registered for a device with OPP support in order to let the governor provided to DEVFREQ choose an operating frequency based on the OPP's list and the policy given with DEVFREQ [http://git.kernel.org/linus/a3c98b8b2ede1f4230f49f9af7135cd902e71e83 (commit)], [http://git.kernel.org/linus/9005b65099ee4f14b6be691c4574612fe947531a (commit)],[http://git.kernel.org/linus/ce26c5bb9569d8b826f01b8620fc16d8da6821e9 (commit)] * Improve performance of LZO/plain hibernation, checksum image [http://git.kernel.org/linus/081a9d043c983f161b78fdc4671324d1342b86bc (commit)] * Include storage keys in hibernation image on s390 [http://git.kernel.org/linus/85055dd805f0822f13f736bee2a521e222c38293 (commit)] * Implement per-device PM QoS constraints [http://git.kernel.org/linus/91ff4cb803df6de9114351b9f2f0f39f397ee03e (commit)] |
Line 68: | Line 186: |
* xen: Implement discard requests ('feature-discard') [http://git.kernel.org/linus/ (commit)], support 'feature-barrier' aka old-style BARRIER [http://git.kernel.org/linus/ (commit)] * lguest: Allow running under paravirt-enabled KVM. [http://git.kernel.org/linus/ (commit)] * hv: move hyperv code out of staging directory [http://git.kernel.org/linus/ (commit)] |
* xen: Implement discard requests ('feature-discard') [http://git.kernel.org/linus/b3cb0d6adc4bbc70b5e37e49a6068e973545ead7 (commit)], support 'feature-barrier' aka old-style BARRIER [http://git.kernel.org/linus/29bde093787f3bdf7b9b4270ada6be7c8076e36b (commit)] * lguest: Allow running under paravirt-enabled KVM. [http://git.kernel.org/linus/b56e3215d4331bff9b6d5e5f68bc1ec5cb01e650 (commit)] * Move hyperv code out of staging directory [http://git.kernel.org/linus/46a971913611a23478283931460a95be962ce329 (commit)] |
Line 73: | Line 191: |
* Add userspace configuration API [http://git.kernel.org/linus/ (commit)] * blowfish: add x86_64 assembly implementation [http://git.kernel.org/linus/ (commit)] * sha1: SSSE3 based SHA1 implementation for x86-64 [http://git.kernel.org/linus/ (commit)] * twofish: add 3-way parallel x86_64 assembler implemention [http://git.kernel.org/linus/ (commit)] |
* Add userspace configuration API [http://git.kernel.org/linus/a38f7907b926e4c6c7d389ad96cc38cec2e5a9e9 (commit)] * blowfish: add x86_64 assembly implementation [http://git.kernel.org/linus/64b94ceae8c16cd1b2800cac83112d3815be5250 (commit)] * sha1: SSSE3 based SHA1 implementation for x86-64 [http://git.kernel.org/linus/66be895158886a6cd816aa1eaa18965a5c522d8f (commit)] * twofish: add 3-way parallel x86_64 assembler implemention [http://git.kernel.org/linus/8280daad436edb7dd9e7e06fc13bcecb6b2a885c (commit)] |
Line 79: | Line 197: |
* Smack * Domain transition protections [http://git.kernel.org/linus/ (commit)] * Rule list lookup performance [http://git.kernel.org/linus/ (commit)] * Allow to access /smack/access as normal user [http://git.kernel.org/linus/ (commit)] * TOMOYO * Add environment variable name restriction support. [http://git.kernel.org/linus/ (commit)] * Add socket operation restriction support. [http://git.kernel.org/linus/ (commit)] * Allow controlling generation of access granted logs for per [http://git.kernel.org/linus/ (commit)] * Allow domain transition without execve(). [http://git.kernel.org/linus/ (commit)] |
* EVM: EVM protects a file's security extended attributes(xattrs) against integrity attacks [http://git.kernel.org/linus/ (commit)] Smack:: * Domain transition protections [http://git.kernel.org/linus/84088ba239293abb24260c6c36d86e8775b6707f (commit)] * Rule list lookup performance [http://git.kernel.org/linus/272cd7a8c67dd40a31ecff76a503bbb84707f757 (commit)] * Allow to access /smack/access as normal user [http://git.kernel.org/linus/0e94ae17c857b3835a2b8ea46ce44b5da4e2cc5d (commit)] TOMOYO:: * Add environment variable name restriction support. [http://git.kernel.org/linus/d58e0da854376841ac99defeb117a83f086715c6 (commit)] * Add socket operation restriction support. [http://git.kernel.org/linus/059d84dbb3897d4ee494a9c842c5dda54316cb47 (commit)] * Allow controlling generation of access granted logs for per [http://git.kernel.org/linus/1f067a682a9bd252107ac6f6946b7332fde42344 (commit)] * Allow domain transition without execve(). [http://git.kernel.org/linus/731d37aa70c7b9de3be6bf2c8287366223bf5ce5 (commit)] |
Line 90: | Line 209: |
* perf annotate: Add --symfs option [http://git.kernel.org/linus/ (commit)] * perf script: Add drop monitor script [http://git.kernel.org/linus/ (commit)] * perf stat: Add -o and --append options [http://git.kernel.org/linus/ (commit)] * perf: Support setting the disassembler style [http://git.kernel.org/linus/ (commit)] * perf tools: Make --no-asm-raw the default [http://git.kernel.org/linus/ (commit)] * perf tools: Make perf.data more self-descriptive (v8) [http://git.kernel.org/linus/ (commit)] * x86: Implement IBS initialization [http://git.kernel.org/linus/ (commit)] * powerpc: Add POWER7 stalled-cycles-frontend/backend [http://git.kernel.org/linus/ (commit)] |
* perf annotate: Add --symfs option [http://git.kernel.org/linus/e71a059832753a8834a5a5080366879954ccdc4d (commit)] * perf script: Add drop monitor script [http://git.kernel.org/linus/63e03724b51e7315a66a3f1fee6cb8b4a16dc8cc (commit)] * perf stat: Add -o and --append options [http://git.kernel.org/linus/4aa9015f8bfd2c8d7cc33a360275b71a9d708b37 (commit)] * perf: Support setting the disassembler style [http://git.kernel.org/linus/f69b64f73e1d7f47a9205c1cd46e0e1c3c65e1cd (commit)] * perf tools: Make --no-asm-raw the default [http://git.kernel.org/linus/64c6f0c7f8db449e05ee16e35a7083df69addd1d (commit)] * perf tools: Make perf.data more self-descriptive[http://git.kernel.org/linus/fbe96f29ce4b33e0a22219cc7f5996d9157717e3 (commit)] * x86: Implement IBS initialization [http://git.kernel.org/linus/b716916679e72054d436afadce2f94dcad71cfad (commit)] * powerpc: Add POWER7 stalled-cycles-frontend/backend [http://git.kernel.org/linus/a120db06c3f435c37d028b6e5a1968dad06b7df0 (commit)] |
Line 100: | Line 219: |
* init: add root=PARTUUID=UUID/PARTNROFF=%d support [http://git.kernel.org/linus/ (commit)] * iommu: Add fault reporting mechanism [http://git.kernel.org/linus/ (commit)] * loop: always allow userspace partitions and optionally support [http://git.kernel.org/linus/ (commit)] * aio: allocate kiocbs in batches, to improve performance [http://git.kernel.org/linus/ (commit)] * sysfs: sysfs: Implement support for tagged files in sysfs. [http://git.kernel.org/linus/ (commit)] Implement support for class attrs in tagged sysfs [http://git.kernel.org/linus/ (commit)] * process connector: add comm change event [http://git.kernel.org/linus/ (commit)] * debug-pagealloc: add support for highmem pages [http://git.kernel.org/linus/ (commit)] * sysctl: add support for poll() [http://git.kernel.org/linus/ (commit)] |
* The i_mutex lock use of generic _file_llseek hurts. Do (nearly) lockless generic_file_llseek [http://git.kernel.org/linus/5760495a872d63a182962680a13c2af29235237c (commit)] * init: add root=PARTUUID=UUID/PARTNROFF=%d support [http://git.kernel.org/linus/79975f1327850ef198ada994c2fc44b7d1ea8935 (commit)] * iommu: Add fault reporting mechanism [http://git.kernel.org/linus/4f3f8d9db359bbc780d482849f2a9c8b12f910b6 (commit)] * loop: always allow userspace partitions and optionally support [http://git.kernel.org/linus/e03c8dd14915fabc101aa495828d58598dc5af98 (commit)], add discard support for loop devices [http://git.kernel.org/linus/ dfaa2ef68e80c378e610e3c8c536f1c239e8d3ef (commit)] * aio: allocate kiocbs in batches, to improve performance [http://git.kernel.org/linus/080d676de095a14ecba14c0b9a91acb5bbb634df (commit)] * sysfs: Implement support for tagged files [http://git.kernel.org/linus/487505c257021fc06a7d05753cf27b011487f1dc (commit)], [http://git.kernel.org/linus/672d82c18d222e51b40ff47e660fc54ec3e3e0a9 (commit)] * process connector: add comm change event [http://git.kernel.org/linus/f786ecba4158880f8cdc0ebb93e7d78e6c125449 (commit)] * debug-pagealloc: add support for highmem pages [http://git.kernel.org/linus/64212ec569bfdd094f7a23d9b09862209a983559 (commit)] * sysctl: add support for poll() [http://git.kernel.org/linus/f1ecf06854a66ee663f4d4cf029c78cd62a15e04 (commit)] |
Note : The 2011 Kernel Summit was held in Prague on October 23-25. [https://lwn.net/Articles/KernelSummit2011/ Here you can read] the LWN's excellent coverage.
Summary: Not released This release includes support for Ext4 block sizes bigger than 4KB and up to 1MB, which improve performance with big files; btrfs has been updated with faster scrubbing, automatic backup of critical filesystem metadata, detailed corruption messages and tools for manual inspection of the metadata; the process scheduler has added support to set upper limits of CPU time to groups of processes; TCP has been updated to include the Proportional Rate Reduction algorithm, which speeds up the recovery of the connection after lost packets; the profiling tool "perf top" has added support for live inspection and the ability to zoom into tasks and libraries and explore the annotated assembly code; the Device Mapper has added support for 'thin provisioning' of storage, and it has been added support for the Hexagon DSP processor from Qualcomm. Other drivers and small improvements and fixes are also available in this release.
1. Prominent features in Linux 3.2
1.1. Btrfs: Faster scrubbing, automatic backup of tree roots, detailed corruption messages, manual inspection of metadata
Recommended LWN article: [https://lwn.net/Articles/465160/ A btrfs update at LinuxCon Europe]
- Scrub read-ahead
Scrubbing -the process of checking all the checksums of the filesystem- uses read-ahead to improve the performance. The average disk bandwith utilisation on a test volume was raised from 70% to 90%. On another volume, the time for a test run went down from 89 seconds to 43 seconds. Code: [http://git.kernel.org/linus/ab0fff03055d2d1b01a7581badeba18db9c4f55c (commit 1], [http://git.kernel.org/linus/90519d66abbccc251d14719ac76f191f70826e40 2], [http://git.kernel.org/linus/7414a03fbf9e75fbbf2a3c16828cd862e572aa44 3], [http://git.kernel.org/linus/7a26285eea8eb92e0088db011571d887d4551b0f 4)]
- Log of past tree roots
Btrfs will store in the filesystem superblock information about most of the tree roots in the last four commits. A "-o recovery" mount option has been used to allow a user to use the root history log when the filesystem is not able to read the tree of the tree roots, the extent tree root, the device tree root or the csum root. Code: [http://git.kernel.org/linus/af31f5e5b84b5bf2bcec464153a5130b170b2770 (commit)]
- Detailed corruption messages
Btrfs has always had [https://btrfs.wiki.kernel.org/articles/b/t/r/Btrfs_design.html "back references"] that allow to find which files or btrees actually reference a given block, but until now walking those references has been a manual process. Code to follow these backrefs has been added, with improved messages as result. For example, after scribbled over the blocks in one file on the disk and starting a scrub, instead of just telling that block xxyyzz is bad, the kernel now will print this: Code: [http://git.kernel.org/linus/a542ad1bafc7df9fc16de8a6894b350a4df75572 (commit 1], [http://git.kernel.org/linus/558540c17771eaf89b1a3be39aa2c8bc837da1a6 2)]
btrfs: checksum error at logical 5085110272 on dev /dev/sde, sector 2474832, root 5, inode 32583, offset 0, length 4096, links 1 (path: default/kernel-0/Makefile)
- Manual inspection of the filesystem
As part of the previous feature, some code has also been added to allow manual inspection of the filesystem from userspace utilities. To find the file that belongs to extent 5085110272 , you can run: Code: [http://git.kernel.org/linus/d7728c960dccf775b92f2c4139f1216275a45c44 (commit)]
btrfs inspect logical 5085110272 /mnt Or to find the filename for inode number 32583:
btrfs inspect inode 32583 /mnt
1.2. Ext4: Support for bigger block sizes
Recommended LWN article: [https://lwn.net/Articles/469805/ Improving ext4: bigalloc, inline data, and metadata checksums]
The maximum size of a filesystem block in Ext4 has always been 4 KB in x86 systems. But the storage capacity of modern hard disks is growing fast, and with the size of hard disks, the overhead of using such small size as block size increases. Small block sizes benefit users who have many small files, because the space will be used more efficiently, but people who uses large files would benefit of larger block sizes.
Ext4 supports now block sizes of up to 1MB of size, which decreases considerably [https://lwn.net/Articles/469821/ the time spent doing block allocations], and there is smaller fragmentation. These new block sizes must be set at creation time, using the mkfs -C option (requires e2fsprogs 1.42). This feature is not backwards compatible with older kernels. Code: [http://git.kernel.org/linus/281b59959707dfae03ce038cdf231bf4904e170c (commit 1], [http://git.kernel.org/linus/bab08ab9646288f1b0b72a7aaeecdff94bd62c18 2], [http://git.kernel.org/linus/7137d7a48e2213eb1f6d6529da14c2ed3706b795 3], [http://git.kernel.org/linus/49f7f9af4bb4d7972f3a35a74877937fec9f622d 4], [http://git.kernel.org/linus/fd034a84e1ea5c8c8d159cd2089c32e792c269b0 5], [http://git.kernel.org/linus/d5b8f31007a93777cfb0603b665858fb7aebebfc 6], [http://git.kernel.org/linus/3212a80a58062056bb922811071062be58d8fee1 7], [http://git.kernel.org/linus/53accfa9f819c80056db6f03f9c5cfa4bcba1ed8 8], [http://git.kernel.org/linus/84130193e0e6568dfdfb823f0e1e19aec80aff6e 9], [http://git.kernel.org/linus/4d33b1ef10995d7ba6191d67456202c697a92a32 10], [http://git.kernel.org/linus/0aa060000e83ca3d09ddc446a7174fb0820d99bc 11], [http://git.kernel.org/linus/5704265188ffe4290ed73b3cb685206c3ed8209d 12], [http://git.kernel.org/linus/24aaa8ef4e2b5764ada1fc69787e2fbd4f6276e5 13], [http://git.kernel.org/linus/f975d6bcc7a698a10cc755115e27d3612dcfe322 14], [http://git.kernel.org/linus/27baebb849d46d901e756e6502b0a65a62e43771 15], [http://git.kernel.org/linus/7b415bf60f6afb0499fd3dc0ee33444f54e28567 16], [http://git.kernel.org/linus/6f16b60690ba04cf476480a6f19b204e4b95b4a6 17)]
1.3. Process bandwith controller
Recommended LWN article: [https://lwn.net/Articles/428230/ CFS bandwidth control]
The process scheduler divides the available CPU bandwith between all processes that need to run. There is no limits of how much CPU bandwith each process gets if there is free bandwith available, because all processes are supposed to want as much as possible. But apparently, some companies like Google have some scenarios where this unbounded allocation of CPU bandwith may lead to unacceptable utilization or latency variation.
The CPU bandwidth control solves this problem allowing to set an explicit maximum limit for allowable CPU bandwidth. The bandwidth allowed for a group pf processes is specified using a quota and period. Within each given "period" (microseconds), a group is allowed to consume only up to "quota" microseconds of CPU time. When the CPU bandwidth consumption of a group exceeds this limit (for that period), the tasks belonging to its hierarchy will be throttled and are not allowed to run again until the next period. Documentation: [http://git.kernel.org/?p=linux/kernel/git/torvalds/linux-2.6.git;a=blob;f=Documentation/scheduler/sched-bwc.txt;hb=HEAD Documentation/scheduler/sched-bwc.txt]. Code: [http://git.kernel.org/linus/953bfcd10e6f3697233e8e5128c611d275da39c1 (commit 1], [http://git.kernel.org/linus/ab84d31e15502fb626169ba2663381e34bf965b2 2], [http://git.kernel.org/linus/a790de99599a29ad3f18667530cf4b9f4b7e3234 3], [http://git.kernel.org/linus/ec12cb7f31e28854efae7dd6f9544e0a66379040 4], [http://git.kernel.org/linus/58088ad0152ba4b7997388c93d0ca208ec1ece75 5], [http://git.kernel.org/linus/a9cf55b2861057a213e610da2fec52125439a11d 6], [http://git.kernel.org/linus/85dac906bec3bb41bfaa7ccaa65c4706de5cfdf8 7], [http://git.kernel.org/linus/671fd9dabe5239ad218c7eb48b2b9edee50250e6 8], [http://git.kernel.org/linus/8277434ef1202ce30315f8edb3fc760aa6e74493 9], [http://git.kernel.org/linus/64660c864f46202b932b911a69deb09805bdbaf8 10], [http://git.kernel.org/linus/5238cdd3873e67a98b28c1161d65d2a615c320a3 11], [http://git.kernel.org/linus/8cb120d3e41a0464a559d639d519cef563717a4e 12], [http://git.kernel.org/linus/d3d9dc3302368269acf94b7381663b93000fe2fe 13], [http://git.kernel.org/linus/e8da1b18b32064c43881bceef0f051c2110c9ab9 14], [http://git.kernel.org/linus/d8b4986d3dbc4fabc2054d63f1d31d6ed2fb1ca8 15], [http://git.kernel.org/linus/88ebc08ea9f721d1345d5414288a308ea42ac458 16)]
1.4. Thin provisioning and recursive snapshots in the Device Mapper
Typically, provisioning storage capacity to multiple users can be inefficient. For example, if 10 users need 10 GB each one, you will need 100 GB of storage capacity. These users, however, very probably won't use most of that storage space. Let's suppose that, on average, they only use 50% of their allocated space: only 50 GB will be used, and the other 50 GB will be underutilized.
Thin provisioning allows to assign to all users combined more storage capacity than the total storage capacity of the system. In the previous case, you could buy only 50 GB of storage, let each users have 10 GB of theorical storage space (100 GB in total), and have no problems, because the 50 GB you bought are enought to satisfy the real demand of storage. And if users increase the demand, you can add more storage capacity. Thanks to thin provisioning, you can optimize your storage investment and avoid over-provisioning.
Linux 3.2 adds experimental support for thin provisioning in the DM layer. Users will be able to create multiple thinly provisioned volumes out of a storage pool. Another significant feature included in the thin-provision DM target is support for an arbitrary depth of recursive snapshots (snapshots of snapshots of snapshots...), which avoids degradation with depth. Code: [http://git.kernel.org/linus/95d402f057f2e208e4631893f6cd4a59c7c05e41 (commit 1], [http://git.kernel.org/linus/3241b1d3e0aaafbfcd320f4d71ade629728cc4f4 2], [http://git.kernel.org/linus/991d9fa02da0dd1f843dc011376965e0c8c6c9b5 3)]
1.5. I/O-less dirty throttling, reduce filesystem writeback from page reclaim
Recommended LWN article: [https://lwn.net/Articles/456904/ No-I/O dirty throttling]
"Writeback" is the process of writing data from the RAM to the disk, and in this context throttling means blocking processes temporally to avoid them creating new data that needs to be written, until the current data has been written to the disk.
A critical part of the writeback code is deciding how much memory a process can dirty. In this kernel, the algorithms to make that decision have been rewritten. As a result, IO seeks and CPU contentions should be greatly reduced. Users will notice a more responsive system during heavy writeback, "killall dd" will take effect instantly. Users may also notice much smoothed pause times in workloads that have the write() syscall inside its loop, and also in NFS, JBOD and concurrent dd's. Lock contention and cache bouncing in concurrent IO workloads have been much improved. Code: [http://git.kernel.org/linus/c8e28ce049faa53a470c132893abbc9f2bde9420 (commit 1], [http://git.kernel.org/linus/6c14ae1e92c77eabd3e7527cf2e7836cde8b8487 2], [http://git.kernel.org/linus/af6a311384bce6c88e15c80ab22ab051a918b4eb 3], [http://git.kernel.org/linus/be3ffa276446e1b691a2bf84e7621e5a6fb49db9 4], [http://git.kernel.org/linus/7381131cbcf7e15d201a0ffd782a4698efe4e740 5], [http://git.kernel.org/linus/9d823e8f6b1b7b39f952d7d1795f29162143a433 6], [http://git.kernel.org/linus/143dfe8611a63030ce0c79419dc362f7838be557 7], [http://git.kernel.org/linus/c8462cc9de9e92264ec647903772f6036a99b286 8], [http://git.kernel.org/linus/57fc978cfb61ed40a7bbfe5a569359159ba31abd 9], [http://git.kernel.org/linus/8927f66c4ede9a18b4b58f7e6f9debca67065f6b 10], [http://git.kernel.org/linus/b00949aa2df9970a912bf060bc95e99da356881c 11], [http://git.kernel.org/linus/b48c104d2211b0ac881a71f5f76a3816225f8111 12], [http://git.kernel.org/linus/ece13ac31bbe492d940ba0bc4ade2ae1521f46a5 13], [http://git.kernel.org/linus/1df647197c5b8aacaeb58592cba9a1df322c9000 14)]
There has been also work to reduce the filesystem writeback from the page reclaim, which also improves performance in many cases. Code: [http://git.kernel.org/linus/ee72886d8ed5d9de3fa0ed3b99a7ca7702576a96 (commit 1], [http://git.kernel.org/linus/a18bba061c789f5815c3efc3c80e6ac269911964 2], [http://git.kernel.org/linus/94054fa3fca1fd78db02cb3d68d5627120f0a1d4 3], [http://git.kernel.org/linus/966dbde2c208e07bab7a45a7855e1e693eabe661 4], [http://git.kernel.org/linus/f84f6e2b0868f198f97a32ba503d6f9f319a249a 5], [http://git.kernel.org/linus/92df3a723f84cdf8133560bbff950a7a99e92bc9 6], [http://git.kernel.org/linus/49ea7eb65e7c5060807fb9312b1ad4c3eab82e2c 7)]
1.6. TCP Proportional Rate Reduction
Recommended LWN article: [https://lwn.net/Articles/458610/ LPC: Making the net go faster]
TCP tries to achieve the maximum bandwidth of a network link increasing the send rate until the network link starts losing packets. When a packet is lost, TCP slows down it tries to increase slowly the speed again.
This systems works well, but in some cases where packets are lost, it takes too much time to recover the maximum speed. Google has developed an alternative recovering algorithm, called "Proportional Rate Reduction", which improves latency and the time to recover. For information, you can check [ http://tools.ietf.org/html/draft-mathis-tcpm-proportional-rate-reduction-01 a IETF draft], two slides ([http://www.ietf.org/proceedings/80/slides/tcpm-6.pdf 1], [http://tools.ietf.org/agenda/81/slides/tcpm-2.pdf 2]), or the [https://lwn.net/Articles/458610/ LWN article]. Code: [http://git.kernel.org/linus/a262f0cdf1f2916ea918dc329492abb5323d9a6c (commit)]
1.7. Improved live profiling tool "perf top"
The live profiling tool "perf top" has been rewritten and improved. Beyond the prettier output, it has the ability to navigate while data capture is going on, and the new ability to zoom into tasks and libraries. Users can even see annotated assembly code, hit enter on a CALLQ instruction and get moved to the called function's annotated assembly code. This works recursively, so users can explore the assembly code arbitrarily deep. Code: many different commits
1.8. Cross memory attach
Cross memory attach adds two syscalls -process_vm_readv, process_vm_writev- which allow to read/write from/to another processes' address space. The basic idea behind cross memory attach is to allow MPI programs doing intra-node communication to do a single copy of the message rather than a double copy of the message via shared memory. Code: [http://git.kernel.org/linus/fcf634098c00dd9cd247447368495f0b79be12d1 (commit)]
1.9. New architecture: Hexagon
Recommended LWN article: [https://lwn.net/Articles/457635/ Upcoming DSP architectures]
[https://developer.qualcomm.com/hexagon-processor Qualcomm's Hexagon home page]
The Hexagon processor is a general-purpose digital signal processor designed for high performance and low power across a wide variety of applications. It merges the numeric support, parallelism, and wide computation engine of a DSP, with the advanced system architecture of a modern microprocessor.
Code: [http://git.kernel.org/?p=linux/kernel/git/torvalds/linux-2.6.git;a=tree;f=arch/hexagon;hb=HEAD arch/hexagon]
2. Driver and architecture-specific changes
All the driver and architecture-specific changes can be found in the [http://kernelnewbies.org/Linux_3.2_DriverArch Linux_3.2_DriverArch page]
3. File systems
- Ext4
Optimize ext4_ext_convert_to_initialized(). Programs performing appending writes into files pre-allocated via fallocate(FALLOC_FL_KEEP_SIZE) via direct IO and when using a suboptimal implementation of memmove() will see a considerable reduction of kernel CPU consumption [http://git.kernel.org/linus/6f91bc5fda82d2c49b4f7fb29424cf6a3c7574bc (commit)]
Optimize memmmove lengths in extent/index insertions: Reduce the system CPU consumption by over 25% on a 4kB synchronous append DIO write workload [http://git.kernel.org/linus/80e675f906db54eb1ce3a9555cee5f45b5b72ab2 (commit)]
Remove deprecated oldalloc [http://git.kernel.org/linus/4113c4caa4f355b8ff8b7ff0510c29c9d00d30b3 (commit)]
- Ext3
Remove deprecated oldalloc [http://git.kernel.org/linus/fbc854027c91fa2813ae7f9de43cc0b5c1119f41 (commit)]
- CIFS
uid/gid to SID mapping [http://git.kernel.org/linus/21fed0d5b763b94a7d1568c27d0cce892ab8d43e (commit)]
Add mount options for backup intent [http://git.kernel.org/linus/3d3ea8e64efbeb3e4289675dbbfab82333395642 (commit)]
Allow for larger rsize= options and change defaults [http://git.kernel.org/linus/5eba8ab3606621f7e175ae9f521d71f3ac534f82 (commit)]
- Btrfs
Introduce mount option nospace_cache [http://git.kernel.org/linus/73bc187680f94bed498f8a669103cad290e41180 (commit)], [http://git.kernel.org/linus/8965593e41dd2d0e2a2f1e6f245336005ea94a2c (commit)]
Allow to mount -o subvol=path/to/subvol/you/want relative from the normal fs_tree root [http://git.kernel.org/linus/830c4adbd04a79f806d4fa579546f36a71b727c1 (commit)]
Allow to overcommit enospc reservations (speeds up a test from 45 minutes to 10 seconds) [http://git.kernel.org/linus/2bf64758fd6290797a5ce97d4b9c698a4ed1cbad (commit)]
Be smarter about committing the transaction: xfstests 83 goes from taking 445 seconds to taking 28 seconds [http://git.kernel.org/linus/663350ac38c67ca388acea6e876dc6d668c232b0 (commit)]
- JFFS2
Add compr=lzo and compr=zlib options [http://git.kernel.org/linus/123005f3ccfa58637ad6e1a8b9f7f3f861ca65f4 (commit)]
Implement mount option parsing and compression overriding [http://git.kernel.org/linus/92abc475d8de1c29373f6d96ed63d8ecaa199d25 (commit)]
- EXOFS
Support for RAID5 read-4-write [http://git.kernel.org/linus/dd296619974c50c46c67e58f355a7e85ef3f0c01 (commit)], [http://git.kernel.org/linus/a1fec1dbbc8db974d2582e4040590cebe72171e4 (commit)], [http://git.kernel.org/linus/769ba8d92025fa390f3097e658b8ed6e032d68e9 (commit)], [44231e686b2ba3b5702db867bb84e6d76b7cf2c7 (commit)]
- NFS
Support for RAID5 read-4-write interface. [http://git.kernel.org/linus/ (commit)]
- GFS2
Speed up delete/unlink performance for large files [http://git.kernel.org/linus/bd5437a7d4307a35f2c7cc19cad706ec0e5d61f0 (commit)]
- SQUASHFS
Add an option to set dev block size to 4K [http://git.kernel.org/linus/7657cacf478940b995c2c73fdff981c13cc62c5c (commit)]
4. Memory management
vmscan: add block plug for page reclaim to reduce lock contention [http://git.kernel.org/linus/3da367c3e5fca71d4e778fa565d9b098d5518f4a (commit)]
thp: mremap support and TLB optimization [http://git.kernel.org/linus/37a1c49a91ad55f917a399ef2174b5ebda4283f9 (commit)]
slub: per cpu cache for partial pages [http://git.kernel.org/linus/49e2258586b423684f03c278149ab46d8f8b6700 (commit)], [http://git.kernel.org/linus/aca726a07a71ff7aedc0e90a91f80a2701adcca5 (commit)]
Restrict access to slab files under procfs and sysfs [http://git.kernel.org/linus/ab067e99d22ec78ff646de1283348729d1aa66d4 (commit)]
5. Networking
Support for transmission of IPv6 packets as well as the formation of IPv6 link-local addresses and statelessly autoconfigured addresses on top of IEEE 802.15.4 networks. For more information please look at the RFC4944 "Compression Format for IPv6 Datagrams in Low Power and Losst Networks (6LoWPAN) [http://git.kernel.org/linus/44331fe2aa0d7eed54e68484df58e9e00aee0f6e (commit)]
NCI support. The NFC Controller Interface (NCI) is a standard communication protocol between an NFC Controller (NFCC) and a Device Host (DH), defined by the NFC Forum [http://git.kernel.org/linus/ (commit)], [http://git.kernel.org/linus/ (commit)]
Add netlink based CAN routing [http://git.kernel.org/linus/c1aabdf379bc2feeb0df7057ed5bad96f492133e (commit)]
Add ethtool -g support to virtio_net [http://git.kernel.org/linus/8f9f4668b37bcc877156dd525a856055735c8d24 (commit)]
Batman adhoc networking: implement AP-isolation on the receiver side [http://git.kernel.org/linus/59b699cdee039d75915c354da06937102d1f9a84 (commit)], implement AP-isolation on the sender side [http://git.kernel.org/linus/3d393e47321062dbf9078a66a7cc1c2a52bafecc (commit)]
af-iucv: The current transport mechanism for af_iucv is the z/VM offered communications facility IUCV. To provide equivalent support when running Linux in an LPAR, HiperSockets transport is added to the AF_IUCV address family [http://git.kernel.org/linus/3881ac441f642d56503818123446f7298442236b (commit)]
ipv4: gc_interval sysctl removed [http://git.kernel.org/linus/349d2895cc8b7db1f5be677cd685209a3805d2ed (commit)]
mac80211: implement uAPSD [http://git.kernel.org/linus/ (commit)], mesh gate implementation [http://git.kernel.org/linus/47086fc51aa2220f58049704a8b73e4fcdf372b9 (commit)]
af-packet: Added TPACKET_V3 support [http://git.kernel.org/linus/0d4691ce112be025019999df5f2a5e00c03f03c2 (commit)], TPACKET_V3 flexible buffer implementation. [http://git.kernel.org/linus/f6fb8f100b807378fda19e83e5ac6828b638603a (commit)]
bridge: allow forwarding some link local frames, adding a new sysfs attribute /sys/class/net/brX/bridge/group_fwd_mask that controls forwarding of frames [http://git.kernel.org/linus/515853ccecc6987dfb8ed809dd8bf8900286f29e (commit)]
6. Device Mapper
dm table: add always writeable feature [http://git.kernel.org/linus/cc6cbe141a20f6d876b161b60af38d93935bfa85 (commit)], add immutable feature [http://git.kernel.org/linus/36a0456fbf2d9680bf9af81b39daf4a8e22cb1b8 (commit)], add singleton feature [http://git.kernel.org/linus/3791e2fc0e4b40d4188e79b0a99bfa6bce714a10 (commit)]
dm log userspace: add log device dependency [http://git.kernel.org/linus/5a25f0eb707bbb4a5aaaf19c933605a6dbaf77a5 (commit)]
7. Power management
devfreq: devfreq is a generic DVFS framework that can be registered for a device with OPP support in order to let the governor provided to DEVFREQ choose an operating frequency based on the OPP's list and the policy given with DEVFREQ [http://git.kernel.org/linus/a3c98b8b2ede1f4230f49f9af7135cd902e71e83 (commit)], [http://git.kernel.org/linus/9005b65099ee4f14b6be691c4574612fe947531a (commit)],[http://git.kernel.org/linus/ce26c5bb9569d8b826f01b8620fc16d8da6821e9 (commit)]
Improve performance of LZO/plain hibernation, checksum image [http://git.kernel.org/linus/081a9d043c983f161b78fdc4671324d1342b86bc (commit)]
Include storage keys in hibernation image on s390 [http://git.kernel.org/linus/85055dd805f0822f13f736bee2a521e222c38293 (commit)]
Implement per-device PM QoS constraints [http://git.kernel.org/linus/91ff4cb803df6de9114351b9f2f0f39f397ee03e (commit)]
8. Virtualization
xen: Implement discard requests ('feature-discard') [http://git.kernel.org/linus/b3cb0d6adc4bbc70b5e37e49a6068e973545ead7 (commit)], support 'feature-barrier' aka old-style BARRIER [http://git.kernel.org/linus/29bde093787f3bdf7b9b4270ada6be7c8076e36b (commit)]
lguest: Allow running under paravirt-enabled KVM. [http://git.kernel.org/linus/b56e3215d4331bff9b6d5e5f68bc1ec5cb01e650 (commit)]
Move hyperv code out of staging directory [http://git.kernel.org/linus/46a971913611a23478283931460a95be962ce329 (commit)]
9. Crypto
Add userspace configuration API [http://git.kernel.org/linus/a38f7907b926e4c6c7d389ad96cc38cec2e5a9e9 (commit)]
blowfish: add x86_64 assembly implementation [http://git.kernel.org/linus/64b94ceae8c16cd1b2800cac83112d3815be5250 (commit)]
sha1: SSSE3 based SHA1 implementation for x86-64 [http://git.kernel.org/linus/66be895158886a6cd816aa1eaa18965a5c522d8f (commit)]
twofish: add 3-way parallel x86_64 assembler implemention [http://git.kernel.org/linus/8280daad436edb7dd9e7e06fc13bcecb6b2a885c (commit)]
10. Security
EVM: EVM protects a file's security extended attributes(xattrs) against integrity attacks [http://git.kernel.org/linus/ (commit)]
- Smack
Domain transition protections [http://git.kernel.org/linus/84088ba239293abb24260c6c36d86e8775b6707f (commit)]
Rule list lookup performance [http://git.kernel.org/linus/272cd7a8c67dd40a31ecff76a503bbb84707f757 (commit)]
Allow to access /smack/access as normal user [http://git.kernel.org/linus/0e94ae17c857b3835a2b8ea46ce44b5da4e2cc5d (commit)]
- TOMOYO
Add environment variable name restriction support. [http://git.kernel.org/linus/d58e0da854376841ac99defeb117a83f086715c6 (commit)]
Add socket operation restriction support. [http://git.kernel.org/linus/059d84dbb3897d4ee494a9c842c5dda54316cb47 (commit)]
Allow controlling generation of access granted logs for per [http://git.kernel.org/linus/1f067a682a9bd252107ac6f6946b7332fde42344 (commit)]
Allow domain transition without execve(). [http://git.kernel.org/linus/731d37aa70c7b9de3be6bf2c8287366223bf5ce5 (commit)]
11. Tracing/profiling
perf annotate: Add --symfs option [http://git.kernel.org/linus/e71a059832753a8834a5a5080366879954ccdc4d (commit)]
perf script: Add drop monitor script [http://git.kernel.org/linus/63e03724b51e7315a66a3f1fee6cb8b4a16dc8cc (commit)]
perf stat: Add -o and --append options [http://git.kernel.org/linus/4aa9015f8bfd2c8d7cc33a360275b71a9d708b37 (commit)]
perf: Support setting the disassembler style [http://git.kernel.org/linus/f69b64f73e1d7f47a9205c1cd46e0e1c3c65e1cd (commit)]
perf tools: Make --no-asm-raw the default [http://git.kernel.org/linus/64c6f0c7f8db449e05ee16e35a7083df69addd1d (commit)]
perf tools: Make perf.data more self-descriptive[http://git.kernel.org/linus/fbe96f29ce4b33e0a22219cc7f5996d9157717e3 (commit)]
x86: Implement IBS initialization [http://git.kernel.org/linus/b716916679e72054d436afadce2f94dcad71cfad (commit)]
powerpc: Add POWER7 stalled-cycles-frontend/backend [http://git.kernel.org/linus/a120db06c3f435c37d028b6e5a1968dad06b7df0 (commit)]
12. Various core changes
The i_mutex lock use of generic _file_llseek hurts. Do (nearly) lockless generic_file_llseek [http://git.kernel.org/linus/5760495a872d63a182962680a13c2af29235237c (commit)]
init: add root=PARTUUID=UUID/PARTNROFF=%d support [http://git.kernel.org/linus/79975f1327850ef198ada994c2fc44b7d1ea8935 (commit)]
iommu: Add fault reporting mechanism [http://git.kernel.org/linus/4f3f8d9db359bbc780d482849f2a9c8b12f910b6 (commit)]
loop: always allow userspace partitions and optionally support [http://git.kernel.org/linus/e03c8dd14915fabc101aa495828d58598dc5af98 (commit)], add discard support for loop devices [http://git.kernel.org/linus/ dfaa2ef68e80c378e610e3c8c536f1c239e8d3ef (commit)]
aio: allocate kiocbs in batches, to improve performance [http://git.kernel.org/linus/080d676de095a14ecba14c0b9a91acb5bbb634df (commit)]
sysfs: Implement support for tagged files [http://git.kernel.org/linus/487505c257021fc06a7d05753cf27b011487f1dc (commit)], [http://git.kernel.org/linus/672d82c18d222e51b40ff47e660fc54ec3e3e0a9 (commit)]
process connector: add comm change event [http://git.kernel.org/linus/f786ecba4158880f8cdc0ebb93e7d78e6c125449 (commit)]
debug-pagealloc: add support for highmem pages [http://git.kernel.org/linus/64212ec569bfdd094f7a23d9b09862209a983559 (commit)]
sysctl: add support for poll() [http://git.kernel.org/linus/f1ecf06854a66ee663f4d4cf029c78cd62a15e04 (commit)]