﻿Scheduler Usage

A range of heuristic scheduling algorithms (list-schedulers and cluster-schedulers) have been implemented here for research.
The algorithms can be accessed through the SchedulerApp class (compilable into a runnable jar with the Ant script provided). Required sources can be found in the “Schedule” and “Graph” directories on SVN, although the script should retrieve them automatically. To do this the script requires Apache Ivy.
Options can be viewed by running with the --help option, or viewing the source code. They are outlined as follows.
--f [path to gxl file containing a task graph]
--o [path to output file that will contain the schedule]
--p [number of processors to be used]
The following options specify the algorithm. They each specify an algorithm component or feature.
To use a list-scheduler, configure the options:
--priority [task priority scheme for the list-scheduler]
--placement [task placement scheme for the list-scheduler]
--no-insertion (no argument required, enter this option if you do not want insertion used)
To use a cluster-scheduler, configure the options:
--clusterer [clusterer for the cluster-scheduler]
--cluster-merger [cluster-merger for the cluster-scheduler]
--ordering [ordering scheme within clusters]
Codes (passed as arguments to the above options) for the algorithm components can be browsed with the --help option or by viewing the source code.


Schedule Classes

The top-most “Schedule” interface allows duplicated task executions, where scheduled task executions are stored in ScheduledTask objects.
“OnePerTaskSchedule” (abstract class) represents the more common type of schedule where each task is executed once. Most of its methods are abstract and defines the interface for a schedule without duplication. It implements “Schedule” (which is more general) and takes care of adaptations needed for it. Classes inheriting OnePerTaskSchedule do not need to deal with ScheduledTask objects, each task has one processor and start time allocation.
An implementation of Schedule is the DuplicationSchedule class. 
A subclass of OnePerTaskSchedule is BasicSchedule. This class has been optimised for list-scheduling, and this requires that tasks are scheduled in topological order. Schedules can be undone, but tasks must also be unscheduled in reverse topological order.