Changes between Version 15 and Version 16 of Developer/SMP

Jan 13, 2014, 2:32:36 PM (6 years ago)

/* Design Issues */


  • Developer/SMP

    v15 v16  
    312312Thus the scheduler needs its own locks.  This will lead to nested locking and
    313313deadlocks must be prevented.
     314=  Watchdog Handler  =
     316==  Status  ==
     319The [ Watchdog Handler] is a global resource which provides time management in
     320RTEMS.  It is a core service of the operating system and used by the high level APIs.  It is used for time of day maintenance and time events based on ticks or
     321wall clock time for example.  The term ''watchdog'' has nothing to do with hardware watchdogs.
     322==  Future Directions  ==
     325The watchdog uses delta chains to manage time based events.  One global
     326watchdog resource leads to scalability problems.  A SMP system is scalable if additional processors will increase the performance metrics.  If we add more processors, then in general the number of timers increases proportionally and thus leads to longer delta chains.  Also the chance for lock contention increases.  Thus the watchdog resource should
     327move to the scheduler scope with per scheduler instances.  Additional processors can then use new scheduler instances.
     328=  Per-CPU Control  =
     330==  Status  ==
     333Per-CPU control state is available for each configured CPU in a statically
     334created global table ''_Per_CPU_Information''.  Each per-CPU control is cache
     335aligned to prevent false sharing and to provide simple access via assembly
     336code.  CPU ports can add custom fields to the per-CPU control.  This is used on
     337SPARC for the ISR dispatch disable indication.
     338==  Future Directions  ==
     342=  Interrupt Support  =
     344==  Status  ==
     347The interrupt support is BSP specific in general.
     348==  Future Directions  ==
     351 *  The SMP capable BSPs should implement the [ Interrupt Manager Extension].
     352 *  Add interrupt processor affinity API to ''Interrupt Manager Extension''.  This should use the affinity sets API used for thread processor affinity.
     353=  Global Scheduler  =
     355==  Status  ==
     358 *  Scheduler selection is a link-time configuration option.
     359 *  Basic SMP support for schedulers like processor allocation and extended thread state information.
     360 *  Two global fixed priority schedulers (G-FP) are available with SMP support.
     361==  Future Directions  ==
     364 *  Add more schedulers, e.g. EDF, phase-fair, early-release fair, etc.
     365 *  Allow thread processor affinity selection for each thread.
     366 *  The scheduler operations have no context parameter instead they use the global variable '_Scheduler'.  The scheduler operations signature should be changed to use a parameter for the scheduler specific context to allow more than one scheduler in the system.  This can be used to enable scheduler hierarchies or partitioned schedulers.
     367 *  The scheduler locking is inconsistent.  Some scheduler operations are invoked with interrupts disabled.  Some like the yield operations are called without interrupts disabled and must disable interrupts locally.
     368 *  The new SMP schedulers lack test coverage.
     369 *  Implement clustered (or partitioned) scheduling with a sophisticated resource sharing protocol (e.g. <ref name="BurnsWellings2013">A. Burns and A.J. Wellings, A Schedulability Compatible Multiprocessor Resource Sharing Protocol - MrsP, Proceedings of the 25th Euromicro Conference on Real-Time Systems (ECRTS 2013), July 2013. </ref>).  To benefit from this the Giant lock must be eliminated.
    314370=  Implementation  =