Hi,
is it possible to have partitioned scheduling in the way that one can use different schedulers for different cpu-cores? And if yes, can I do the mapping from scheduler to core on runtime or is it done at compile time?
Thanks,
Stefan
Hi,
On Sun Aug 28, 2016 at 18:17:24 +0000, Edinger, Stefan wrote:
is it possible to have partitioned scheduling in the way that one can use different schedulers for different cpu-cores?
No, there's just one scheduler in the kernel, for all cores. However, given that scheduling is core-local only, cores could principally also have different schedulers.
And if yes, can I do the mapping from scheduler to core on runtime or is it done at compile time?
Adam
Hi,
How does Fiasco.OC manage its Cores ? Is it possible to execute more than one SchedContext on a multi-core CPU?
Thank You, Stefan Edinger
-----Ursprüngliche Nachricht----- Von: Adam Lackorzynski [mailto:adam@os.inf.tu-dresden.de] Gesendet: Montag, 29. August 2016 23:03 An: Edinger, Stefan Cc: l4-hackers@os.inf.tu-dresden.de Betreff: Re: Partitioned Scheduling
Hi,
On Sun Aug 28, 2016 at 18:17:24 +0000, Edinger, Stefan wrote:
is it possible to have partitioned scheduling in the way that one can use different schedulers for different cpu-cores?
No, there's just one scheduler in the kernel, for all cores. However, given that scheduling is core-local only, cores could principally also have different schedulers.
And if yes, can I do the mapping from scheduler to core on runtime or is it done at compile time?
Adam
On Fri Sep 02, 2016 at 20:03:01 +0000, Edinger, Stefan wrote:
How does Fiasco.OC manage its Cores ? Is it possible to execute more than one SchedContext on a multi-core CPU?
Each core runs its own scheduler and the schedulers are independent of each other. Thus they run in parallel and process Schedcontexts on their own.
Adam
-----Ursprüngliche Nachricht----- Von: Adam Lackorzynski [mailto:adam@os.inf.tu-dresden.de] Gesendet: Montag, 29. August 2016 23:03 An: Edinger, Stefan Cc: l4-hackers@os.inf.tu-dresden.de Betreff: Re: Partitioned Scheduling
Hi,
On Sun Aug 28, 2016 at 18:17:24 +0000, Edinger, Stefan wrote:
is it possible to have partitioned scheduling in the way that one can use different schedulers for different cpu-cores?
No, there's just one scheduler in the kernel, for all cores. However, given that scheduling is core-local only, cores could principally also have different schedulers.
And if yes, can I do the mapping from scheduler to core on runtime or is it done at compile time?
Hi,
if I understand it right, there is only one scheduler in the kernel realizing one distinct scheduling strategy (e.g. fixed prio). However, given a multi-core system, several (all) cores are using *this* strategy in an independent core-local style. I'm right?
So, the questions are:
- How can I enhance this approach for several scheduling schemes (not only one)?
- Where does the mapping between core and scheduling scheme happen? (e.g. compile-time/run-time)
- Which files do I need to change?
Maybe you can help me to get the big picture (flow chart) of scheduling in Fiasco.OC because it is vital for the next steps and our research.
Best regards, Daniel
-- Daniel Krefft MSc. Wissenschaftlicher Mitarbeiter
Technische Universitaet Muenchen Fakultaet fuer Informatik Lehrstuhl fuer Betriebssysteme
Arcisstrasse 21 80333 Muenchen
Tel. +49 89 289 18791
daniel.krefft@tum.de www.os.in.tum.de/personen/krefft
On 02.09.2016 23:05, Adam Lackorzynski wrote:
On Fri Sep 02, 2016 at 20:03:01 +0000, Edinger, Stefan wrote:
How does Fiasco.OC manage its Cores ? Is it possible to execute more than one SchedContext on a multi-core CPU?
Each core runs its own scheduler and the schedulers are independent of each other. Thus they run in parallel and process Schedcontexts on their own.
Adam
-----Ursprüngliche Nachricht----- Von: Adam Lackorzynski [mailto:adam@os.inf.tu-dresden.de] Gesendet: Montag, 29. August 2016 23:03 An: Edinger, Stefan Cc: l4-hackers@os.inf.tu-dresden.de Betreff: Re: Partitioned Scheduling
Hi,
On Sun Aug 28, 2016 at 18:17:24 +0000, Edinger, Stefan wrote:
is it possible to have partitioned scheduling in the way that one can use different schedulers for different cpu-cores?
No, there's just one scheduler in the kernel, for all cores. However, given that scheduling is core-local only, cores could principally also have different schedulers.
And if yes, can I do the mapping from scheduler to core on runtime or is it done at compile time?
l4-hackers mailing list l4-hackers@os.inf.tu-dresden.de http://os.inf.tu-dresden.de/mailman/listinfo/l4-hackers
On Mon, Sep 5, 2016, 2:57 PM Daniel Krefft daniel.krefft@tum.de wrote:
Hi,
if I understand it right, there is only one scheduler in the kernel realizing one distinct scheduling strategy (e.g. fixed prio). However, given a multi-core system, several (all) cores are using *this* strategy in an independent core-local style. I'm right?
So, the questions are:
- How can I enhance this approach for several scheduling schemes (not
only one)?
- Where does the mapping between core and scheduling scheme happen?
(e.g. compile-time/run-time)
- Which files do I need to change?
Maybe you can help me to get the big picture (flow chart) of scheduling in Fiasco.OC because it is vital for the next steps and our research.
Best regards, Daniel
-- Daniel Krefft MSc. Wissenschaftlicher Mitarbeiter
Technische Universitaet Muenchen Fakultaet fuer Informatik Lehrstuhl fuer Betriebssysteme
Arcisstrasse 21 80333 Muenchen
Tel. +49 89 289 18791
daniel.krefft@tum.de www.os.in.tum.de/personen/krefft
On 02.09.2016 23:05, Adam Lackorzynski wrote:
On Fri Sep 02, 2016 at 20:03:01 +0000, Edinger, Stefan wrote:
How does Fiasco.OC manage its Cores ? Is it possible to execute more than one SchedContext on a multi-core
CPU?
Each core runs its own scheduler and the schedulers are independent of each other. Thus they run in parallel and process Schedcontexts on their own.
Adam
-----Ursprüngliche Nachricht----- Von: Adam Lackorzynski [mailto:adam@os.inf.tu-dresden.de] Gesendet: Montag, 29. August 2016 23:03 An: Edinger, Stefan Cc: l4-hackers@os.inf.tu-dresden.de Betreff: Re: Partitioned Scheduling
Hi,
On Sun Aug 28, 2016 at 18:17:24 +0000, Edinger, Stefan wrote:
is it possible to have partitioned scheduling in the way that one can use different schedulers for different cpu-cores?
No, there's just one scheduler in the kernel, for all cores. However, given that scheduling is core-local only, cores could
principally also have different schedulers.
And if yes, can I do the mapping from scheduler to core on runtime or is it done at compile time?
l4-hackers mailing list l4-hackers@os.inf.tu-dresden.de http://os.inf.tu-dresden.de/mailman/listinfo/l4-hackers
l4-hackers mailing list l4-hackers@os.inf.tu-dresden.de http://os.inf.tu-dresden.de/mailman/listinfo/l4-hackers
Hi,
On Mon Sep 05, 2016 at 12:49:11 +0200, Daniel Krefft wrote:
Hi,
if I understand it right, there is only one scheduler in the kernel realizing one distinct scheduling strategy (e.g. fixed prio).
Yes.
However, given a multi-core system, several (all) cores are using *this* strategy in an independent core-local style. I'm right?
Yes, exactly.
So, the questions are:
- How can I enhance this approach for several scheduling schemes (not
only one)?
There's design space as there are currently no interfaces to select between different scheduler variants. Currently, as there's only one variant at a time right now, there are no abstractions in the kernel to support multiple variants at the same time. That's probably the first thing to add. But maybe it's easier to extend the current variant with the feature you need and select those feature by adding parameters / flags / etc. to the scheduling parameters. This interface is flexible in a way that it supports different types of scheduling params.
- Where does the mapping between core and scheduling scheme happen?
(e.g. compile-time/run-time)
That's also design space but I'd say a run-time as I would assume there's not much difference in implementation among the two.
- Which files do I need to change?
All relevant files are in the src/kern directory and match sched*.cpp and ready_queue_*.cpp, the schedule() function itself is in context.cpp
Maybe you can help me to get the big picture (flow chart) of scheduling in Fiasco.OC because it is vital for the next steps and our research.
Scheduling is driven by the selected algorithm. For example, for the default fixed-prio scheduler, there's an array of prios where each element has a linked list with the ready-to-run threads. The next thread to run is taken from the list with the highest prio that has runnable threads. Look at ready_queue_fp.cpp and sched_context-fixed_prio.cpp.
Adam
Hi,
thank you for the quick reply and the exhaustive answer.
Best regards Daniel
On 08.09.2016 23:30, Adam Lackorzynski wrote:
Hi,
On Mon Sep 05, 2016 at 12:49:11 +0200, Daniel Krefft wrote:
Hi,
if I understand it right, there is only one scheduler in the kernel realizing one distinct scheduling strategy (e.g. fixed prio).
Yes.
However, given a multi-core system, several (all) cores are using *this* strategy in an independent core-local style. I'm right?
Yes, exactly.
So, the questions are:
- How can I enhance this approach for several scheduling schemes (not
only one)?
There's design space as there are currently no interfaces to select between different scheduler variants. Currently, as there's only one variant at a time right now, there are no abstractions in the kernel to support multiple variants at the same time. That's probably the first thing to add. But maybe it's easier to extend the current variant with the feature you need and select those feature by adding parameters / flags / etc. to the scheduling parameters. This interface is flexible in a way that it supports different types of scheduling params.
- Where does the mapping between core and scheduling scheme happen?
(e.g. compile-time/run-time)
That's also design space but I'd say a run-time as I would assume there's not much difference in implementation among the two.
- Which files do I need to change?
All relevant files are in the src/kern directory and match sched*.cpp and ready_queue_*.cpp, the schedule() function itself is in context.cpp
Maybe you can help me to get the big picture (flow chart) of scheduling in Fiasco.OC because it is vital for the next steps and our research.
Scheduling is driven by the selected algorithm. For example, for the default fixed-prio scheduler, there's an array of prios where each element has a linked list with the ready-to-run threads. The next thread to run is taken from the list with the highest prio that has runnable threads. Look at ready_queue_fp.cpp and sched_context-fixed_prio.cpp.
Adam
l4-hackers@os.inf.tu-dresden.de