Hi all,
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.
--
Regards,
Sri.
Hi :)
On Sat, Feb 5, 2011 at 00:11, Sri Ram Vemulpali [off-list ref] wrote:
Hi all,
? ?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.
AFAIK, forked process (or thread) initially inherit the affinity
property of the parent process. As for thread, I think kernel will
make as long as possible (or maybe forbid) the thread to have
different affinity. The reason could be to avoid too many cache
invalidation / ping pong between cores.
--
regards,
Mulyadi Santosa
Freelance Linux trainer and consultant
blog: the-hydra.blogspot.com
training: mulyaditraining.blogspot.com