All of lore.kernel.org
 help / color / mirror / Atom feed
From: Gilles Chanteperdrix <gilles.chanteperdrix@xenomai.org>
To: "Wolz, Troy" <Troy.Wolz@dynetics.com>
Cc: "xenomai@xenomai.org" <xenomai@xenomai.org>
Subject: Re: [Xenomai] RT_TASK affinity on more than 8 CPU's
Date: Fri, 20 Jul 2012 19:18:12 +0200	[thread overview]
Message-ID: <500992D4.30505@xenomai.org> (raw)
In-Reply-To: <E2AB2206BF591546A1931EA4E7A9FBC859BAFA22@Maui.in.dynetics.com>

On 07/16/2012 10:16 PM, Wolz, Troy wrote:
> Hello,
> 
> I'm working on a project where I'd like to start more than 8 RT_TASKs
> each affined to their own CPU. From looking at the documentation,
> using the native API it appears to be possible to set affinity to a
> CPU from 0 to RTHAL_NR_CPUS-1. On my machine, RTHAL_NR_CPUS is 255,
> but when setting affinity above 7, overflow occurs and only the lower
> 8 CPU's are used.
> 
> Looking into this, the T_CPU macro appears to only use the lower 3
> bits of the value passed to it, implying that T_CPU only allows up to
> 8 CPU's to be used. Tracing through the use of this mask, it appears
> that the mode mask passed into rt_task_create uses the top 8 bits of
> the word as the cpu mask. The bits following the top 8 are used for
> other flags, so there is no room to expand the cpu mask.
> 
> I see 2 solutions to this limitation for using Xenomai and affinity
> on more than 8 cpus. 1. Expand the 'mode' argument from a 32 bit int
> to a 64 bit long. With the extra bits, the top 32 bits could be used
> as a CPU mask, allowing for up to 32 cpu's to be masked
> simultaneously. This change would affect several files, but it should
> be backwards compatible with applications currently written using a
> 32 bit mode.
> 
> 2. Pass an additional 64 bit long argument to rt_task_create that
> only contains the affinity mask. In this case, the mode argument
> would be used the same as previously, except the affinity would be
> ignored. This option has the disadvantage of being incompatible with
> existing Xenomai applications, but it is very easy to set affinity
> for up to 64 cpu's. We could add a preprocessor define that selects
> whether the existing rt_task_create method is available or whether
> the new method is available.

Solution 3: use glibc API to change affinity:
sched_setaffinity or pthread_setaffinity.

Also note that Xenomai design being based on a "big kernel lock", it
will scale poorly with too many cpus.

-- 
                                                                Gilles.


  reply	other threads:[~2012-07-20 17:18 UTC|newest]

Thread overview: 19+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2012-07-16 20:16 [Xenomai] RT_TASK affinity on more than 8 CPU's Wolz, Troy
2012-07-20 17:18 ` Gilles Chanteperdrix [this message]
2012-07-21 18:13 ` Philippe Gerum
2012-07-21 19:21   ` Gilles Chanteperdrix
2012-07-22 14:15     ` Philippe Gerum
2012-07-22 14:29       ` Gilles Chanteperdrix
2012-07-22 14:42         ` Gilles Chanteperdrix
2012-07-23  7:47     ` Jan Kiszka
2012-07-23  8:08       ` Gilles Chanteperdrix
2012-07-23  8:40         ` Philippe Gerum
2012-07-23  8:57           ` Gilles Chanteperdrix
2012-07-23 10:02             ` Philippe Gerum
2012-07-23 10:41               ` Gilles Chanteperdrix
2012-07-23 10:57                 ` Philippe Gerum
2012-07-23 11:12                   ` Gilles Chanteperdrix
2012-07-24 15:20                   ` Gilles Chanteperdrix
2012-07-24 15:20                     ` Gilles Chanteperdrix
2012-07-25  9:48                       ` Gilles Chanteperdrix
2012-07-25  9:58                         ` [Xenomai] [I-PIPE] 3.4 update Philippe Gerum

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=500992D4.30505@xenomai.org \
    --to=gilles.chanteperdrix@xenomai.org \
    --cc=Troy.Wolz@dynetics.com \
    --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.