Printer load balancing
Printer load balancingPrinter load balancing automatically distributes print jobs between two or more printers. Load balancing is generally used to equally distribute print jobs across a pool of printers saving valuable time in document output for the user and at the same time balancing the wear and tear among printer devices. means distributing the printing load between two or more printers. While this can be implemented quite effectively by relying on users to pick a printer that is free, thereby distributing the load, the term generally refers to automatically managed load balancing.
You can implement load balancing in PaperCut NG as part of Find-Me Printing as discussed in the preceding section, or separately without the need for Release Stations in a direct printing environment. This section discusses load balancing in general including how it works, as well as how to set it up in a direct printing environment (without Release Stations).
You can implement load balancing at several different layers (none of which are usually mutually exclusive), including:
the hardware/network layer, otherwise known as clusteringClustering allows your organisation to ensure your services are not affected if anything should happen to your main server. PaperCut is a cluster compatible application and is supported under Windows (Microsoft Cluster Server / MSCS, Microsoft Failover Cluster Manager / MSFCM, Vetitas Cluster Server / VCS) and Linux (Novell Cluster Services / NCS, Linux-HA) at all levels of the application, including: clustering at the print spooler service layer by integrating with clustering services, failover based clustering at the Application Server layer using clustering services, and at the database layer by utilising cluster aware databases such as Microsoft SQL Server, PostgreSQL, or Oracle. (see Clustering and high availability).
the operating system layer, known as printer pooling in Windows and Novell environments, and CUPSCommon User Printing System (CUPS) is a printing system for Unix operating systems that allows a computer to act as a print server. A computer running CUPS is a host that can accept print jobs from client computers, process them, and send them to the appropriate printer. classes in Mac and Linux.
within PaperCut NG itself, which is the topic of this section.
PaperCut NG adds value to the load balancing available in clusters and operating systems by ensuring equal load between printers. For comparison the primary objective of Windows printer pools is to provide fault tolerance while load balancing is secondary and to a large extent non-existent. Printer pooling on Windows often picks the first available printer in a predefined order. The result is that wear and tear of printers is not even; the first printer in the group has the heaviest usage and the others might be mostly idle. SysAdmins often mitigate this by rotating printers periodically. With load balancing in PaperCut NG none of this is necessary: jobs are distributed evenly between queues based on intelligent algorithms taking into account several factors:
An estimate of the current print load (i.e. pages remaining to print) by inspecting past print history. The estimate is done by using a Pages Per Minute (PPM) for an average printer, however, PaperCut NG improves on the PPM value by "watching" the printer and learning over time.
The printer that is likely to get the job done quickest is selected.
If all printers are currently equal (e.g. all idle), then a random printer is selected. This ensures that over time, load is distributed evenly.
Printers currently in an error condition are avoided if possible.
(Optionally) Printers a user has recently printed to.
Find-Me Printing also makes use of printer load balancing while giving users the option of where to send their print job. For more information about Find-Me Printing see Find-Me printing.
Implementing load balancing in PaperCut NG is best described by way of example. The following section covers a common scenario for implementing printer load balancing.
Example 1: Simple load balancing
The science department at East Beach High School has a computer lab with a high volume of printing. Students send their print jobs to the nearby print lab, which hosts two high volume laser printers of the same model.
The current print queues are named sci_laser_1 and sci_laser_2, and are hosted on the print serverA print server is a system responsible for hosting print queues and sharing printer resources to desktops. Users submit print jobs to a print server rather then directly to the printer itself. A print server can be a dedicated server but on many networks this server also performs other tasks, such as file serving called science-lab. Both queues use the same printer driverA printer driver or a print processor is a piece of software that converts the data to be printed to the form specific to a printer. The purpose of printer drivers is to allow applications to do printing without being aware of the technical details of each printer model. and settings.
In this scenario there is some natural form of load balancing, as students can select a queue at random or perhaps know which queue is available. Ideally this load balancing would be automatic, and students do not need to worry about which queue to select.
The first step is to create a new print queueA print queue displays information about documents that are waiting to be printed, such as the printing status, document owner, and number of pages to print. You can use the print queue to view, pause, resume, restart, and cancel print jobs. on the print server. This queue will be a virtual queue. Students will print to this virtual queue, and PaperCut NG handles the load balancing to the target ("real") queues.
A new queue called sci_laser is created by the administrator on the science_lab print server using the normal methods for the operating system in use. The queue is created using the same driver that sci_laser_1 and sci_laser_2 use. The queue points to the same physical printer that sci_laser_1 points to. This last point is not strictly necessary but some printer drivers complain if they do not point to a real printer.
The administrator ensures that the print queue has registered itself with PaperCut NG by checking the Printers tab of the Admin web interface. For more information about adding printers, see Add and remove/delete/ignore printers.
Following creation of the new queue the administrator performs the following:
Click the Printers tab.
The Printer List page is displayed.
- Select the sci_laser printer.
In the Configuration area, change the Queue type to This is a virtual queue (jobs will be forwarded to a different queue).
The Job Redirection Settings area is displayed.
Jobs may be redirected to these destination queues determines which queues sci_laser is capable of redirecting to.
- Select science-lab/sci_laser_1 and science-lab/sci_laser_2.
Now when students print from a lab computer to the virtual sci_laser queue PaperCut NG intelligently redirects the job to either sci_laser_1 or sci_laser_2, as illustrated by the image below (Simple Load Balancing).
The administrator can now optionally un-share the sci_laser_1 and sci_laser_2 queues. Doing so ensures that all printing is via sci_laser and therefore, load balanced.
Bypassing load balancing for recent print jobs
Students printing multiple documents might not want their print jobs distributed between multiple printers - especially when they're at opposite ends of the lab! PaperCut provides the capability to bypass Load Balancing for multiple recent print jobs.
By default, this feature is enabled and is set to a window of 20 seconds, that is, a print job is not considered for Load Balancing if a user has printed up to 20 seconds ago, and is sent to the previous job's destination instead.
To configure this setting:
Click the Options tab.
The General page is displayed.
In the Actions menu, click Config editor (advanced).
The Config EditorThe Config Editor stores information used by PaperCut to configure advanced options and functions. This information is stored in config keys, which are editable by an administrator. page is displayed.
- Modify the config setting print.load-balancer.default.reuse-printer-window-seconds. Set this value to 0 to disable this feature.