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 <cl@linux.com> wrote:
On Fri, 4 Feb 2011, Sri Ram Vemulpali wrote:
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.
participants (1)
-
Sri Ram Vemulpali