Following patch series extends CPU isolation support. Yes, most people want to 
virtuallize 
CPUs these days and I want to isolate them :).
The primary idea here is to be able to use some CPU cores as dedicated engines 
for running
user-space code with minimal kernel overhead/intervention, think of it as an 
SPE in the 
Cell processor.

We've had scheduler support for CPU isolation ever since O(1) scheduler went 
it. 
I'd like to extend it further to avoid kernel activity on those CPUs as much as 
possible.
In fact that the primary distinction that I'm making between say "CPU sets" and 
"CPU isolation". "CPU sets" let you manage user-space load while "CPU 
isolation" provides
a way to isolate a CPU as much as possible (including kernel activities).

I'm personally using this for hard realtime purposes. With CPU isolation it's 
very easy to 
achieve single digit usec worst case and around 200 nsec average response times 
on off-the-shelf
multi- processor/core systems under exteme system load. I'm working with legal 
folks on releasing 
hard RT user-space framework for that.
I can also see other application like simulators and stuff that can benefit 
from this.

I've been maintaining this stuff since around 2.6.18 and it's been running in 
production
environment for a couple of years now. It's been tested on all kinds of 
machines, from NUMA
boxes like HP xw9300/9400 to tiny uTCA boards like Mercury AXA110.
The messiest part used to be SLAB garbage collector changes. With the new SLUB 
all that mess 
goes away (ie no changes necessary). Also CFS seems to handle CPU hotplug much 
better than O(1) 
did (ie domains are recomputed dynamically) so that isolation can be done at 
any time (via sysfs). 
So this seems like a good time to merge. 

Anyway. The patchset consist of 5 patches. First three are very simple and 
non-controversial.
They simply make "CPU isolation" a configurable feature, export 
cpu_isolated_map and provide
some helper functions to access it (just like cpu_online() and friends).
Last two patches add support for isolating CPUs from running workqueus and stop 
machine.
More details in the individual patch descriptions.

Ideally I'd like all of this to go in during this merge window. If people think 
it's acceptable 
Linus or Andrew (or whoever is more appropriate Ingo maybe) can pull this patch 
set from
        git://git.kernel.org/pub/scm/linux/kernel/git/maxk/cpuisol-2.6.git

That tree is rebased against latest (as of yesterday) Linus' tree.

Thanx
Max

 arch/x86/Kconfig                  |    1 
 arch/x86/kernel/genapic_flat_64.c |    5 ++--
 drivers/base/cpu.c                |   47 ++++++++++++++++++++++++++++++++++++++
 include/linux/cpumask.h           |    3 ++
 kernel/Kconfig.cpuisol            |   25 +++++++++++++++++++-
 kernel/sched.c                    |   13 ++++++----
 kernel/stop_machine.c             |    3 --
 kernel/workqueue.c                |   31 ++++++++++++++++++-------
 8 files changed, 110 insertions(+), 18 deletions(-)
--
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to [EMAIL PROTECTED]
More majordomo info at  http://vger.kernel.org/majordomo-info.html
Please read the FAQ at  http://www.tux.org/lkml/

Reply via email to