Katana VentraIP

Scheduling (computing)

In computing, scheduling is the action of assigning resources to perform tasks. The resources may be processors, network links or expansion cards. The tasks may be threads, processes or data flows.

This article is about scheduling of computing resources. For networks, see Network scheduler. For other uses, see Scheduling (disambiguation).

The scheduling activity is carried out by a process called scheduler. Schedulers are often designed so as to keep all computer resources busy (as in load balancing), allow multiple users to share system resources effectively, or to achieve a target quality-of-service.


Scheduling is fundamental to computation itself, and an intrinsic part of the execution model of a computer system; the concept of scheduling makes it possible to have computer multitasking with a single central processing unit (CPU).

maximizing (the total amount of work completed per time unit);

throughput

minimizing (time from work becoming ready until the first point it begins execution);

wait time

minimizing or response time (time from work becoming ready until it is finished in case of batch activity,[1][2][3] or until the system responds and hands the first output to the user in case of interactive activity);[4]

latency

maximizing fairness (equal CPU time to each process, or more generally appropriate times according to the priority and workload of each process).

A scheduler may aim at one or more goals, for example:


In practice, these goals often conflict (e.g. throughput versus latency), thus a scheduler will implement a suitable compromise. Preference is measured by any one of the concerns mentioned above, depending upon the user's needs and objectives.


In real-time environments, such as embedded systems for automatic control in industry (for example robotics), the scheduler also must ensure that processes can meet deadlines; this is crucial for keeping the system stable. Scheduled tasks can also be distributed to remote devices across a network and managed through an administrative back end.

$_$_$DEEZ_NUTS#3__titleDEEZ_NUTS$_$_$

$_$_$DEEZ_NUTS#3__descriptionDEEZ_NUTS$_$_$

$_$_$DEEZ_NUTS#6__descriptionDEEZ_NUTS$_$_$

$_$_$DEEZ_NUTS#6__heading--0DEEZ_NUTS$_$_$

$_$_$DEEZ_NUTS#6__description--0DEEZ_NUTS$_$_$

$_$_$DEEZ_NUTS#6__heading--1DEEZ_NUTS$_$_$

$_$_$DEEZ_NUTS#6__description--1DEEZ_NUTS$_$_$

$_$_$DEEZ_NUTS#6__heading--2DEEZ_NUTS$_$_$

$_$_$DEEZ_NUTS#6__description--2DEEZ_NUTS$_$_$

$_$_$DEEZ_NUTS#6__heading--3DEEZ_NUTS$_$_$

$_$_$DEEZ_NUTS#6__description--3DEEZ_NUTS$_$_$

in which the dispatcher saves the state (also known as context) of the process or thread that was previously running; the dispatcher then loads the initial or previously saved state of the new process.

Context switches

Switching to user mode.

Jumping to the proper location in the user program to restart that program indicated by its new state.

Since context switches only occur upon process termination, and no reorganization of the process queue is required, scheduling overhead is minimal.

Throughput can be low, because long processes can be holding the CPU, causing the short processes to wait for a long time (known as the convoy effect).

No starvation, because each process gets chance to be executed after a definite time.

waiting time and response time depend on the order of their arrival and can be high for the same reasons above.

Turnaround time

No prioritization occurs, thus this system has trouble meeting process deadlines.

The lack of prioritization means that as long as every process eventually completes, there is no starvation. In an environment where some processes might not complete, there can be starvation.

It is based on queuing.

The Single Sequential Scheduler option, also known as the Primary Control Program (PCP) provided sequential execution of a single stream of jobs.

The Multiple Sequential Scheduler option, known as Multiprogramming with a Fixed Number of Tasks (MFT) provided execution of multiple concurrent jobs. Execution was governed by a priority which had a default for each stream or could be requested separately for each job. MFT version II added subtasks (threads), which executed at a priority based on that of the parent job. Each job stream defined the maximum amount of memory which could be used by any job in that stream.

The Multiple Priority Schedulers option, or Multiprogramming with a Variable Number of Tasks (MVT), featured subtasks from the start; each job requested the priority and memory it required before execution.

by Remzi H. Arpaci-Dusseau and Andrea C. Arpaci-Dusseau. Arpaci-Dusseau Books, 2014. Relevant chapters: Scheduling: Introduction Multi-level Feedback Queue Proportional-share Scheduling Multiprocessor Scheduling

Operating Systems: Three Easy Pieces

Brief discussion of Job Scheduling algorithms

Understanding the Linux Kernel: Chapter 10 Process Scheduling

Kerneltrap: Linux kernel scheduler articles

AIX CPU monitoring and tuning

Josh Aas' introduction to the Linux 2.6.8.1 CPU scheduler implementation

Peter Brucker, Sigrid Knust. Complexity results for scheduling problems

[2]

is a toolbox of scheduling and graph algorithms.

TORSCHE Scheduling Toolbox for Matlab

A survey on cellular networks packet scheduling

Large-scale cluster management at Google with Borg

$_$_$DEEZ_NUTS#7__titleDEEZ_NUTS$_$_$

$_$_$DEEZ_NUTS#7__subtextDEEZ_NUTS$_$_$

$_$_$DEEZ_NUTS#7__quote--0DEEZ_NUTS$_$_$

$_$_$DEEZ_NUTS#7__name--0DEEZ_NUTS$_$_$

$_$_$DEEZ_NUTS#7__company_or_position--0DEEZ_NUTS$_$_$

$_$_$DEEZ_NUTS#7__quote--1DEEZ_NUTS$_$_$

$_$_$DEEZ_NUTS#7__name--1DEEZ_NUTS$_$_$

$_$_$DEEZ_NUTS#7__company_or_position--1DEEZ_NUTS$_$_$

$_$_$DEEZ_NUTS#7__quote--2DEEZ_NUTS$_$_$

$_$_$DEEZ_NUTS#7__name--2DEEZ_NUTS$_$_$

$_$_$DEEZ_NUTS#7__company_or_position--2DEEZ_NUTS$_$_$

$_$_$DEEZ_NUTS#7__quote--3DEEZ_NUTS$_$_$

$_$_$DEEZ_NUTS#7__name--3DEEZ_NUTS$_$_$

$_$_$DEEZ_NUTS#7__company_or_position--3DEEZ_NUTS$_$_$

$_$_$DEEZ_NUTS#1__titleDEEZ_NUTS$_$_$

$_$_$DEEZ_NUTS#1__subtextDEEZ_NUTS$_$_$

$_$_$DEEZ_NUTS#1__answer--0DEEZ_NUTS$_$_$

$_$_$DEEZ_NUTS#1__answer--1DEEZ_NUTS$_$_$

$_$_$DEEZ_NUTS#1__answer--2DEEZ_NUTS$_$_$

$_$_$DEEZ_NUTS#1__answer--3DEEZ_NUTS$_$_$

$_$_$DEEZ_NUTS#1__answer--4DEEZ_NUTS$_$_$

$_$_$DEEZ_NUTS#1__answer--5DEEZ_NUTS$_$_$

$_$_$DEEZ_NUTS#1__answer--6DEEZ_NUTS$_$_$

$_$_$DEEZ_NUTS#1__answer--7DEEZ_NUTS$_$_$

$_$_$DEEZ_NUTS#1__answer--8DEEZ_NUTS$_$_$

$_$_$DEEZ_NUTS#1__answer--9DEEZ_NUTS$_$_$

$_$_$DEEZ_NUTS#1__answer--10DEEZ_NUTS$_$_$