Windows print spooler performance enhancements (240683)



The information in this article applies to:

  • Microsoft Windows Server 2003, Standard Edition
  • Microsoft Windows Server 2003, Enterprise Edition
  • Microsoft Windows Server 2003, Datacenter Edition
  • Microsoft Windows 2000 Server
  • Microsoft Windows 2000 Advanced Server
  • Microsoft Windows 2000 Professional
  • Microsoft Windows 2000 Datacenter Server

This article was previously published under Q240683

SUMMARY

Windows includes several print spooler optimizations designed to significantly reduce startup time. This article lists these print spooler enhancements.

MORE INFORMATION

Print spooler enhancements:
  • The Localmon.dll file (port monitor) and the Winprint.dll file (print processor) are now merged into the Localspl.dll file (local print provider). This decreases the number of .dll files the spooler has to load at startup.
  • The Spoolsv.exe file (router) was decoupled from the Spoolss.dll file at spooler startup time. Because of this, when the spooler first starts, the Spoolss.dll file is only loaded when the spooler is required to initialize. This could be either after 90 seconds, or when a client request comes in (for example, OpenPrinter, or EnumPrinters). Minimizing the loading of all the .dll files required by the Spoolss.dll file at startup time significantly reduces startup time.
  • A modification to the Userinit.exe file delays the initialization of the spooler until the Windows user interface is initialized.
  • The new spooler does only 4 disk Input/Output (I/O) operations at startup, reading 55 kilobyte (K), then 15K more on initialization: one in Advapi32.dll file, and the rest in the Pagefile.sys file, where it reads another 88K. Other .dll files are not touched until later. Compared to 115 disk I/O operations with the old spooler, reading a total of 994K, is a significant improvement.

    Note This is only considering direct I/O operations attributed to the Spoolsv.dll process; it does not take into account the savings on I/O resulting from interactions with other processes, as well as some central processing unit (CPU) savings.

Modification Type:MajorLast Reviewed:10/25/2005
Keywords:kbinfo kbprint KB240683