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. _______________________________________________ Xenomai mailing list Xenomai@xenomai.org http://www.xenomai.org/mailman/listinfo/xenomai