github.com/dkerwin/nomad@v0.3.3-0.20160525181927-74554135514b/website/source/docs/jobspec/schedulers.html.md (about) 1 --- 2 layout: "docs" 3 page_title: "Nomad Schedulers" 4 sidebar_current: "docs-jobspec-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 12 [job](/docs/jobspec/): `service`, `batch` and `system`. Here we will describe 13 the differences between 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 jobs constraints and selects the optimal node to 20 place a task group on. The `service` scheduler uses a best fit scoring algorithm 21 influenced by Google work on Borg. 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 jobs 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 being 45 managed by Nomad, they can take advantage of job updating, rolling deploys, 46 service discovery and more.