Changeset bf78123 in rtems-docs


Ignore:
Timestamp:
03/08/18 06:44:08 (5 years ago)
Author:
Sebastian Huber <sebastian.huber@…>
Branches:
5, am, master
Children:
5b76390
Parents:
c65aeed
git-author:
Sebastian Huber <sebastian.huber@…> (03/08/18 06:44:08)
git-committer:
Sebastian Huber <sebastian.huber@…> (03/08/18 06:47:22)
Message:

c-user: Rework scheduler alogrithm config defs

Update #3325.

File:
1 edited

Legend:

Unmodified
Added
Removed
  • c-user/configuring_a_system.rst

    rc65aeed rbf78123  
    33273327
    33283328DESCRIPTION:
    3329     The Constant Bandwidth Server Scheduler (CBS) is an alternative scheduler
    3330     in RTEMS for uniprocessor applications. The CBS is a budget aware
    3331     extension of EDF scheduler. The goal of this scheduler is to ensure
    3332     temporal isolation of tasks. The CBS is equipped with a set of additional
    3333     rules and provides with an extensive API.
    3334 
    3335     This scheduler may be explicitly selected by defining
    3336     ``CONFIGURE_SCHEDULER_CBS``.
    3337 
    3338 NOTES:
    3339     None.
     3329    If defined, then the :ref:`Constant Bandwidth Server (CBS) Scheduler
     3330    <SchedulerCBS>` algorithm is made available to the application.
     3331
     3332NOTES:
     3333    In case no explicit :ref:`clustered scheduler configuration
     3334    <ConfigurationSchedulersClustered>` is present, then it is used as the
     3335    scheduler for exactly one processor.
    33403336
    33413337.. index:: CONFIGURE_SCHEDULER_EDF
     
    33593355
    33603356DESCRIPTION:
    3361     The Earliest Deadline First Scheduler (EDF) is an alternative scheduler in
    3362     RTEMS for uniprocessor applications. The EDF schedules tasks with dynamic
    3363     priorities equal to deadlines. The deadlines are declared using only Rate
    3364     Monotonic manager which handles periodic behavior.  Period is always equal
    3365     to deadline. If a task does not have any deadline declared or the deadline
    3366     is cancelled, the task is considered a background task which is scheduled
    3367     in case no deadline-driven tasks are ready to run.  Moreover, multiple
    3368     background tasks are scheduled according their priority assigned upon
    3369     initialization. All ready tasks reside in a single ready queue.
    3370 
    3371     This scheduler may be explicitly selected by defining
    3372     ``CONFIGURE_SCHEDULER_EDF``.
    3373 
    3374 NOTES:
    3375     None.
     3357    If defined, then the :ref:`Earliest Deadline First (EDF) Scheduler
     3358    <SchedulerEDF>` algorithm is made available to the application.
     3359
     3360NOTES:
     3361    In case no explicit :ref:`clustered scheduler configuration
     3362    <ConfigurationSchedulersClustered>` is present, then it is used as the
     3363    scheduler for exactly one processor.
    33763364
    33773365.. index:: CONFIGURE_SCHEDULER_EDF_SMP
     
    33953383
    33963384DESCRIPTION:
    3397     If defined, then the Earliest Deadline First (EDF) SMP Scheduler is
    3398     selected as the default scheduler.
    3399 
    3400 NOTES:
    3401     None.
     3385    If defined, then the :ref:`Earliest Deadline First (EDF) SMP Scheduler
     3386    <SchedulerSMPEDF>` algorithm is made available to the application.
     3387
     3388NOTES:
     3389    This scheduler algorithm is only available when RTEMS is built with SMP
     3390    support enabled.
     3391
     3392    In case no explicit :ref:`clustered scheduler configuration
     3393    <ConfigurationSchedulersClustered>` is present, then it is used as the
     3394    scheduler for up to 32 processors.
     3395
     3396    This scheduler algorithm is the default in SMP configurations and is only
     3397    selected when :ref:`CONFIGURE_MAXIMUM_PROCESSORS
     3398    <CONFIGURE_MAXIMUM_PROCESSORS>` is greater than one.
    34023399
    34033400.. index:: CONFIGURE_SCHEDULER_NAME
     
    34573454
    34583455DESCRIPTION:
    3459     The Deterministic Priority Scheduler is the default scheduler in RTEMS for
    3460     uniprocessor applications and is designed for predictable performance
    3461     under the highest loads.  It can block or unblock a thread in a constant
    3462     amount of time.  This scheduler requires a variable amount of memory based
    3463     upon the number of priorities configured in the system.
    3464 
    3465 NOTES:
    3466     This scheduler may be explicitly selected by defining
    3467     ``CONFIGURE_SCHEDULER_PRIORITY`` although this is equivalent to the default
    3468     behavior.
     3456    If defined, then the :ref:`Deterministic Priority Scheduler
     3457    <SchedulerPriority>` algorithm is made available to the application.
     3458
     3459NOTES:
     3460    In case no explicit :ref:`clustered scheduler configuration
     3461    <ConfigurationSchedulersClustered>` is present, then it is used as the
     3462    scheduler for exactly one processor.
     3463
     3464    This scheduler algorithm is the default when
     3465    :ref:`CONFIGURE_MAXIMUM_PROCESSORS <CONFIGURE_MAXIMUM_PROCESSORS>` is
     3466    exactly one.
     3467
     3468.. index:: CONFIGURE_SCHEDULER_PRIORITY_AFFINITY_SMP
     3469
     3470.. _CONFIGURE_SCHEDULER_PRIORITY_AFFINITY_SMP:
     3471
     3472CONFIGURE_SCHEDULER_PRIORITY_AFFINITY_SMP
     3473-----------------------------------------
     3474
     3475CONSTANT:
     3476    ``CONFIGURE_SCHEDULER_PRIORITY_AFFINITY_SMP``
     3477
     3478DATA TYPE:
     3479    Boolean feature macro.
     3480
     3481RANGE:
     3482    Defined or undefined.
     3483
     3484DEFAULT VALUE:
     3485    This is not defined by default.
     3486
     3487DESCRIPTION:
     3488    If defined, then the :ref:`Arbitrary Processor Affinity SMP Scheduler
     3489    <SchedulerSMPPriorityAffinity>` algorithm is made available to the
     3490    application.
     3491
     3492NOTES:
     3493    This scheduler algorithm is only available when RTEMS is built with SMP
     3494    support enabled.
     3495
     3496    In case no explicit :ref:`clustered scheduler configuration
     3497    <ConfigurationSchedulersClustered>` is present, then it is used as the
     3498    scheduler for up to 32 processors.
    34693499
    34703500.. index:: CONFIGURE_SCHEDULER_PRIORITY_SMP
     
    34883518
    34893519DESCRIPTION:
    3490     The Deterministic Priority SMP Scheduler is derived from the Deterministic
    3491     Priority Scheduler but is capable of scheduling threads across multiple
    3492     processors.
    3493 
    3494     In a configuration with SMP enabled at configure time, it may be explicitly
    3495     selected by defining ``CONFIGURE_SCHEDULER_PRIORITY_SMP``.
    3496 
    3497 NOTES:
    3498     This scheduler is only available when RTEMS is configured with SMP support
    3499     enabled.
    3500 
    3501     This scheduler is currently the default in SMP configurations and is only
    3502     selected when ``CONFIGURE_MAXIMUM_PROCESSORS`` is greater than one.
     3520    If defined, then the :ref:`Deterministic Priority SMP Scheduler
     3521    <SchedulerSMPPriority>` algorithm is made available to the application.
     3522
     3523NOTES:
     3524    This scheduler algorithm is only available when RTEMS is built with SMP
     3525    support enabled.
     3526
     3527    In case no explicit :ref:`clustered scheduler configuration
     3528    <ConfigurationSchedulersClustered>` is present, then it is used as the
     3529    scheduler for up to 32 processors.
    35033530
    35043531.. index:: CONFIGURE_SCHEDULER_SIMPLE
     
    35223549
    35233550DESCRIPTION:
    3524     When defined, the Simple Priority Scheduler is used at the thread
    3525     scheduling algorithm. This is an alternative scheduler in RTEMS.  It is
    3526     designed to provide the same task scheduling behaviour as the Deterministic
    3527     Priority Scheduler while being simpler in implementation and uses less
    3528     memory for data management.  It maintains a single sorted list of all ready
    3529     threads.  Thus blocking or unblocking a thread is not a constant time
    3530     operation with this scheduler.
    3531 
    3532     This scheduler may be explicitly selected by defining
    3533     ``CONFIGURE_SCHEDULER_SIMPLE``.
    3534 
    3535 NOTES:
    3536     This scheduler is appropriate for use in small systems where RAM is limited.
     3551    If defined, then the :ref:`Simple Priority Scheduler
     3552    <SchedulerPrioritySimple>` algorithm is made available to the application.
     3553
     3554NOTES:
     3555    In case no explicit :ref:`clustered scheduler configuration
     3556    <ConfigurationSchedulersClustered>` is present, then it is used as the
     3557    scheduler for exactly one processor.
    35373558
    35383559.. index:: CONFIGURE_SCHEDULER_SIMPLE_SMP
     
    35563577
    35573578DESCRIPTION:
    3558     The Simple SMP Priority Scheduler is derived from the Simple Priority
    3559     Scheduler but is capable of scheduling threads across multiple processors.
    3560     It is designed to provide the same task scheduling behaviour as the
    3561     Deterministic Priority Scheduler while distributing threads across multiple
    3562     processors.  Being based upon the Simple Priority Scheduler, it also
    3563     maintains a single sorted list of all ready threads.  Thus blocking or
    3564     unblocking a thread is not a constant time operation with this scheduler.
    3565 
    3566     In addition, when allocating threads to processors, the algorithm is not
    3567     constant time. This algorithm was not designed with efficiency as a primary
    3568     design goal.  Its primary design goal was to provide an SMP-aware
    3569     scheduling algorithm that is simple to understand.
    3570 
    3571     In a configuration with SMP enabled at configure time, it may be explicitly
    3572     selected by defining ``CONFIGURE_SCHEDULER_SIMPLE_SMP``.
    3573 
    3574 NOTES:
    3575     This scheduler is only available when RTEMS is configured with SMP support
    3576     enabled.
     3579    If defined, then the :ref:`Simple Priority SMP Scheduler
     3580    <SchedulerSMPPrioritySimple>` algorithm is made available to the
     3581    application.
     3582
     3583NOTES:
     3584    This scheduler algorithm is only available when RTEMS is built with SMP
     3585    support enabled.
     3586
     3587    In case no explicit :ref:`clustered scheduler configuration
     3588    <ConfigurationSchedulersClustered>` is present, then it is used as the
     3589    scheduler for up to 32 processors.
    35773590
    35783591.. index:: CONFIGURE_SCHEDULER_USER
     
    36363649owned by exactly one scheduler instance.
    36373650
    3638 A clustered scheduler configuration is optional.  By default, all processors are
    3639 managed by the :ref:`EDF SMP Scheduler <SchedulerSMPEDF>`.  In order to use
    3640 clustered scheduling the application designer has to answer two questions.
     3651A clustered scheduler configuration is optional.  By default, up to 32
     3652processors are managed by the :ref:`EDF SMP Scheduler <SchedulerSMPEDF>`.  In
     3653order to use clustered scheduling the application designer has to answer two
     3654questions.
    36413655
    36423656#. How is the set of processors partitioned into clusters?
     
    36523666with the following defines
    36533667
    3654 - ``CONFIGURE_SCHEDULER_EDF_SMP``,
    3655 
    3656 - ``CONFIGURE_SCHEDULER_PRIORITY_AFFINITY_SMP``,
    3657 
    3658 - ``CONFIGURE_SCHEDULER_PRIORITY_SMP``, and
    3659 
    3660 - ``CONFIGURE_SCHEDULER_SIMPLE_SMP``.
     3668- :ref:`CONFIGURE_SCHEDULER_EDF_SMP <CONFIGURE_SCHEDULER_EDF_SMP>`,
     3669
     3670- :ref:`CONFIGURE_SCHEDULER_PRIORITY_AFFINITY_SMP <CONFIGURE_SCHEDULER_PRIORITY_AFFINITY_SMP>`,
     3671
     3672- :ref:`CONFIGURE_SCHEDULER_PRIORITY_SMP <CONFIGURE_SCHEDULER_PRIORITY_SMP>`, and
     3673
     3674- :ref:`CONFIGURE_SCHEDULER_SIMPLE_SMP <CONFIGURE_SCHEDULER_SIMPLE_SMP>`.
    36613675
    36623676This is necessary to calculate the per-thread overhead introduced by the
Note: See TracChangeset for help on using the changeset viewer.