ray/doc/tasks.md
2016-10-04 12:11:52 -07:00

1.4 KiB

Task specifications, task instances and task logs

A task specification contains all information that is needed for computing the results of a task:

  • The function ID of the function that executes the task
  • The arguments (either object IDs for pass by reference or values for pass by value)
  • The IDs of the result objects

From these, a task ID can be computed which is also stored in the task specification.

A task instance represents one execution of a task specification. It consists of:

  • A scheduling state (WAITING, SCHEDULED, RUNNING, DONE)
  • The target node where the task is scheduled or executed
  • A unique task instance ID that identifies the particular execution of the task.

The task data structures are defined in common/task.h.

The task log is a mapping from the task instance ID to a sequence of updates to the status of the task instance. It is updated by various parts of the system:

  1. The local scheduler writes it with status WAITING when submits a task to the global scheduler
  2. The global scheduler appends an update WAITING -> SCHEDULED together with the node ID when assigning the task to a local scheduler
  3. The local scheduler appends an update SCHEDULED -> RUNNING when it assigns a task to a worker
  4. The local scheduler appends an update RUNNING -> DONE when the task finishes execution

The task log is defined in common/state/task_log.h.