- You have a server running Windows Server 2008 R2.
- The server has the Remote Desktop Session (RDS) Host role installed.
- Users are connecting to the RDS Host remotely using Remote Desktop Connection or another third-party remote desktop connection application.
- Network printers have been installed manually via Point and Print or they are assigned automatically to users during logon by an application or script which is using the PrintUI command as noted below:
In this scenario, you may see the Print Spooler service (spoolsv.exe) consuming 100% CPU utilization on one processor during the installation of the printer driver for each printer queue being created as the user logs onto a server with their Remote Desktop Connection. Once the network printer has been installed for the user and the connection is maintained this problem may not be as noticeable.
Note: This issue is more evident if the RDS Host server is a Virtual Machine (VM) running on a Virtual Server and the virtual machine settings have allocated only one CPU for the VM.
By using a Package-Aware driver on a RDS Host server instead of using TS Easy Print, additional overhead will be generated when installing the network printer. This overhead manifests as high CPU usage and high disk I/O due to the driver package being downloaded to the client and expanded. At that point, the expanded files are parsed to see if any of the files are new to the system or are updates to existing files. This is done for each new print connection and for any existing connection that has been updated on the print server.
This behavior can be mitigated by installing the following hotfix:
Using Terminal Services Easy Print Driver
Print Management Step-by-Step Guide
What's New in Print and Document Services