Thread Affinity structure
From: Sri Ram Vemulpali <hidden>
Date: 2011-02-04 20:05:47
Also in:
lkml
Hi Christoph, Thanks for response. Can you please explain in little bit elaborate what do you mean "The value returned ?from a call to gettid(2) can be passed in the argument pid. ?Specifying pid as 0 will set the attribute for the calling thread, and passing the value returned from a call to getpid(2) will set the attribute for the main thread of the thread group." To whom I should pass the id. I did not understood. Thanks, Sri. On Fri, Feb 4, 2011 at 2:29 PM, Christoph Lameter [off-list ref] wrote:
On Fri, 4 Feb 2011, Sri Ram Vemulpali wrote:quoted
? ? I have doubt regarding how the thread affinity (to processor) is defined in a process (task). If there is only single thread in a process, then when process calls itself on binding to a core, will let run on that core forever. But, what if there are multiple threads, in a process (task). If the main thread calls set affinity to a core, is it going to get inherited to all other threads, or just the calling thread in a task. What happens when forked a process with threads that has affinity to a core. Please can anyone point me to the literature on this. Thanks in advance.See "man sched_setaffinity" " The affinity mask is actually a per-thread attribute that can be adjusted independently for each of the threads in a thread group. ?The value returned ?from a call to gettid(2) can be passed in the argument pid. ?Specifying pid as 0 will set the attribute for the calling thread, and passing the value returned from a call to getpid(2) will set the attribute for the main thread of the thread group. ?(If you ?are ?using the ?POSIX threads API, then use pthread_setaffinity_np(3) instead of sched_setaffinity().) " The setting of the affinity occurs for the running thread if pid == 0. Affinity masks are inherited across forks.
-- Regards, Sri.