Diff for "Soyuz/JobDispatchTimeEstimation"

Not logged in - Log In / Register

Differences between revisions 3 and 4
Revision 3 as of 2010-03-12 10:29:41
Size: 1918
Editor: al-maisan
Comment:
Revision 4 as of 2010-03-12 10:39:23
Size: 1985
Editor: al-maisan
Comment:
Deletions are marked like this. Additions are marked like this.
Line 5: Line 5:
Please note that job dispatch times are ''estimated''. Alas, we have not mastered the art of writing psychic software yet :-) Due to technical limitations (the art of writing psychic software is not very well established yet :-) job dispatch times are '''''estimations''''' only.
Line 15: Line 15:
Builders can -- roughly speaking -- either be idle or building. For any job running on a particular builder its estimated duration and its start time is available allowing us to ''estimate'' the job's remaining execution time. Builders can -- roughly speaking -- either be idle or building. For any job running on a particular builder its estimated duration and its start time are available allowing us to ''estimate'' the job's remaining execution time.
Line 26: Line 26:
Wanted: the ''estimated'' dispatch time for a specific job in the pending queue i.e. for the job of interest (aka JOI). Wanted: the ''estimated'' dispatch time for a specific job in the pending queue i.e. an estimation for the job of interest (aka JOI).
Line 31: Line 31:
 1. how long will the jobs ahead of the JOI (in the pending queue) take to run. This is the ''preliminary lead time'' (PLT).
 1. how long will it take until the job at the head of the pending queue is dispatched to a builder (D2)? This is the ''time to next builder'' (TNB).
 1. how long will the jobs ahead of the JOI (in the pending queue) take to run? This is the ''predecessor lead time'' (PLT).
 1. how long will it take until the job at the head of the pending queue is dispatched to a builder? This is the ''time to next builder'' (TNB).
Line 34: Line 34:
The dispatch time estimation for the JOI is then: now + PLT + TNB. The dispatch time ''estimation'' for the JOI is then calculated as follows: `now() + PLT + TNB`

Dispatch time estimation for build farm jobs

Introduction

Due to technical limitations (the art of writing psychic software is not very well established yet :-) job dispatch times are estimations only.

For the purpose of this description a 'platform' is considered to be the combination of a

  • processor (e.g. i386 or amd64) and a
  • virtualization setting (one of: true, false or null)

Build farm jobs can either target a specific platform (e.g. binary builds) or be platform-independent (e.g. "generate a source package from a recipe" builds). The former can only make use of build machines (or "builders" in Soyuz parlance) of the given platform while platform-independent jobs may run on any available builder.

Jobs with an unspecified virtualization setting will be dispatched to virtual builders only.

Builders can -- roughly speaking -- either be idle or building. For any job running on a particular builder its estimated duration and its start time are available allowing us to estimate the job's remaining execution time.

By the way, did I already mention that job dispatch times are an estimation only?

Problem definition

Given:

  • a queue of pending (i.e. ready to build) build farm jobs sorted in descending order according to their score
  • a pool of builders

Wanted: the estimated dispatch time for a specific job in the pending queue i.e. an estimation for the job of interest (aka JOI).

Solution overview

There are two questions we need to answer in order to come up with a dispatch time estimation:

  1. how long will the jobs ahead of the JOI (in the pending queue) take to run? This is the predecessor lead time (PLT).

  2. how long will it take until the job at the head of the pending queue is dispatched to a builder? This is the time to next builder (TNB).

The dispatch time estimation for the JOI is then calculated as follows: now() + PLT + TNB

Soyuz/JobDispatchTimeEstimation (last edited 2010-03-14 11:58:03 by al-maisan)