The Windows NT printing subsystem is one NT component you can teach a few new tricks. NT has a sophisticated client/server printing model that can use server resources to maximize performance while minimizing the administrative and system resource burdens on the client. In addition, NT includes flexible and powerful features for sharing network and local printer resources. This functionality lets you browse for available printers, make direct connections to shared NT printers (i.e., local printer drivers are not required), and maintain printing support for all supported NT hardware platforms, UNIX systems, Macintosh clients, and NetWare network clients. In this article, I'll examine a few of the configuration options you can manipulate to improve local and network printing performance.

What Is Fast, Anyway?
With printer performance, the first question to ask is, "What defines fast?" For example, does fast mean a speedy return to the application, a maximized data throughput stream to the printer, or a print server that's operating at maximum efficiency? The answer determines which adjustments you'll want to make on your system. I'll describe the ramifications of each modification and what type of performance improvement each adjustment helps you to achieve.

When you use the Printer folder to modify a printer's configuration, take note of the Scheduling tab of a printer's Properties dialog box, which Screen 1, page 162, shows. This tab provides several options that can affect printing performance: Priority, Spool print documents so program finishes printing faster, Print directly to the printer, and Print spooled documents first.

The Priority slider sets the default priority for documents you send to the printer (i.e., the base priority level each document starts out with). The default setting is 1 (lowest priority), although you can increase this number and then decrease the print priorities of individual jobs. One approach is to create a common-use printer with the default setting of 1 and then create a separate high-priority printer that prints to the same printing device but has a higher priority setting. This configuration is useful for high-priority print jobs when you're sharing a printer or when key personnel require faster access to a printer.

The Spool print documents so program finishes printing faster option instructs NT to spool printed documents to disk where it despools them to the printer. This option provides the quickest return of application control to the user and doesn't negatively impact performance. When you select this option, you'll see two suboptions. The first option, Start printing after last page is spooled, waits until a job completely spools to disk before sending it to the printer. The second option, Start printing immediately, begins despooling a print job immediately after the job begins queuing. I prefer the latter option because it provides a quick return of application control and the fastest printing of documents.

You might not want to use the Start printing immediately spooling option in a networked environment where many users print from programs that take a long time to generate each page of output (e.g., a CAD or 3-D graphics application). This situation can result in in- efficient printer utilization and long waiting periods, especially with large print jobs. The printer becomes tied up waiting for the application to spool each page, because it will have begun printing immediately after the first page was spooled. At this point, the printer will wait for the application to generate each additional job rather than just spool data to the printer that's ready for printing. To maximize efficiency, choose Start printing after last page is spooled, which ensures the entire print job is available to the printer and is printed without waiting for the application. However, the printing application will remain unavailable until the last job spools to the printer.

An alternative to the Spool print documents so program finishes printing faster option is the Print directly to the printer option. This option instructs NT to send documents directly to the printer rather than queuing them to a disk file. I don't recommend this option in most environments because it can significantly delay the return of application control after you send a print job. However, if you want to ensure the fastest possible time-to-output and are willing to sacrifice the ability to continue using the system while the print job is in progress, you might consider enabling this option.

The Print spooled documents first option instructs the NT print spooler to favor documents that have finished spooling over those that are still spooling, even if the completed documents have a lower print priority than the spooling documents. If no documents are finished spooling, the spooler favors large spooling documents over small ones. This option provides the best overall printer efficiency, and I generally recommend that you leave it selected. When you disable this option, the print spooler prioritizes document printing based on print priority.

In most environments, selecting the Start printing immediately and Print spooled documents first options will ensure that documents print as quickly as possible to your printer and maximize the printer's overall efficiency. To determine which options are best, consider whether you require the ability to continue using the system during print jobs, whether the printer is shared on a LAN, and the length and page generation time of the print jobs users typically send to the printer.

Giving Print Job Priorities a Boost
In addition to letting you configure printers, the Printers folder lets you view the current print queue and manage documents in the queue. The owner of a printer, or anyone with the NT Manage Documents privilege on the printer, can change the priority of a queued job. To do so, right-click the job's listing in the queue, and choose Properties from the pop-up menu that appears.

In the Properties dialog box for the print job, you can move the Priority slider bar to the right to increase the job's priority in the queue. The print job priorities range from 1 to 99, where 1 is the default priority NT assignes to all jobs. By increasing a job's priority in a backlogged print queue, you can advance a job's position in the queue to print more quickly. Screen 2 shows an example of using the document Properties dialog box to change the priority of a queued document.

You can change print priorities on a document-by-document basis with this method, or you can change the default priority assigned to all documents from a particular printer. For example, you can set the priority for the boss' printer higher for a shared network printing device so that the boss' jobs always print ahead of other jobs.

To set the default priority for all jobs printed to a particular printer, open the printer's Properties window in the Printers folder, and click the Scheduling tab. In this tab, which Screen 1 shows, you'll see the same slider bar that appears in a document's Properties dialog box, except that the priority set here affects all new documents printed using this printer.

To use this option effectively, you need to create a local printer for the user receiving the higher priority print jobs and point this printer to the network location (Uniform Naming Convention--UNC--name) of the shared printing device. Otherwise, if you install the printer using the Network printer server option of the Add Printer wizard, any changes you make to the default job priority level will be the same for all machines sharing the printer.

You can also implement this solution by creating multiple printers in the printers folder, all of which point to the same physical printing device. The advantage of this method is you don't have to use a locally created printer on the client workstation. If you assign different default document priorities and group permissions to each printer, you can control who uses the low-priority version of the printer and who uses the high-priority version. Because high-priority jobs will always print before low-priority ones (except those that are already printing), this configuration accomplishes the same feat as my previous example. In addition, this solution can scale as you add more high-priority printer users to the network.

Creating Printer Pools
One of NT's interesting printing features, and one of the best features for optimizing overall print performance, is the capability to create a special type of printer known as a printer pool. A printer pool is one virtual printer that you associate with multiple physical printing devices, each of which is connected to a different logical (network or local) port. Use this setup to create a round-robin arrangement for a heavily loaded print destination. When you've defined a printer pool, NT can automatically spool waiting documents to the next available printing device rather than queuing all jobs to one printing device.

When you're creating printer pools, all printing devices in the pool should be identical. At the very least, all the member printing devices must be able to emulate the same type of print device (i.e., they can all use the same printer driver). When you send print jobs to this printer, NT routes the job to the first available print device. This configuration makes printing much faster because the queue is not stuck waiting for one printing device for despooling jobs. (For information about creating printer pools in NT, see Michael D. Reilly, "Printing With Windows NT," July 1997.)

Supercharging the NT Spooler
The NT Spooler service is responsible for much of the work during the NT printing process. In essence, the NT Spooler service is a print job scheduler and is part of a machine's local Print Provider service. The Spooler service has four primary responsibilities relating to the printing process: tracking what print jobs are going to which printers, tracking which ports connect to which printers, routing print jobs to the correct ports, and prioritizing print jobs. NT uses a separate process thread for each printer port. A thread calls the NT Spooler service whenever the thread completes a job or when an external thread initiates a print job. You can adjust the NT Spooler service to enhance its performance and ensure that it runs optimally.

Boosting spooler thread priorities.
Because the NT Spooler service is an application running on an NT computer, its worker threads receive a default thread priority, which is comparable to that of other noncritical system services. However, you can boost print server performance by increasing the default thread priority assigned to the NT Spooler service and its various components.

This adjustment might be helpful, for example, on a heavily taxed or dedicated NT print server that handles several jobs every day. In these situations, you can adjust the print-related Registry values to help print server speed and efficiency. You'll find the Registry values at HKEY_ LOCAL_MACHINE\SYSTEM\Current ControlSet\Control\Print. Screen 3 shows this Registry subkey and its default values. The values that we're primarily concerned with are the PortThreadPriority, PriorityClass, SpoolerPriority, SchedulerThreadPriority, FastPrintThrottleTimeout, FastPrintWaitTimeout, FastPrint- SlowDownThreshold, and NetPrinterDecayPeriod values. Each value can affect some aspect of print (or print browser) performance. Let's look at these values, their default data, and their possible data ranges.

   Prev. page   [1] 2     next page



You must log on before posting a comment.

If you don't have a username & password, please register now.

Reader Comments

Sean Daily’s “Tuning NT Printing” (June 1998) was extensive and interesting, but unfortunately, I didn’t find anything about printing from a DOS program. I use the NET USE LPTx statement for redirecting printing to a network device, but after I have executed printing in a DOS program, I have to wait 30 seconds for the printer to start printing. If I close the DOS program, printing starts immediately. I want to shorten the time between when I execute printing and when the printing physically starts. Novell NetWare provides the Capture command, which has a Timeout option, but I don’t know whether Windows NT has anything comparable.<br>--Jack Badow<br><br>

<i>The most likely solution to your problem lies within a Virtual DOS Machine (VDM)-related Registry entry that affects the timeout period NT uses when it waits for a DOS VDM-based print job to complete. The LPT_Timeout value entry (type REG_SZ) in HKEY_LOCAL_MACHINE\SYSTEM\\CurrentControlSet\\Control\WOW controls the amount of time NT waits for a DOS application to close a print job handle that an application opens. The default value is 15 seconds; you might experiment with lower values to see what setting improves your situation.<br>--Sean Daily</i>

Jack Badow

Again, there is nothing about network printing from DOS over terminal server. i'm trying to do exactly that, with the print queue held on a NetWare 4 server running NDS. I've managed to find out how to print, but not how to switch of banner pages, and also the notification message. I'm using Gateway Services for NetWare, and the Netware Client is not installed, so Novell's CAPTURE command doesn't work.

Caroline Lawson

Do you have any windows 2000 print server tuning I have a printer spooler issue. We have to restrat the spooler on 3 of our servers. they all have over 100 printers. I am spooling them to a drive with 32gig space. The erros we get before we require a spooler restart are printing missing text. Not printing at all. Can be on any printer, any user. HP and Xerox printers are used

Jason