Linked by JRepin on Mon 29th Apr 2013 09:24 UTC
Linux After ten weeks of development Linus Torvalds has announced the release of Linux kernel 3.9. The latest version of the kernel now has a device mapper target which allows a user to setup an SSD as a cache for hard disks to boost disk performance under load. There's also kernel support for multiple processes waiting for requests on the same port, a feature which will allow it to distribute server work better across multiple CPU cores. KVM virtualisation is now available on ARM processors and RAID 5 and 6 support has been added to Btrfs's existing RAID 0 and 1 handling. Linux 3.9 also has a number of new and improved drivers which means the kernel now supports the graphics cores in AMD's next generation of APUs and also works with the high-speed 802.11ac Wi-Fi chips which will likely appear in Intel's next mobile platform. Read more about new features in What's new in Linux 3.9.
Permalink for comment 560169
To read all comments associated with this story, please click here.
RE[7]: Load of works there
by Brendan on Tue 30th Apr 2013 17:41 UTC in reply to "RE[6]: Load of works there"
Brendan
Member since:
2005-11-16

Hi,

Userspace/Kernel context switches used to be much more expensive, so that may have been a historical factor in microkernels pulling ahead. As CPUs have evolved, this should eliminate the original monolithic kernel motivation, but it's stuck around because alternatives have been marginalized in the market.

http://kerneltrap.org/node/531
(Anyone having more recent benchmarks?)


It's not the context switches between user space and kernel that hurt micro-kernels; it's context switches between processes (e.g. drivers, etc).

But it's not really the context switches between processes that hurt micro-kernels; it's the way that synchronous IPC requires so many of these context switches. E.g. sender blocks (causing task switch to receiver) then receiver replies (causing task switch back).

But it's not really the IPC that hurts micro-kernels; it's APIs that are designed to require "synchronous behaviour". If the APIs were different you could use asynchronous messaging (e.g. where a message gets put onto the receiver's queue without requiring any task switching, and task switches don't occur as frequently).

But it's not really the APIs that are the problem (it's easy to implement completely different APIs); it's existing software (applications, etc) that are designed to expect the "synchronous behaviour" from things like the standard C library functions.

To fix that problem; you'd have to design libraries, APIs, etc to suit; and redesign/rewrite all applications to use those new libraries, APIs, etc.

Of course this is a lot of work - it's no surprise that a lot of micro-kernels (Minix, L4, Hurd) failed to try. The end result is benchmarks that say applications that use APIs/libraries designed for monolithic kernels perform better when run on the monolithic kernels (and perform worse on "micro-kernel trying to pretend to be monolithic").

- Brendan

Edited 2013-04-30 17:42 UTC

Reply Parent Score: 2