Linux Kernel 3.14 Release

So we had a few fairly late changes that I could have done without, but the changelog from -rc8 is still pretty small, and I’m feeling pretty good about it all. If we did end up with any last-minute problems due to the final spurt of patches, they’ll be pretty specific, and it really didn’t make sense to me to delay the release without anything known pending. Much of the final spurt were either marked for stable or known regressions.

So 3.14 is out there, and the merge window for 3.15 is thus open. Please do spend the time to test out 3.14, though, even if you might otherwise be in a hurry to send me your pending queue for the next release.

Deadline scheduling class for better real-time scheduling – In Linux, users usually set scheduling priorities from a value of -20 to 19 using the nice(2) tool. The approach of process priorities is, however, not well suited for real-time tasks. Evidence Srl and the ReTiS Lab have created an alternative designed around real time concepts: deadline scheduling, implemented as a new scheduling policy, SCHED_DEADLINE. Processes provide three parameters: runtime, period, and deadline. A SCHED_DEADLINE task is guaranteed to receive “runtime” microseconds of execution time every “period” microseconds, and these “runtime” microseconds are available within “deadline” microseconds from the beginning of the period. The task scheduler uses that information to run the process with the earliest deadline, a behavior closer to the requirements needed by real-time systems. For more details about the scheduling algorithms, read the documentation, and you could also read SCHED_DEADLINE on Wikipedia

zram: Memory compression mechanism considered stable – zram provides RAM block devices. Everything written to these block devices gets compressed. If zram block devices are used as swap, the system will be effectively compressing the memory it tries to swap. This effetively works as a cheap memory compression mechanism to improve reponsiveness in systems with limited amounts of memory. Zram is being used by TV companies, Android 4.4, Cyanogenmod, Chrome OS, Lubuntu… In this release, zram has been moved out of staging to drivers/block/zram.

Btrfs: inode properties – This release adds infrastructure to attach name/value pairs to inodes as xattrs. The purpose of these pairs is to store properties for inodes, such as compression. These properties can be inherited, this means when a directory inode has inheritable properties set, these are added to new inodes created under that directory. Subvolumes can also have properties associated with them, and they can be inherited from their parent subvolume. This release adds one specific property implementation, named “compression”, whose values can be “lzo” or “zlib” and it’s an inheritable property.

Trigger support for tracing events – The tracing infastructure in the Linux kernel allows to easily register probe functions as events. This release allows these events to conditionally trigger “commands”, which can take various forms. Any given trigger can additionally have an event filter, the command will only be invoked if the event being invoked passes the associated filter. For further details read Section 6 in Documentation/trace/events.txt. You may also want to read Triggers for tracing article on LWN.net.

Userspace probes access to all arguments – Userspace probes are a Linux 3.5 feature that allows to set tracing probes in userspace programs at runtime. This release enables to fetch other types of argument for the uprobes: memory, stack, deference, bitfield, retval and file offset. For more details see here.

Userspace locking validator – The Linux kernel has a lock validator that can find locking issues at runtime. This release makes possible to run the Linux locking validator in userspace, making possible to debug locking issues in userspace programs. For more details, see User-space lockdep.

Kernel address space randomization – This release allows to randomize the physical and virtual address at which the kernel image is decompressed, as a security feature that deters exploit attempts relying on knowledge of the location of kernel internals. Kernel address space layout randomization

TCP automatic corking – When applications do consecutive small write()/sendmsg() system calls, the Linux kernel will try to coalesce these small writes as much as possible, to lower total amount of sent packets – this feature is called “automatic corking”. Automatic corking is done if at least one prior packet for the flow is waiting in Qdisc queues or device transmit queue. Applications can still use TCP_CORK for optimal behavior when they know how/when to uncork their sockets. A new sysctl (/proc/sys/net/ipv4/tcp_autocorking) has been added to control this feature, which defaults to enabled. Check the commit link for benchmarks and more details.

Antibufferbloat: “Proportional Integral controller Enhanced” packet scheduler – Bufferbloat is a phenomenon where excess buffers in the network cause high latency and jitter, and degrade application performance. The Linux kernel network stack has received several improvements that try to address this problem. This release adds a new network packet scheduler called PIE (Proportional Integral controller Enhanced) that can effectively control the average queueing latency to a target value. Simulation and testing have shown that PIE can ensure low latency and achieve high link utilization under various congestion situations. You may want to read a paper about PIE from the IEEE Conference on High Performance Switching and Routing 2013 for more technical details.. There’s also an IETF draft submission. All relevant code, documents and test scripts and results can be found at ftp://ftpeng.cisco.com/pie/.