Re: getaffinity/setaffinity and cpu sets.



On Thu, Feb 21, 2008 at 01:39:42PM -1000, Jeff Roberson wrote:

On Thu, 21 Feb 2008, Ceri Davies wrote:

On Thu, Feb 21, 2008 at 09:27:41AM +0000, Robert Watson wrote:

- You don't mention what happens if a process's cpu set changes to preclude a
CPU the process has a thread with affinity for. Online, you suggested
SIGKILL, and I thought maybe a new SIGCPUGONE with a default SIGKILL action
might be a friendlier model. We should see what Solaris and others do here
though. I like the idea that the affinity is a guarantee in userspace
because it means that you can rely on it; I'm OK with the idea that your
thread always runs on the CPUs you have affinity for unless in the
SIGCPUGONE handler :-).

If a processor set disappears from under a process on Solaris, the
process gets moved to the "default" set (or, in other words, they aren't
in a set any more).

Yes, that's ok, but what if the process has requested a specific cpu that
it's now no longer allowed to access? The sets are seperate from the
thread's specific requested binding. If the thread binds to a specific
processor within the set and the set disappears what should we do? What if
that process was relying on the binding to access cpu specific features
such as tsc? Allowing it to migrate could then break the code.

OK, I was talking about processor sets; in Solaris, binding to a set
(pset_bind()) and binding to a specific processor (processor_bind()) are
different operations.

A processor that has LWPs bound to it specifically (with processor_bind())
may not be taken offline or marked as spare, unless the operation is forced,
whereupon forcing removes the binding. Since this is an administrative
choice, it's acceptable.

Ceri
--
That must be wonderful! I don't understand it at all.
-- Moliere

Attachment: pgp2plJOFAf9l.pgp
Description: PGP signature



Relevant Pages

  • Re: getaffinity/setaffinity and cpu sets.
    ... CPU the process has a thread with affinity for. ... SIGKILL, and I thought maybe a new SIGCPUGONE with a default SIGKILL action ... The sets are seperate from the thread's specific requested binding. ...
    (freebsd-arch)
  • Re: [Lse-tech] [PATCH] cpusets - big numa cpu and memory placement
    ... > replacement/modification to the CPU affinity mechanism basically adding ... > affinity mask). ... Then when you want to do something like take a CPU away ...
    (Linux-Kernel)
  • Re: How to bind a POSIX thread to a specific CPU?
    ... On a uniprocessor or traditional SMP system there's only one ... This clarifies the general idea behind a RAD and is a good starting ... > threads for access to that CPU, but you're unable to use another that's ... There ARE cases where binding is useful or even ...
    (comp.unix.tru64)
  • Re: 2.6.11-mm2
    ... Can cpu affinity really be changed for a running process? ... It works fine to bound a new process to a cpu set, ... pid 8277's current affinity list: ...
    (Linux-Kernel)
  • Re: Linux compatible setaffinity.
    ... int cpuaffinity; ... Get or set affinity and fetch from or store into mask. ... If pid is specified on set all threads in the pid are set to the requested affinity. ... I can implement them in 4BSD but it will be very inefficient in some edge cases since each cpu doesn't have its own run queue. ...
    (freebsd-arch)