sched - modrpc/info GitHub Wiki

Table of Contents

Scheduling: Overview

  • There are Jobs to be done by Workers.

Jobs

Offline vs Online Jobs

  • Offline jobs are set of jobs whose information is fully available before we start doing jobs.
  • Online jobs are those which arrive while we're doing jobs.

Ordinary Jobs vs Special Jobs

  • Ordinary jobs can be performed by any workers while special jobs can be performed only by workers which is capable of executing the job.

Simple Jobs vs Composite Jobs

  • A job contains operations to be executed.
  • An operation in a job is either a primitive operation or Job call (e.g. task call).

Workers

Active vs Passive Workers

  • Active workers are autonomous workers with its own engine.
  • Passive workers cannot initiate the work by themselves.

Scheduling in Operations Research

Job Shop Scheduling

  • wikipedia
  • Given n jobs J1, J2, ..., Jn of varying sizes, which need to be scheduled on m identical machines, minimize the makespan.

Flow Shop Scheduling

  • wikipedia
  • Scheduling with work shop or group shop in which the flow control shall enable an appropriate sequencing for each job and for processing on a set of machines or with other resoures 1, 2, ...m in compliance with given processing orders.
  • Maintaining a continuous flow of processing tasks is desired with a minimum of idle time and minimum of waiting time.
  • Special case of job shop scheduling where there is strict order of all operations to be performed on all jobs.

Implementation of Concurrent Job Execution

Threads vs Events

Thread-based implementation

  • one task = one threads

Event-based implementation

  • based on non-blocking I/O completion
  • timer events
  • application-specific messages
  • (-) not easy to parallelize -- e.g. parallel event queue becomes bottleneck
  • (+) high throughput
  • (-) difficult to debug
  • (+) no race condition, deadlock, synchronization issues
  • (-) difficult to take advantage of physical processor cores
  • (-) can block on page faults (single-threaded) or garbage collection
⚠️ **GitHub.com Fallback** ⚠️