WORK IN PROGRESS !
When you have only one query with one source, scheduling is not a thing to think about, in other cases some options can be done by configuring the scheduler.
Scheduling in Odysseus has two parts:
- Choose the query to schedule. This is done with the scheduler
- Scheduler the plan of the query. This is done with the scheduling strategy
In ODYSSEUS_HOME a file called scheduling.conf defines the basic scheduling mechanisms:
defaultScheduler=<SCHEDULER>
defaultStrat=<SCHEDULING STRATEGY>
List of currently available Schedulers:
- ST Scheduler RR MS Limit Thread: This scheduler schedules different sources in multiple thread. You can configure how many sources should be scheduled by one thread. If more sources need to be scheduled a new thread is spawned
- Single Thread Scheduler RR Multi Source: This scheduler schedules different sources in multiple thread. Here you can define how many threads should be used to schedule all sources, independed of the number of sources
- Single Thread Scheduler RR: This scheduler schedules each sources in a different thread.
- Simple Dynamic Priority Scheduler: TBD
- Static Priority Plan Scheduler: TBD
- SLA Scheduler: TBD
List of currently available Scheduling Strategies (Availablity depends on contained bundles):
- Aurora Min Latency
- Aurora Min Cost
- Chain
- Chain (Iter)
- Biggest Queue
- Round Robin
- Round Robin (Iter)
With the following parameter (in odysseus.conf) the schedulers can be configured
- scheduler_simpleThreadScheduler_executorThreadsCount: How many schedulers should be used in parallel. If set to -1 (or not set) the number of processor cores is used. Save value = 1
- Scheduler.Simplethreaded.SourceThreadCount: How many threads should be used for all sources, independed of the number of sources
- Scheduler.Simplethreaded.SourcesPerThread (for ST Scheduler RR MS Limit Thread): How many sources should be access by one thread, if there are more sources, then a new scheduler is used