KernelNewbies:

Linux 2.6.36 released 20 October, 2010.

Summary: Linux 2.6.36 includes support for the Tilera architecture, a new filesystem notification interface called fanotify, a redesign of workqueues optimized for concurrency, CIFS local caching, support for Intel Intelligent Power Sharing in i3/5 systems, integration of the kernel debugger and KMS, inclusion of the AppArmor security system, fixes for desktop unresponsiveness in some cases and several new drivers and small improvements.

(Note: Details on architecture-specific and driver changes have been moved to this page: Linux_2_6_36-DriversArch)

1. Prominent features (the cool stuff)

1.1. Tilera architecture support

The Tile processor is a new cpu manufactured by Tilera Corporation. It's a multicore design intended to scale to hundreds of cores on a single chip. The goal is to provide a high-performance CPU, with good power efficiency, and with greater flexibility than special-purpose processors such as DSPs. The chip consists of a mesh network of 64 "tiles", where each tile houses a general purpose processor, cache, and a non-blocking router, which the tile uses to communicate with the other tiles on the processor.

Code: (commit), (commit)

1.2. Preliminary merge of fanotify, a new file notification interface

Recommended LWN article: Another new ABI for fanotify

(Note: the fanotify syscalls are disabled in this release because developers still don't agree with the API)

Fnotify is yet another filesystem notification interface, intended to supersede inotify and, obviously, dnotify (both have been rewritten on top of the fanotify engine). Fanotify bases notification on giving userspace both an event type (open, close, read, write) and an open read-only file descriptor to the object in question. This should address a number of races and scalability problems with inotify and dnotify and allows blocking or access controlled notification.

A code example can be found in this git repository. A description of the API can be found in the LWN article linked above and in the logs of the code commits.

Code: Far too many commits, but these ones have useful changelogs (commit 1, 2, 3, 4, 5, 6, 7)

1.3. KMS+KDB integration

In this release, it will be possible to activate the KDB kernel debugger (merged in the previous kernel release) while using your X.org desktop session. Pressing Sysrq-g will show the KDB console, and quitting KDB (using the "go" command) will return to your desktop again.

The KMS + KDB integration is only implemented for Intel chips, other chips will follow in the future. Instructions on how to compile the kernel to enable this functionality can be found here.

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

1.4. Concurrency-managed workqueues

Recommended LWN articles: Concurrency-managed workqueues and Working on workqueues

Workqueues are a "thread pool" that are used extensively across the kernel. This mechanism allows to queue calls to kernel functions to be run in the future. These queues can be run from a generic kernel thread dedicated to that function (that's what the "event/n" kernel processes are for), but it's also possible to create a dedicated kernel thread for a given driver of subsystem workqueue (that's what many of the other kernel threads are). The problem with this implementation is that the total number of kernel threads being used to run workqueues, and the queues being run on them, is not controlled in anyway. If there are more workqueues than CPUs being used at a given time, the kernel threads will compete (and context-switch heavily) between them.

In this version, workqueues have been reworked to add a true thread pool manager. There are not dedicated threads anymore (expect for the code that has not been converted to the new API), instead there is a pool of kernel threads that grows dynamically as needed to keep the system busy, depending on the number of queues accumulated. The new design is also able to replace the slow-work code (another thread pool used to run a certain kind of operations that traditional workqueues weren't able to run properly)

Code: 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44

1.5. Intel Intelligent Power Sharing support

Intel Core i3/5 platforms with integrated graphics support dynamic power sharing between the CPU and GPU, maximizing performance in a given TDP. A new driver driver, along with the CPU frequency and i915 drivers, provides that functionality. It monitorizes the GPU power and temperature and coordinate with a core thermal driver to take advantage of available thermal and power headroom in the package.

Code: (commit)

1.6. CIFS local caching

FS-Cache is a cache layer that allows filesystems to implement local caching. It was merged in 2.6.30 with support for NFS and AFS. In this release, CIFS adds FS-Cache support.

Code: (commit)

There are some cases where a desktop system could be really unresponsive while doing things such as writing to a very slow USB storage device and some memory pressure. This release includes a small patch that improves the VM heuristics to solve this problem.

Code: (commit)

1.8. OOM rewrite

Recommended LWN article: Another OOM killer rewrite

The Out of Memory Killer is the part of the VM that kills a process when there's no memory (both RAM and swap) left. The algorithm that decides what is the better process to be killed has been rewritten in this release and should make better decisions.

Code: (commit), (commit)

1.9. AppArmor

AppArmor is Mandatory Access Control (MAC) security system. It was originally developed by Immunix in 1998. It has been part of some Linux distros for a long time.

The key difference with SELinux is that SELinux applies security policies labeling to files, and AppArmor applies the policies to pathnames.

Code: (commit 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 13, 14)

2. Various core changes

3. Security

4. Filesystems

5. Networking

6. DM

7. Tracing/profiling

8. Block

9. Virtualization

KernelNewbies: Linux_2_6_36 (last edited 2017-12-30 01:30:29 by localhost)