HP3000-L Archives

January 1996, Week 2

HP3000-L@RAVEN.UTC.EDU

Options: Use Monospaced Font
Show Text Part by Default
Show All Mail Headers

Message: [<< First] [< Prev] [Next >] [Last >>]
Topic: [<< First] [< Prev] [Next >] [Last >>]
Author: [<< First] [< Prev] [Next >] [Last >>]

Print Reply
Subject:
From:
Stan Sieler <[log in to unmask]>
Reply To:
Stan Sieler <[log in to unmask]>
Date:
Fri, 12 Jan 1996 16:10:18 -0800
Content-Type:
text/plain
Parts/Attachments:
text/plain (100 lines)
Hi,
 
I'm reluctanctly commenting...  reluctanct because this topic has so many
areas that should be discussed, and priorities to resolve, that I think
a face to face meeting (IPROF) would be best.
 
On priority of jobs:
 
How about:
 
   1) Job Queues are defined somewhere, somehow (possibly a simple flat
      ASCII file, possibly via commands (e.g.: from SYSSTART or later)
 
      (Whether or not the job queue definitions are permanent is not
      relevant to this aspect of the discussion).
 
      I don't mind having a "new queue" / "purge queue" / "alter queue"
      command (not command file!) set, but would definitely prefer
      a non-permanent data structure (speed of implementation,
      flexibility of internals design).  Also don't care for the "read a flat
      file frequently" approach of Unix.
 
   2) INPRI makes sense only within a job queue, not across job queues.
 
   3) Each queue is limited independently of all other queues.
 
      After all, the precise reason I want separate queues is to have
      separate limits!
 
   4) Perhaps no system-wide limit exists.  If it does, then when a job
      terminates from ANY queue, then the "pick next job" logic is:
 
        scan queues in priority order (a queue attribute at creation time)
        (queues with identical priorities are scanned in chronological
        creation order).
 
        First queue with a job ready to go, and queue has less than its
        limit already running, gets picked.
 
        Which job within the queue?  The one with the highest INPRI (or,
        in case of matching INPRIs, the "oldest" as today).  (Note:
        today, it isn't the true "oldest", but the oldest unchanged highest
        INPRI.)
 
   5) Each queue may, optionally, have a default workgroup associated with it.
      For sites without Workload Manager, the "workgroup" allowed is only
      CS, DS, or ES ... I.e.: dispatcher priority info.
 
   6) If a newly introduced job in queue FOO lacks a workgroup on JOB card,
      it inherits the queue's default workgroup (if any).  If none, the
      normal workload manager heuristics are used.  Probably want to be
      able to define a default workgroup for a queue like:
              WORKGROUP=<workgroup name> [, <DEFAULT | ONLY> ]
      ONLY would mean: can't be overriden by user (can be by operator).
 
   7) SHOWJOB should sort by queue, then job# within queue.
 
   8) Sessions should be independent of queues.
 
      or:
 
      Every queue has an attribute: TYPE = <BATCH | SESSION>
      A queue with TYPE=BATCH is only for batch jobs, one with SESSION is
      only for interactive sessions.
 
      Coupled with a QUEUE= on the HELLO command, or a default session
      queue for interactive logons,
      this would allow sites to say "10 interactive users in ONLINE queue,
      3 interactive users in SALES queue, 3 batch jobs in SALESWORK queue".
 
      If a QUEUE= is allowed on the HELLO command, enforcement of any
      restrictions like "salespeople may not use the OP queue" is left to
      the student and/or system-logon UDCs/programs/tools.
 
      Note that a default queue-per-user is easily extended to be two
      default queues: one for HELLO (session), one for JOB (batch).
 
 
My basic philosophy is: simple, powerful, flexible, extendable.  HP doesn't
have to implement the world's best queueing mechanism ... a good basic
mechanism plus hooks for extension would be fine.
 
 
Hooks:
 
   No matter what queue structure is eventually picked, even if *none* is,
   the JOB process should have a new AIF:PE interceptable routine it calls:
 
      select_next_job_to_start (var status : hpe_status;
                                var js_num : integer (or js_num_type?));
                                var none_ready_to_start : boolean);
           (all are output parameters)
 
   This single concept would immediately open the door up to efficient
   CSL and third party job schedulers.
 
--
Stan Sieler                                          [log in to unmask]
                                     http://www.allegro.com/sieler.html

ATOM RSS1 RSS2