cpuset and affinity implementation
brooks at freebsd.org
Mon Feb 25 23:33:25 UTC 2008
On Sun, Feb 24, 2008 at 05:38:37PM -1000, Jeff Roberson wrote:
> 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
> 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?
-------------- next part --------------
A non-text attachment was scrubbed...
Name: not available
Size: 187 bytes
Desc: not available
Url : http://lists.freebsd.org/pipermail/freebsd-current/attachments/20080225/9dd0c3ae/attachment.pgp
More information about the freebsd-current