Changes between Version 11 and Version 12 of Projects/Scheduler


Ignore:
Timestamp:
Mar 6, 2013, 8:04:54 PM (7 years ago)
Author:
Gedare
Comment:

Legend:

Unmodified
Added
Removed
Modified
  • Projects/Scheduler

    v11 v12  
    3333= Large related tasks =
    3434
     35= Scheduling arbitrary resources =
     36
     37The scheduler focuses on scheduling threads. Other schedulable entities exist within a system, for example I/O (block, network, etc). One task idea is to make the scheduler even more modular with respect to the schedulable resource. This task requires a feasibility study and design before proceeding.
    3538= Thread Ready Set and Block 2-n Refactoring =
    3639
    3740
    38 RTEMS manages sets of tasks/threads. Some are sets waiting on resources which are managed by the SuperCore Thread Queue handler. There is a single set of tasks ready to execute which is managed by the Scheduler. There is a set of tasks executing (1-n depending on number of cores) which are selected for execution by the Scheduler.
     41RTEMS manages sets of threads (aka tasks). Some sets are waiting on resources and are managed by the SuperCore Thread Queue (threadq) handler. There is a single set of ready to execute and executing threads that are managed by the Thread Scheduler (scheduler).
    3942
    40 This task has a series of steps which make this more design more obvious at the SuperCore level. In general, the "package names" suck at this point but hopefully this explanation and project will make this organization more obvious and flexible. All names proposed in the following are up for discussion.
     43This task has a series of steps which make this design more obvious at the SuperCore level. In general, the "package names" suck at this point, but hopefully this explanation and project will make this organization more obvious and flexible. All names proposed in the following are up for discussion.
    4144
    4245The currently identified steps in this project are:
    4346
    44  *  Create SuperCore Handlers for Task Sets:
    45   *  Refactor "FIFO for Priority Ordering" from Scheduler Simple into something like "ThreadSetSimplePriority"
    46   *  Refactor priority discipline from Thread Queue (e.g. Block 2-n structure) and name it something like "ThreadSetBlock2nPriority"
    47   *  Refactor Thread Set from Deterministic Priority Scheduler and name it something like "ThreadSetDeterministicPriority"
    48  *  Add Scheduler which uses Block2-n
    49  *  Rework Scheduler Simple SMP to use Block 2-n (if feasible)
    50  *  Run Timing Tests with each scheduler as default
    51   *  A report on the performance of each scheduler including graphs.
    52  *  Helping provide more guidance in selecting the appropriate scheduler for an application is needed. The guidance would include the goals of the scheduler along with the time and space characteristics of operations like blocking and readying.
     47 *  Create SuperCore Handlers for Thread Sets:
     48  *  Refactor "FIFO for Priority Ordering" from Scheduler Simple into something like "Thread_set_Priority_fifo"
     49  *  Refactor priority discipline from Thread Queue (e.g. Block 2-n structure) and name it something like "Thread_set_Priority_block2n"
     50  *  Refactor Thread Set from Deterministic Priority Scheduler and name it something like "Thread_set_Priority_deterministic"
     51 *  Rewrite Scheduler infrastructure to use Thread Sets as a pluggable implementation of threads.
     52 *  Add a new Scheduler that uses block2n
     53 *  Rework Scheduler Simple SMP to use block2n (if feasible)
     54 *  Run Timing Tests with each scheduler
     55  *  Report the performance of each scheduler including graphs.
     56 *  Help provide guidance in selecting the appropriate scheduler for an application. The guidance would include the goals of the scheduler along with the time and space characteristics of operations like blocking and readying.
    5357  *  Deterministic Priority Scheduler is O(constant)
    5458  *  Simple Priority Scheduler has some operations that are O(number of tasks)
    55   *  Simple Scheduler SMP has some O(number of tasks) and others which are O(number of cores)
     59  *  Simple Scheduler SMP has some O(number of tasks) and others that are O(number of cores)
    5660  *  Block2N based scheduler would be bounded but worst case basically O(constant). It can iterate a few times but that has a maximum that is designed in.
    5761= Related Tasks =