[saga-rg] Comments on the job API (revision 1.4)

Andre Merzky andre at merzky.net
Mon Mar 6 15:22:41 CST 2006


Hi Chris, 

Quoting [Christopher Smith] (Mar 06 2006):
> 
> FWIW
> 
> I see the JobService as being closely coupled to the resource manager, such
> that the constructor of the JobService could take the address of an RM
> endpoint. 
> 
> I'm also not sure of the usefulness of having separate createJob and run
> methods, rather than submitJob ... and I can't recall the conversations that
> lead to the distinction. :-)

The main reason is the required ability to handle large
bulks of jobs:

  saga::task_container tc;

  for ( int i = 0; i < 100000; i++ )
  {
    saga::job j = js.create_job (description);

    // remember: job implements task
    tc.add_task (j);
  }

  // ran these jobs as bulk:
  tc.run ();


> I do believe that jobs started with runJob are still "jobs" and should be
> added to indices. runJob is just a shortcut method (we had lots of
> discussions about whether to add it or not).

Right, run_job is just a shortcut, avoiding the
job_description altogether.

Cheers, Andre.


> -- Chris
> 
> On 3/3/06 03:35, "Graeme Pound" <G.E.POUND at soton.ac.uk> wrote:
> 
> > Hi,
> > 
> > I have some comments on the job section of the Strawman API (revision 1.4).
> > 
> > Thanks
> >    Graeme
> > 
> > 
> > 
> >   -3.37 I do not understand the purpose of job_service.get_self() which
> > returns a Job object.
> > 
> >   -3.38 I like the removal of the JobInfo and JobExitStatus objects from
> > the API, and adding this information as attributes to Job. This
> > streamlines the API, the concept of read only attributes also makes
> > sense [to me] within the context of the Job object.
> > 
> >   -3.39 I like the simplification of the job_state enumeration. NB This
> > is called 'state' in the SIDL and should be corrected to 'job_state'.
> > 
> >   -3.41 The separation of the JobService.submitJob() method into two
> > methods JobService.createJob() [create the job object] and Job.run()
> > [start the job] has not been seamless and there are several of
> > conceptual and practical problems. This needs to be fine-tuned further.
> > On many [all?] resource managers there is no separation between
> > submitting a job to the resource manager and manually starting the job,
> > this raises the following problem:
> >          - Job objects are identified via the job_id which is described
> > as the  "job identifier as returned by the resource manager".
> > Unfortunately since this information will only be available upon
> > submission of the job (via Job.run()) this breaks the methods
> > JobService.list() and JobService.getJob(). It is now impossible to
> > manage an index of Job objects within JobService based upon the job ID.
> >          - What is the conceptual relationship between the JobService
> > and the resource manager? At present this is a little confused in a
> > couple of ways.
> >              #1 Should there be a one to one relationship between
> > JobService instances and resource managers; i.e. should the resource
> > manager endpoint be specified in the JobService constructor (or
> > otherwise as an argument to JobService.createJob())?
> >              #2 The term JobService implies a close relationship to the
> > resource manager. Previously JobService.submitJob() corresponded to
> > communication with the resource manager. Now JobService.createJob()
> > corresponds to the creation of instances of the Job class the JobService
> > is acting as a factory. It may beneficial to rename JobService to
> > JobFactory to clarify the relationship.
> > 
> >   -3.42 Should Job objects created by runJob() be added to the index
> > managed by the JobService? Or in other terms, should JobService.runJob()
> > be a Java 'static' method?
> > 
> > 
> > 
> > 



-- 
"So much time, so little to do..."  -- Garfield





More information about the saga-rg mailing list