Linux 3.5 Release
Linus Torvalds has announced the release of Linux Kernel 3.5:
Subject: Linux 3.5 released
Ok, not a lot happened since -rc7.
There’s a number of MIPS commits (for some reason MIPS has had a horrible track record with the -rc time schedule, I suspect I should just stop pulling late in the game), but most of the rest is pretty small. A couple of dm/md fixes, some gma500 work, make kgdb ‘dmesg’ command work again, some networking fixes, some xfs and cifs noise, yadda yadda. About 50% of the patch is actually the SPEAr clock name renaming that is just some search-and-replace.
Linux 3.4 brought updates to Btrfs file system, some new Intel, AMD and NVidia GPU drivers, X32 ABI, perf tool improvements and support for Yama security module and QNX6 file system.
Linux 3.5 brings the following key changes:
- ext4 metadata checksums: Ext4 has added the ability to store checksums of various metadata fields, which allows to check if metadata is corrupted. If your system uses ext4, you can enable checksums with “tune2fs -O metadata_csum” command, or “mkfs -O metadata_csum” at creation time. This will may the file system more resilient to error, and for most tasks there is no performance degradation, but a 20 pecent drop was noticed doing a file creation/deletion only test.
Details and benchmarks can be found on Ext4 Metadata checksums page.
- Uprobes: userspace probes: Uprobes, the user-space counterpart of kprobes, enables to place performance probes in any memory address of a user application, and collect debugging and performance information non-disruptively. The probes are usually managed with a instrumentation application, such as perf probe, systemtap or LTTng.
Here’s an example of using with malloc (1 second test):
12$ perf probe -x /lib64/libc.so.6 malloc Added new event: probe_libc:malloc (on 0x7eac0)$ perf record -e probe_libc:malloc -agR sleep 1
You can watch the results with the TUI interface doing “$ perf report”, or watch a plain text output without the call graph info in the stdio output with “$ perf report -g flat –stdio”.
Some more details are available in LWN article: Uprobes in 3.5
- Seccomp-based system call filtering: Seccomp (alias for “secure computing”) is a simple sandboxing mechanism that allows to transition to a state where it cannot make any system calls except a very restricted set (exit, sigreturn, read and write to already open file descriptors). Seccomp has now been extended to allow processes to specify an arbitrary filter of system calls that should be forbidden.
Read the documentation and have a look at samples for further information.
- Bufferbloat fighting: CoDel queue management: Codel (alias for “controlled delay”) is a new queue management algorithm designed to fight the problems associated to excessive buffering across an entire network path (“bufferbloat”). Codel bufferbloat project page: http://www.bufferbloat.net/projects/codel/wiki
- TCP connection repair: Linux adds support for stopping a TCP connection and restarting it in another host. This feature can be used to relocate a entire network connection from one host to another transparently for the remote end by putting the socket in a “repair” mode that allows to gather the necessary information or restore previous state into a new socket. The documentation is available at http://criu.org/TCP_connection
- TCP Early Retransmit: TCP (and STCP) Early Retransmit (RFC 5827) allows to trigger fast retransmit, in certain conditions, to reduce the number of duplicate acknowledgments required to trigger a fast retransmission.This allows connections to recover from lost packets faster and improves latency.
Early retransmit is enabled with the tcp_early_retrans sysctl, found at /proc/sys/net/ipv4/tcp_early_retrans. It accepts three values:
- “0” – Disables early retransmit
- “1” – Enables early retransmit
- “2” – Enables early retransmit but delays fast recovery and fast retransmit by a fourth of the RTT (default)
- Android-style opportunistic suspend: The Android code has a functionality called “suspend blockers” (aka “wakelocks”) . Thoe are part of a specific approach to power management, which is based on aggressive utilization of full system suspend as much as possible. After apparently, a lot of internal fight, the mainline kernel now incorporates a similar functionality, called “autosleep and wake locks”. It is expected that Android will be able to use it, and merging drivers from Android devices will be easier.Read LWN article Autosleep and wake locks for details.
- Btrfs: I/O failure statistics, latency improvements: Support for I/O failure statistics has been added. I/O errors, CRC errors, and generation checks of metadata blocks are tracked for each drive. The Btrfs command to retrieve and print the device stats, to be included in future btrfs-progs, should be “btrfs device stats”.
- SCSI over FireWire and USB:This release includes a driver for using an IEEE-1394 connection as a SCSI transport. This enables to expose SCSI devices to other nodes on the Firewire bus (e.g. hard drives) in a similar way to Firewire Target Disk Mode on many Apple computers. There is also a usb-gadget driver that does the same with USB, and supports 2 USB protocols:
- BBB or BOT (Bulk Only Transport) advertised on alternative interface 0 (primary)
- UAS (USB Attached SCSI) advertised on alternative interface 1.
Both protocols can work on USB 2.0 and USB 3.0. UAS utilizes the USB 3.0 feature called streams support.
Further details on Linux 3.5 are available on Kernelnewbies.org.