Job scheduler
2348164
224367687
2008-07-08T15:23:30Z
PMDrive1061
5403765
Reverted edits by [[Special:Contributions/Wiki software reviewer|Wiki software reviewer]] ([[User talk:Wiki software reviewer|talk]]) to last version by 125.18.244.194
{{Unreferenced|date=September 2007}}
A '''job scheduler''' is an enterprise software application that is in charge of unattended background executions, commonly known for historical reasons as [[batch processing]].
Synonyms are '''batch system''', '''Distributed Resource Management System''' (DRMS), and '''Distributed Resource Manager''' (DRM). Today's job schedulers typically provide a graphical user interface and a [[Device management|single point of control]] for definition and monitoring of background executions in a distributed network of computers. Increasingly job schedulers are required to orchestrate the integration of real-time business activities with traditional background IT processing, across different [[operating system]] platforms and business application environments.
== Overview ==
Basic features expected of job scheduler software are:
* Interfaces which helps to define workflows and/or job dependencies
* Automatic submission of executions
* Interfaces to monitor the executions
* Priorities and/or queues to control the execution order of unrelated jobs
If software from a completely different area includes all or some of those features, this software is considered to have job scheduling capabilities.
Most [[operating system]] platforms such as [[Unix]] and [[Microsoft Windows|Windows]] provide basic job scheduling capabilities, for example [[Cron]]. Many programs such as [[Database management system|DBMS]], [[backup]], [[Enterprise resource planning|ERPs]], and [[Business Process Management|BPM]] also include relevant job scheduling capabilities. Operating System (OS) or point program supplied job scheduling will not usually provide the ability to schedule beyond a single OS instance or outside the remit of the specific program. Organizations needing to [[automate]] highly complex related and un-related IT workload will also be expecting more advanced features from a job scheduler, such as:
* Real-time scheduling based on external, un-predictable events
* Automatic restart and recovery in event of failures
* Alerting and notification to operations personnel
* Generation of incident reports
* [[Audit]] trails for regulatory [[compliance]] purposes
These advanced capabilities can be written by in-house developers but are more often provided by solutions from suppliers that specialize in [[systems management]] software.
== Main concepts ==
There are many concepts that are central to almost every job scheduler implementation and that are widely recognized with minimal variations:
* Jobs
* Dependencies
* Job Streams
* Users
Beyond the basic, single OS instance scheduling tools there are two major architectures that exist for Job Scheduling software.
* Master/Agent architecture — the historic architecture for Job scheduling software. The Job Scheduling software is installed on a single machine (Master) while on production machines only a very small component (Agent) is installed that awaits commands from the Master, executes them, and returns the exit code back to the Master.
* Cooperative architecture — a decentralized model where each machine is capable of helping with scheduling and can offload locally scheduled jobs to other cooperating machines. This enables dynamic workload balancing to maximize hardware resource utilization and [[high availability]] to ensure service delivery.
<!-- Is there a third one? -->
<!-- Don't think so. They all seem to be variations on these two. -->
== History ==
Job Scheduling has a long history. Job Schedulers are one of the major components of the IT infrastructure since the early mainframe systems. At first, stacks of [[punch cards]] were processed one after the other, hence the term “[[batch processing]].”
From a historical point of view, we can distinguish two main eras about Job Schedulers:
# The mainframe era
#* [[Job Control Language]] (JCL) on [[IBM mainframe]]s. Initially based on JCL functionality to handle dependencies this era is typified by the development of sophisticated scheduling solutions forming part of the systems management and automation toolset on the mainframe.
# The [[open systems]] era
#* Modern schedulers on a variety of architectures and operating systems. With standard scheduling tools limited to such as [[Cron]], the need for mainframe standard job schedulers has grown with the increased adoption of distributed computing environments.
In terms of the type of scheduling there are also distinct eras:
# [[Batch processing]] - the traditional date and time based execution of background tasks based on a defined period during which resources were available for batch processing (the batch window). In effect the original mainframe approach transposed onto the [[open systems]] environment.
# Event-driven process automation - where background processes cannot be simply run at a defined time, either because the nature of the business demands that workload is based on the occurrence of external events (such as the arrival of an order from a customer or a stock update from a store branch) or because there is no / insufficient batch window.
# Service Oriented job scheduling - recent developments in [[Service Oriented Architecture]] (SOA) have seen a move towards deploying job scheduling as a reusable IT infrastructure service that can play a role in the integration of existing business application workload with new [[Web Services]] based real-time applications.
== Scheduling ==
{{main|Scheduling (computing)}}
Various schemes are used to decide which particular job to run. Parameters that might be considered include:
* Job priority
* Compute resource availability
* License key if job is using licensed software
* Execution time allocated to user
* Number of simultaneous jobs allowed for a user
* Estimated execution time
* Elapsed execution time
* Availability of peripheral devices
* Occurrence of prescribed events
==Implementations==
<!-- Only add links to other Wikipedia articles. Links to external sites will be deleted. -->
* [[Automation Center]] by [[OpsWise]]
* [[BatchMan]] by [[Honico]]
* [[CA Unicenter Autosys Job Management]]
* [[Condor High-Throughput Computing System]] (also known as [[Condor cycle scavenger]]), a software framework for coarse-grained distributed parallelization of computationally intensive tasks.
* [[CONTROL-M]] by [[BMC Software]]
* [[COSbatch]] by [[OSM]]
* [[Cronacle]] by [[Redwood Software]]
* Dollar Universe by [[ORSYP S.A]]
* [[Enterprise Job Scheduling Solution]] by [[Stonebranch]]
* Global ECS by [[Vinzant Software]]
* [[Globus Toolkit]]
* [[Grid MP]]
* [[IBM]]'s [[Tivoli Workload Scheduler]] from their [[Tivoli Software]] Division
* [[LoadLeveler]]
* [[Load Sharing Facility]] (LSF), a commercial computer software job scheduler.
* [[Maui Cluster Scheduler]]
* N1 Grid Engine — commercial version of [[Sun Grid Engine]]
* [[NetworkComputer]] (NC), a commercial job scheduler by [[Runtime Design Automation]]
* [[Open Source Job Scheduler]] at Sourceforge
* [[Portable Batch System]], a computer software job scheduler that allocates network resources to batch jobs.
* [[PTC Scheduler]] Windows & Unix batch scheduler by [[PTC Software Ltd]]
* [[Sun Grid Engine]], an open source [[batch-queuing system]], supported by [[Sun Microsystems]].
* Tidal(TM) Enterprise Scheduler by Tidal Software http://www.tidalsoftware.com/products/enterpriseJobScheduling.asp
* [[Xgrid]] — Controller within the commercial version by [[Apple Computer]]
* Visual TOM by Absyss http://www.absyss.com
Other distributed command execution software: [[Tentakel]] (python), ClusterSSH, dsh, fanout, ghost macro language, mussh shell script, p-run utility, pconsole shell tool, Taktuk scheduller, smux shell multiplexer, rshall, rgang and distribulator among others.
== References==
<references/>
* {{cite web|url=http://www.nextslm.org/jobscheduling.shtml|title=Introduction to Enterprise Job Scheduling: A Crash Course in Cutting IT Ops Costs|first=Elizabeth|last=Ferrarini}}
==See also==
* [[Computational resource]]
* [[Distributed computing]]
* [[Business Process Automation]]
* [http://forum.job-scheduling.org/ Job scheduler users community]
[[Category:Job scheduling|*]]
[[fr:Ordonnancement de tâches informatiques]]