In your effort to boost your network’s printing performance, one of the best strategies is to optimize the spooling process. You can do so by making changes to the spool settings and system resources. I’ll share several specific techniques that you can use to make sure that documents are spooled as efficiently as possible.
Since you can configure network printing in so many ways, for the purposes of this article, I’m assuming that you’re using a Windows 2000 Server to host the print queue and that the actual printer is attached to a JetDirect print server. Two levels of spooling are going on. First, the individual workstations are spooling the print jobs until they can send the jobs to the print queue. The server hosting the print queue is then spooling the print jobs to the print server. I’ll focus on the process of moving the print jobs from the server that’s hosting the print queue to the print server. Once you understand this process, you can apply the same techniques to the workstations, so they will spool documents to the print queue more quickly.
Adjusting the spool settings
To control the spool settings, go to the server that’s hosting the network print queue and choose Settings | Printers to display the Printers window. Right-click on the printer that you’re hosting and select the Properties command from the resulting context menu. The printer’s properties sheet will appear. Select the Advanced tab.
You have two spooler options here. The first option is either to spool documents so that applications finish printing faster or to print directly to the printer. Because multiple people will be printing to the printer, use the option to spool the documents.
Next, you must select whether a document should start printing immediately or after the last page has spooled. There’s no clear right or wrong way to set this option; both settings have pros and cons. If you go with the default setting to start printing immediately, the system will spool and print the document on a page-by-page basis, and the user’s job will start printing almost immediately. The problem with this setting is that if two or more users send large print jobs simultaneously, the jobs could become mixed.
With the Advanced tab’s Print Spooled Documents First check box, you can make the printer available during times when it would otherwise be idle. I strongly recommend enabling this option for your network printer. Here’s how it works: Suppose one user is sending a large job to the printer and another user is sending a small job. The default rule is that the job that goes into the print queue first prints first. If the big print job gets to the print queue first, no one else can print until that job has finished spooling and printing, even if it takes all afternoon. If, on the other hand, you enable the Print Spooled Documents First option, smaller jobs will print while the big job is spooling. The big job won’t print until it has spooled. Best of all, the big job won’t take any longer to complete than it normally would.
Examining system resources
The second part of the print spool optimization process is using the available system resources in a more efficient manner. You can make changes in several types of system resources. I’ll examine each major resource and tell you what to do with it. Keep in mind that, although performance monitoring is never a bad idea, using the Performance Monitor is beyond the scope of this article.
More on Performance Monitor
If you’re interested in examining resources through the use of the Performance Monitor, take a look at these TechProGuild articles:
- “Use Performance Monitor to discover your server's peak usage”
- “Working with Microsoft Windows 2000's Performance Monitor”
- “Understanding NT's Performance Monitor”
Hard disk space
When it comes to network print spooling, perhaps no resource is as important as the hard disk. Remember that the spooling process writes the document to the hard disk before sending it to print. Furthermore, it’s possible that several large documents could be spooling simultaneously. This means that the hard disk used for print spooling needs to be both large and fast.
By default, Windows spools print jobs to the %systemroot%\System32\spool\PRINTERS folder. This is actually a terrible place for a network print spool, because the %SYSTEMROOT% folder is heavily used by the system.
If your network printer gets a lot of use, I recommend installing a dedicated hard drive for print spooling. If the server hosts several heavily used printers, you could go so far as to implement a dedicated RAID array, but most of the time, doing so would be overkill. If installing another drive is out of the question, try to locate a partition on your server that isn’t heavily used but that has lots of free space.
Once you’ve installed the new drive or found a new location for the print spool, close the printer’s properties sheet and return to the Printers window. With your network printer selected, select the Server Properties command from the File menu. You’ll see the Print Server Properties sheet. Select the properties sheet’s Advanced tab and you’ll see the spool folder location. Set the spool location to the new location.
Notice that the Advanced tab also contains options for logging spooler errors, warnings, and information events. You can also set the spooler to beep when there’s an error related to a remote document, and you can send users messages when their jobs complete. All of these options affect performance minimally under normal circumstances, and you may set them any way you want.
Someone once asked me why they should shell out good money for a JetDirect print server when they could just attach a printer directly to a Windows 2000 Server and simply share the printer. One reason is that, by using a JetDirect box (or any network printer, such as Oki Data’s C7200 or Lexmark’s Optra S 2455n), you can place the printer anywhere on the network rather than being confined to the area near the server. More importantly, though, using a JetDirect print server is much faster than sharing a local printer. Keep in mind that the speed at which the print queue can send jobs to the printer is limited to the speed supported by the physical connection to the printer. Typically, the connection is made with either a parallel cable or a USB cable.
If, however, a printer were to use an internal JetDirect card, then you could send jobs to the printer at 100 Mbps rather than the 12 Mbps offered by a USB connection. (Although printing at 100 Mbps sounds really fast, remember that, in most cases, the printer is unable to benefit from the full 100 Mbps. The 100 Mbps is the total bandwidth supported by the network and usually other network traffic is competing for that bandwidth.)
If you want to use your printer to its full potential, install another network card in your server and attach that network card directly to the printer via crossover cable, or use a dedicated hub to connect the network card to the printer. In doing so, you will have created a dedicated backbone for the printer and ensured that the printer is able to receive data from the print server at a full 100 Mbps, so it can print as quickly as possible.
Processor and memory
The processor and memory are also heavily taxed during spooling. If the server that hosts your print queue is heavily used, I suggest a minimum of two processors and 512 MB of memory. However, as any good network administrator will tell you, it’s foolish to blindly add resources to the system. You must figure out how your system is using its existing resources before you invest in more. This is where Performance Monitor comes in. (See the many excellent articles on the TechRepublic Web site on performance monitoring.)
To get a general feel for how your system is using its resources, pick a time when nothing is printing or spooling and press [Ctrl][Alt][Delete]. Then click the Task Manager button. When the Task Manager appears, select the Performance tab, which will show you your system’s current memory and processor usage.
While you’re watching the Performance tab, have someone send a large print job. You can observe the impact the print job has on system resources. If either the processor or the memory usage jumps dramatically in comparison to what’s available, consider more performance monitoring to find a median level of CPU usage and see if the one large print job that just spiked your system was a fluke. I recommend using Performance Monitor because your system may have insufficient resources or may be using its available resources inefficiently. Only by using the Performance Monitor to track down bottlenecks will you be able to tell which is the case.
Remember that you can always approach a problem in several ways. With network printing, you have to be absolutely sure that your print server is designed for the job you’re hitting it with, that the spools are configured to work efficiently with your users’ printing needs, and that you have sufficient hardware for the job.