Grid Query and Reservation Interface

Grid Forum RFC

Quinn O. Snell and Mark Clement

Introduction

Information discovery is vital to metascheduling and grid computing. A
metascheduler must be able to gather information from local schedulers
to determine where to submit a job and/or make an advance reservation.
This document is intended to specify a standard format for querying a
local scheduler about job start time and advance reservations. It does
not describe the format of the arguments. Two documents must be written
before defining the argument and protocol format. The first is a
document describing the tokens and the values they can take. Lastly, the
Scheduling Working Group needs to come to consensus on the format of the
queries and commands. The Maui scheduler currently uses a
semicolon-separated list of token = value pairs. Other systems use an
LDAP form. It has also been suggested that an XML format would be
appropriate.

In all cases:

-   Time is a local scheduler specific value. No clock synchronization
    is assumed.

-   Arguments surrounded in {} are optional.

-   The UserID is always provided so that the local scheduler can
    enforce per-user quotas and policies. The format and information
    contained in the UserID is not specified in this document.

-   ResKey is returned by the local scheduler so that a metascheduler
    can securely claim a local reservation when the job is ready to be
    staged.

Job-Start Query

This query is meant to ask the question, "When will my job start?". This
query will be used by metaschedulers to find the machine that can run
the job the soonest. In this situation, the job will be submitted to and
run wholly on a single machine.

QUERY UserID Duration ResourceList OtherInfo

> Local Scheduler Returns
>
> StartTime {OtherInfo}

Advance Reservation Query

In this case, the query is intended to determine the times a reservation
could be guaranteed by a local scheduler. This query could be used in
single system scheduling as well as co-allocation of multiple systems.
Returning a list of start time ranges assists in co-allocation to
determine a coinciding time in which a reservation could be made across
multiple systems.

RESQUERY UserID TimeSpec {ResAccess} ResourceList

> Local Scheduler Returns

STime EndSTime {OtherInfo} {{STime EndSTime {OtherInfo}} ...}

Definitions

UserID

> Specifies the local user for whom the query is being made.

STime

> Specifies the beginning of a range of time in which the job could
> start.

EndSTime

> Specifies the end of a range of time in which the job could start.

ETime

Specifies the time the job should end.

Duration

> Specifies the amount of time requested in "wall clock" time.

TimeSpec \--\> {Duration=value} {STime=value} {ETime=value}

> Specifies time constraints that must be met. Specified as a single
> identifier = value pair or multiple pairs indicating start time, end
> time, and/or duration. Duration must be indicated in some form, but
> any combination of the three identifier = value pairs may be used. For
> example, specifying STime=2:00, ETime=3:00 would indicate that the
> reservation would exist from 2:00 to 3:00 for the resources in the
> ResourceList. A user may specify deadline scheduling by indicating
> only the duration and endtime. A form of QoS may be specified by
> indicating all three values as in: STime=12:00, ETime=13:00,
> Duration=120seconds.

ResAccess

> List of existing local system reservations this request has access to.
> The resulting reservation may intersect with any of the reservations
> listed.

ResourceList

> List of required resource types and amounts.

StartTime

> Specifies the time the job would start. Time is specified in Unix
> epoch time GMT.

OtherInfo

> Local scheduler specific information that may be used by
> metaschedulers to enhance metascheduling decisions.