[comp.unix.questions] Multi-Spoolers

milo@ndmath.UUCP (Greg Corson) (12/18/86)

Does anyone out there happen to have any (hopefully free) software that
allows a single print queue to drive more than one printer at a time?

In other words...I have one print queue and several printers.  Whenever
a printer becomes free I want the next job in the queue to start printing
on that printer.  There might be as many as 3 identical printers on the
system at one time and I don't want to leave the load-leveling job to
the users.

It would be really nice if each printer could have a "forms type" indicating
the type of paper loaded.  Then jobs would go to the first printer with
the right type of forms loaded.  This could be really useful as the lab
may eventually have a Laser Printer, 3 band printers, several decwriters and
a number of plotters of different types.  It would be nice if the users
only had to remember what type of forms they wanted and have the system
route them to the right printer/plotter automatically.

Greg Corson
seismo!iuvax!kangaro!milo

dpk@brl-sem.ARPA (Doug Kingston <dpk>) (12/19/86)

The Multi-Device Queueing System was written here at BRL about
4-5 years ago to handle just that type of situation, and has
been in production use here ever since with some slow evolutionary
enhancements.  The current release is version 2.11.  It can be
obtained via anonymous FTP from BRL-VGR.ARPA (arch/mdqs.tar[.Z])
if you have Internet access or by mail at the address below, but
be sure to include a tape (9 track, all popular densities supported).

MDQS knows about queues and devices.  There are mappings from
queues to devices with some server.  More than one queue can
map to a device, or a single queue can map to more than one
device.  There are servers to transfer requests to other machines
for processing via TCP/IP or UUCP.  There is a server for
processing batch jobs after restoring the runtime environment.
Devices have "forms".  Requests only get processed on devices
with the proper forms.

There is the normal complement of status, and control programs
for the queueing system.  It runs on either BSD or SYSV systems.

(And yes RMS, you can have it for GNU if you want.)

Cheers,
	-Doug-

  Doug Kingston
  Computer Science and Mathematics Branch
  Systems Engineering and Concepts Analysis Division
  U.S. Army Ballistic Research Laboratory
  Attn: SLCBR-SECAD (Kingston)
  APG, MD  21005-5066

mark@ems.UUCP (Mark H. Colburn) (12/19/86)

In article <161@ndmath.UUCP> milo@ndmath.UUCP (Greg Corson) writes:
>Does anyone out there happen to have any (hopefully free) software that
>allows a single print queue to drive more than one printer at a time?
>
>In other words...I have one print queue and several printers.  Whenever
>a printer becomes free I want the next job in the queue to start printing
>on that printer.  There might be as many as 3 identical printers on the
>system at one time and I don't want to leave the load-leveling job to
>the users.
>
>Greg Corson
>seismo!iuvax!kangaro!milo

You neglected to say what version of system you are using, but it is possible
to do this kind of spooling using the System V lp spooler.  By correctly
specifying printers and classes a user can send to a specific printer, or a
specific class of printers.

A class is a group of printers that share a similar characteristic.  For
example, we have three NLQ dot matrix printers here at the office.  If a
user wants the file to be printed  out as fast as possible, they may issue
the command 'lp -dlq <filename>' where '-d' specifies the destination, and
'lq' is a class of printers which contains the three NLQ printers.  The
file would get printed on the first available printer in that class.

If a user wanted the file printed on a specific printer, (i.e. the one nearest
his or her office, they would use the command 'lp -dprinter1 <filename>' where
'printer1' is the name of the printer nearest them.

There are a lot more features, but I will refrain from reciting them all here.
If you have System V and LP, then it might be the answer that you are looking
for to solve your problem.



-- 
Mark H. Colburn             UUCP: ihnp4!meccts!ems!mark
EMS/McGraw-Hill              ATT: (612) 829-8200
9855 West 78th Street
Eden Prairie, MN  55344

brandon@tdi2.UUCP (Brandon Allbery) (12/25/86)

Quoted from <99@ems.UUCP> ["Re: Multi-spoolers"], by mark@ems.UUCP (Mark H. Colburn)...
+---------------
| In article <161@ndmath.UUCP> milo@ndmath.UUCP (Greg Corson) writes:
| >Does anyone out there happen to have any (hopefully free) software that
| >allows a single print queue to drive more than one printer at a time?
| >
| >In other words...I have one print queue and several printers.  Whenever
| >a printer becomes free I want the next job in the queue to start printing
| >on that printer.  There might be as many as 3 identical printers on the
| >system at one time and I don't want to leave the load-leveling job to
| >the users.
| 
| You neglected to say what version of system you are using, but it is possible
| to do this kind of spooling using the System V lp spooler.  By correctly
| specifying printers and classes a user can send to a specific printer, or a
| specific class of printers.
+---------------

I have (nearly) written a print spooler (destined to be the UNaXcess Spooler)
which currently (almost) runs under System V.  (I began writing it to solve
a perceived problem with the "lp" spooler:  it (1) lacks a forms handling
feature, and (2) lacks a feature to automatically use the nearest free printer
in a class to the person/program doing the spooling.)  It is as yet incomplete,
but if you need something fast I can send you a shar file of what is written;
what needs to be done isn't too much, if you want a "basic spooler" system
(parts I haven't started yet are a full pagination system and generic print
mode interpreters, but you could probably do without them; so could we).  As
I said, it's written for sVr2.2; the features specific to sys5 (that I know of)
are mainly the spooler control via kill(-(pid_of_spooler), SIGTERM) to inform
the spooler and its descendants (de-queuers/print drivers) of changes of state
-- pqspool does a setpgrp() and sVr2 has the feature that if you send a signal
to the negative of a process group leader's pid (i.e. to -proc.p_pgrp), the
signal is sent to all processes in the pgrp.  This could probably be removed,
most easily by pqspool trapping the signal and forwarding it to all processes
in its driver list, since it works rather like a printer "init" process.

Yell if you want it.

[BTW:  other programs I've offered:  for some reason, the path from tdi2 to
mirror is a "you can't get there from here" affair, and I perfer mod.sources
for source postings.  HELP!!!  I have three programs waiting to go out --
UNaXcess 1.0.1, unisys, and sadp!]

++Brandon
-- 
``for is he not of the Children of Luthien?  Never shall that line fail, though
the years may lengthen beyond count.''  --J. R. R. Tolkien

Brandon S. Allbery	           UUCP: cbatt!cwruecmp!ncoast!tdi2!brandon
Tridelta Industries, Inc.         CSNET: ncoast!allbery@Case
7350 Corporate Blvd.	       INTERNET: ncoast!allbery%Case.CSNET@relay.CS.NET
Mentor, Ohio 44060		  PHONE: +1 216 255 1080 (home) +1 216 974 9210

ignatz@aicchi.UUCP (Ihnat) (01/07/87)

A fellow named John Collins, over the 'Big Water' (in England) distributed
a spooler over net.sources a couple of years ago that we've been running
ever since on the office machine.  It offers multiple printer support,
along with forms support, printer initialization, a simple accounting mechanism,
a fairly nice control interface (allowing suspension and cancellation of
jobs on a per-job basis), etc.  It uses only vanilla signals to communicate
between processes that comprise the spool package, and doesn't use 'signal-
answerback' signalling, so it is (rather rarely) subject to lost-signal
hits; but it's proven to be the best package we've found for the features
offered.

I haven't spoken with John for a year or so; I really should give him a
call, as he indicated that he was then planning some enhancements that
would be 'nice'.  I understand that h is (or was then!) marketing it in
the UK, but released it in the US because he didn't care for the hassles
of trying to defend it overseas. (don't ask me about legality; I'm just
the bitbeater in this instance.)  I agreed to be willing to be a source
and semi-support on this side of the ocean, but I suspect I ought to talk
to him again.  In any case, the package as released at that time is available
through me (I think its distribution predates mod.sources); Caveat Utilitor.
Bug reports accepted, action as possible.  Enough interest, and I'll try
to track John down...
-- 
	Dave Ihnat
	Analysts International Corporation
	(312) 882-4673
	ihnp4!aicchi!ignatz || ihnp4!homebru!ignatz