github.com/smintz/nomad@v0.8.3/website/source/docs/runtime/schedulers.html.md (about)

     1  ---
     2  layout: "docs"
     3  page_title: "Scheduler Types - Runtime"
     4  sidebar_current: "docs-runtime-schedulers"
     5  description: |-
     6    Learn about Nomad's various schedulers.
     7  ---
     8  
     9  # Scheduler Types
    10  
    11  Nomad has three scheduler types that can be used when creating your job:
    12  `service`, `batch` and `system`. Here we will describe the differences between
    13  each of these schedulers.
    14  
    15  ## Service
    16  
    17  The `service` scheduler is designed for scheduling long lived services that
    18  should never go down. As such, the `service` scheduler ranks a large portion
    19  of the nodes that meet the job's constraints and selects the optimal node to
    20  place a task group on. The `service` scheduler uses a best fit scoring algorithm influenced by Google's work on
    21  [Borg](https://research.google.com/pubs/pub43438.html). Ranking this larger set of candidate nodes
    22  increases scheduling time but provides greater guarantees about the optimality
    23  of a job placement, which given the service workload is highly desirable.
    24  
    25  ## Batch
    26  
    27  Batch jobs are much less sensitive to short term performance fluctuations and
    28  are short lived, finishing in a few minutes to a few days. Although the `batch`
    29  scheduler is very similar to the `service` scheduler, it makes certain
    30  optimizations for the batch workload. The main distinction is that after finding
    31  the set of nodes that meet the job's constraints it uses the power of two choices
    32  described in Berkeley's Sparrow scheduler to limit the number of nodes that are
    33  ranked.
    34  
    35  ## System
    36  
    37  The `system` scheduler is used to register jobs that should be run on all
    38  clients that meet the job's constraints. The `system` scheduler is also invoked
    39  when clients join the cluster or transition into the ready state. This means
    40  that all registered `system` jobs will be re-evaluated and their tasks will be
    41  placed on the newly available nodes if the constraints are met.
    42  
    43  This scheduler type is extremely useful for deploying and managing tasks that
    44  should be present on every node in the cluster. Since these tasks are
    45  managed by Nomad, they can take advantage of job updating, rolling deploys,
    46  service discovery and more.