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