Re: cpuset and affinity implementation

From: Brooks Davis <brooks_at_freebsd.org>
Date: Mon, 25 Feb 2008 17:33:15 -0600
On Sun, Feb 24, 2008 at 05:38:37PM -1000, Jeff Roberson wrote:
> Hello,
> 
> I have implemented a new api similar to processors sets on solaris.  This 
> allows you to assign processes to sets of cpus and dynamically change those 
> sets.  This is useful for provisioning purposes to add and remove cpu 
> resources for a particular process or group of processes.  This new 
> facility also supports binding secific threads to specific cpus which some 
> applications may want to do.  At some point in the future this will be 
> integrated with jail so you can restrict the cpus any jail is allowed to 
> use.
> 
> This api should not be considered final and the 'cpuset' tool is quite 
> rough.  This also only works with ULE and is unfortunately intertwined with 
> a big ULE patch I've been working on.  The set management code is generic 
> but 4BSD doesn't contain the hooks to actually constrain threads.

I took a look at the patch this morning.  The API looks like it's
capable of doing what I need, at least at a first pass.  It looks like I
should be able to implement the semantics currently employed by the Sun
Grid Engine scheduler on Irix systems.

The one thing I noticed that I found worrying was the recursion in
cpuset_(test)update().  It wasn't immediately clear to me there there
is anything to would prevent an arbitrarily deep hierarchy from being
created and blowing the kernel stack.  I'm I missing something?

-- Brooks

Received on Mon Feb 25 2008 - 22:33:25 UTC

This archive was generated by hypermail 2.4.0 : Wed May 19 2021 - 11:39:28 UTC