Linux 3.15 has been released on Sun, 8 Jun

Summary: This release resumes much faster in systems with hard disks, it adds support for cross-renaming two files atomically, it adds new fallocate(2) modes that allow to remove the range of a file or set it to zero, it adds a new file locking API, the memory management adapts better to working set size changes, it improves FUSE write performance, it adds support for the LZ4 algorithm in zram, it allows to load 64-bit kernels from 32-bit EFI firmware, it adds support for AVX-512 vector instructions that will be added in upcoming Intel CPUs, and it adds new drivers and many other small improvements.

1. Prominent features

1.1. Faster resume from power suspend in systems with hard disk drives

Resuming a system from suspend used to take a long time in systems with traditional hard disk drives, because the system blocks the resume process until the hard disk drive finish powering up. In this release, commands are sent to the hard disk asynchronously, so the entire resuming process isn't paused by the hard disk. The end result is that systems with hard disks will resume several seconds faster with this Linux release.

For more details, see this blog entry

Code: commit 1, 2

1.2. Improved working set size detection

When there is not enough room for all memory in RAM, the Linux kernel is in charge of deciding which memory must be kept in RAM, and which must be sent to swap or discarded. In order to make good decisions, it is necessary to track which memory is most used and deserves to be kept in RAM, and which memory is not used often and can be evicted. The way the Linux kernel does this is by keeping an "inactive" and "active" list, when some data needs to be moved to RAM its memory is marked as active. As more and more memory gets used, the active list gets filled and the less used memory is moved to the inactive list.

The problem with this algorithm is to know how big must be each list. Linux used to have a policy of not allowing the active list to grow larger than the inactive, but this approach caused problems. In this release, Linux does more advanced tracking of how memory gets used and can balance better the size of the lists, which makes Linux perform better in certain workloads, adapt better to workload size changes, and creates a foundation to build improved policies in the future.

For more details, read this recommended link: Better active/inactive list balancing

commit 1, 2, 3, 4, 5

1.3. EFI 64-bit kernels can be booted from 32-bit firmware

Most modern x86 CPUs are 64-bit, but many modern systems ship with a 32-bit EFI implementation. This didn't allow to boot a Linux 64-bit EFI kernel from these 32-bit EFI systems. This limitation has been removed, a 64-bit kernel can be booted on 32-bit firmware that runs on 64-bit CPUs (note that it is not possible to boot a mixed-mode enabled kernel via the EFI boot stub - a bootloader that supports the EFI handover protocol must be used)

Code: commit 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11

1.4. New file locking scheme: open file description locks

Due to some unfortunate history, POSIX locks have very strange and unhelpful semantics: they are dropped whenever the process closes any file descriptor associated with the inode, and locks taken between threads within the same process won't conflict with one another, which renders them useless for synchronization between threads.

This release adds a new type of lock that attempts to address these issues: open file description locks (initially called "file-private locks"). These locks will conflict with classic POSIX read/write locks, but have semantics that are more like BSD locks with respect to inheritance and lock release when closing a file descriptor.

For more documentation and details about the new locking API, read this recommended LWN link: File-private POSIX locks

Code: commit

1.5. Faster erasing and zeroing of parts of a file

This release adds two new fallocate(2) mode flags:

In this release, only XFS and ext4 have added support for these new flags, other filesystems will follow in the future.

For more details, read this LWN article: Finding the proper scope of a file collapse operation

Code: commit 1, 2, 3, 4, 5, 6

1.6. File cross-renaming support

This release adds cross-rename, a variant of rename which exchanges the two files. This allows interesting use cases which were not possible before, for example atomically replacing a directory tree with a symlink. It also allows overlayfs and friends to operate on whiteouts atomically.

For more details, read this LWN article: Exchanging two files

Code: commit, commit, commit

1.7. zram: LZ4 compression support, improved performance

Zram is a memory compression mechanism added in Linux 3.14 that is used in Android, Cyanogenmod, Chrome OS, Lubuntu and other projects. In this release zram brings support for the LZ4 compression algorithm, which is better than the current available LZO in some cases.

This release also adds performance improvements to concurrent compression of multiple compression streams, and the ability to switch the compression algorithm in /sys/block/zram0/comp_algorithm

Code: commit 1, 2, 3, 4

1.8. Intel AVX-512 vector instructions support

AVX-512 are 512-bit extensions to the 256-bit Advanced Vector Extensions SIMD instructions for x86 instruction set architecture proposed by Intel, and scheduled to be supported in 2015 with Intel's Knights Landing processor.

For more details about these extensions, read the documentation.

Code: commit

1.9. FUSE: improved write performance

FUSE can now use cached writeback support to fuse, which improves write throughput.

Code: commit

2. Drivers and architectures

All the driver and architecture-specific changes can be found in the Linux_3.15-DriversArch page

3. Core

4. Memory management

1b93d471bca002bd849 commit]

5. Power management

6. Block layer

7. File systems

8. Networking

9. Virtualization

10. Security

11. Crypto

12. Tracing/perf

13. Other news sites that track the changes of this release

KernelNewbies: Linux_3.15 (last edited 2017-12-30 01:30:14 by localhost)