I have a SMP system with 2 CPUs, and wish to assign all Linux functionality
(processes, threads, interrupts, etc)  to one CPU, and all Xenomai, RTnet
functionality to the other CPU.  Global solutions for isolating each domain
would be preferrable to walking lists of processes, threads, etc.

Initially, writing to /proc/xenomai/affinity appears to isolate all Xenomai
threads to the desired CPU.  (I haven't had an opportunity to test Xenomai
interrupts yet.)

Then I encountered difficulties when starting to isolate Linux processes,
threads.  Using the kernel boot option isolcpus=0 resulted in 49 out of 126
Linux processes running on CPU0.

Switching instead to boot option isolcpus=1 placed 11 out of 126 Linux
processes on CPU1, the remainder on CPU0  The processes running on CPU1 were
migration/1, ksoftirqd/1, watchdog/1, etc, so this may be the bare minimum
possible on CPU1.  I considered this "good enough".

Then I attempted to set Xenomai global affinity to CPU1:
echo 00000002 > /proc/xenomai/affinity
But running my Xenomai Posix skin application failed:
Xenomai Posix skin init: pthread_setschedparam: Invalid argument

Interestingly, switching Xenomai global affinity to CPU0 then succeeded:
echo 00000001 > /proc/xenomai/affinity
But my Xenomai threads then ran on CPU0 alongside the bulk of the Linux
processes.

I was able to assign all Linux interrupts to either CPU, without any
difficulties, by manipulating the IRQBALANCE_BANNED_CPUS environment for the
irqbalance daemon.

What is the best way to assign Linux to use one CPU, and Xenomai, RTnet to
use the other CPU?

my config:
x86 32-bit arch
linux-2.6.34.5
Xenomai-2.5.4
adeos-ipipe-2.6.34.5-x86-2.7-03.patch

TIA,
Jeff
_______________________________________________
Xenomai-help mailing list
Xenomai-help@gna.org
https://mail.gna.org/listinfo/xenomai-help

Reply via email to