From: Arnout Vandecappelle <arnout@mind.be>
To: Gilles Chanteperdrix <gilles.chanteperdrix@xenomai.org>
Cc: xenomai@xenomai.org
Subject: Re: [Xenomai] Native skin rt_task_create/rt_task_shadow doesn't inherit affinity
Date: Wed, 17 Oct 2012 18:33:53 +0200 [thread overview]
Message-ID: <507EDDF1.8090904@mind.be> (raw)
In-Reply-To: <507EAE5E.5060200@xenomai.org>
On 17/10/12 15:10, Gilles Chanteperdrix wrote:
> On 10/17/2012 03:02 PM, Arnout Vandecappelle wrote:
>> On 17/10/12 14:32, Gilles Chanteperdrix wrote:
>>> On 10/17/2012 01:28 PM, Arnout Vandecappelle wrote:
[snip]
>>>> and also rt_task_create() looks only at the mode parameter and ignores
>>>> the parent thread's affinity.
>>>
>>> That does not look like an issue. Why should a task inherit its parent's
>>> affinity.
>>
>> I don't know if it should - it's not specified in the documentation. But
>> it is how posix threads behave.
>
> Ok. That is an argument. But if an affinity is specified by the mode
> argument, it should override the parent's affinity.
OK. Would you like me to refresh my patch?
[snip]
>>>> Note, by the way, that calling sched_setaffinity _after_ the task has started
>>>> _will_ change the affinity (cfr. switchtest), but any calls _before_ the task
>>>> has started are ignored.
>>>
>>> Well, if the thread is not created, how sched_setaffinity change its
>>> affinity?
>>
>> The (shadow) thread is created, but with a different cpuset than the
>> Linux thread. Or rather, the cpuset is changed by shadowing the thread.
>
> Ok, misunderstanding again, for me, when you say "before the task has
> started" clearly means that you are talking about a task created with
> rt_task_create.
Yes, that's what I mean.
When you do:
CPU_SET(1, &cpuset);
sched_setaffinity(0, sizeof(cpuset), &cpuset);
rt_task_shadow(&task, "test", 99, 0);
then rt_task_shadow will migrate the thread from cpu 1 to cpu 0,
so it migrates twice overall (assuming Linux had started it on cpu 0).
When you do:
rt_task_shadow(&task, "test", 99, 0);
CPU_SET(1, &cpuset);
sched_setaffinity(0, sizeof(cpuset), &cpuset);
then sched_setaffinity will migrate the thread from cpu 0 to cpu 1.
My point was that it seems inconsistent that it makes a difference
in which order you shadow the task and you specify which cpu it should
run on.
Alternatively, you could document in rt_task_shadow that it will
implicitly migrate to the lowest CPU (even if that's not the one we're
currently executing on).
Regards,
Arnout
--
Arnout Vandecappelle arnout at mind be
Senior Embedded Software Architect +32-16-286540
Essensium/Mind http://www.mind.be
G.Geenslaan 9, 3001 Leuven, Belgium BE 872 984 063 RPR Leuven
LinkedIn profile: http://www.linkedin.com/in/arnoutvandecappelle
GPG fingerprint: 7CB5 E4CC 6C2E EFD4 6E3D A754 F963 ECAB 2450 2F1F
next prev parent reply other threads:[~2012-10-17 16:33 UTC|newest]
Thread overview: 7+ messages / expand[flat|nested] mbox.gz Atom feed top
2012-10-17 11:28 [Xenomai] Native skin rt_task_create/rt_task_shadow doesn't inherit affinity Arnout Vandecappelle
2012-10-17 12:32 ` Gilles Chanteperdrix
2012-10-17 13:02 ` Arnout Vandecappelle
2012-10-17 13:10 ` Gilles Chanteperdrix
2012-10-17 16:33 ` Arnout Vandecappelle [this message]
2012-10-17 19:59 ` Gilles Chanteperdrix
2012-10-17 22:02 ` Arnout Vandecappelle
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=507EDDF1.8090904@mind.be \
--to=arnout@mind.be \
--cc=gilles.chanteperdrix@xenomai.org \
--cc=xenomai@xenomai.org \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.