Hi,
we are using Genode on Fiasco.OC and want to use different Scheduler for different CPU-Cores. Is there a way to assign a Scheduler to a CPU-Core in Genode?
Thank you Stefan Edinger
Hello Stefan,
welcome to the mailing list!
we are using Genode on Fiasco.OC and want to use different Scheduler for different CPU-Cores.
Is there a way to assign a Scheduler to a CPU-Core in Genode?
I have never heard of such a feature in Fiasco.OC. If it exists, Genode does not provide any way to access it.
Right now, Genode provides the following scheduling-related mechanisms:
* At the creation time of a CPU session, the CPU session's static priority can be assigned. This priority is propagated as scheduling parameter to the kernel whenever a thread is created. On base-hw, CPU sessions can be further equipped with quotas, which allows proportional-share scheduling.
* It is possible to define the affinity space per CPU session, i.e., to make a subset of physical CPUs available to a CPU session.
* It is possible to define the affinity of an individual thread to a CPU within the affinity space of the thread's CPU session.
Genode leaves the the actual thread scheduling to the underlying kernel. Most L4 kernels (including Fiasco.OC) implement a simple round-robin scheduler with static priorities. Our custom base-hw kernel employs a more flexible scheduler, which is described in Section 7.6.7. "Scheduler of the base-hw kernel" of the Genode Foundations book [1]. But also base-hw simply uses the same scheduling algorithm on each CPU.
Could you provide a tangible example of using a variety of scheduling algorithms on different CPUs?
[1] http://genode.org/documentation/genode-foundations-16-05.pdf
Best regards Norman
Hello Norman,
thank you for the quick reply. Stefan and I try to realize a mixed-critical system, where different cores are classified in either high or low (e.g. brake and navigation).
So, we want to employ a fixed-prio scheduling scheme on the high cores and an edf scheduling scheme on the low cores. Both cores reside on the same CPU (e.g. PandaBoard).
Maybe it is the wrong approach, is there any other possibility to realize this behaviour?
Best regards Daniel
On 05.09.2016 12:04, Norman Feske wrote:
Hello Stefan,
welcome to the mailing list!
we are using Genode on Fiasco.OC and want to use different Scheduler for different CPU-Cores.
Is there a way to assign a Scheduler to a CPU-Core in Genode?
I have never heard of such a feature in Fiasco.OC. If it exists, Genode does not provide any way to access it.
Right now, Genode provides the following scheduling-related mechanisms:
At the creation time of a CPU session, the CPU session's static priority can be assigned. This priority is propagated as scheduling parameter to the kernel whenever a thread is created. On base-hw, CPU sessions can be further equipped with quotas, which allows proportional-share scheduling.
It is possible to define the affinity space per CPU session, i.e., to make a subset of physical CPUs available to a CPU session.
It is possible to define the affinity of an individual thread to a CPU within the affinity space of the thread's CPU session.
Genode leaves the the actual thread scheduling to the underlying kernel. Most L4 kernels (including Fiasco.OC) implement a simple round-robin scheduler with static priorities. Our custom base-hw kernel employs a more flexible scheduler, which is described in Section 7.6.7. "Scheduler of the base-hw kernel" of the Genode Foundations book [1]. But also base-hw simply uses the same scheduling algorithm on each CPU.
Could you provide a tangible example of using a variety of scheduling algorithms on different CPUs?
[1] http://genode.org/documentation/genode-foundations-16-05.pdf
Best regards Norman