I'd like to share a recent experience I had with respect to a migration project from NT4 (MF 1.8) to Win2k (MF XP). I'm presently engaged in a project for a large Fortune 500 insurance company that is in the process of wrapping up their migration. (I know.. NT4 is unsupported, blah, blah.. Anyway, the line of business that I'm contracting for had serious performance problems on the new server build that the enterprise team delivered. Despite the fact that we used to run ~100 users per server on the old quad 500 Mhz/2GB RAM servers, we we're having significantly worse performance on Windows 2000/MF XP using Quad 1.4Ghz/2GB RAM servers. That frankly didn't add up, and the enterprise folks in the Citrix group simply said, "Nothing can be done. The spooler service just doesn't scale as well on Windows 2000." The Microsoft and Citrix engineers that are onsite for this client agreed--a typical response IMHO. Somehow it just didn't make sense to me that hardware that was three times as powerful would perform worse just because it was Windows 2000, so I began scouring the Internet for anything related to the spooler service with high utilization. Obviously it took me a little while to get through the thousands of articles on this topic since it's one of the most frequently reported issues in Terminal Server environments. Anyway, I ran across this Microsoft KB article that turned out to be EXACTLY what was causing our degraded performance: http://support.microsoft.com/?kbid=840371
This issue affects Windows 2000 and Windows 2003 Servers and is a non-public hotfix. (THis means you'll have to call Microsoft to get it.) This hotfix only came out in May of 2004, so people have been living with this issue for some time. Can can tell if you're affected by this issue is one of two ways:
- Fire up Perfmon and monitor the CPU usage of the Spoolsv.exe process as TS sessions are logging off. (I usually will throw an Active Sessions counter up there so I can see the correlation between the session logoff and the spooler CPU consumption.) It's normal to see the Spoolsv.exe service spike up upon session logon and logoff, but if it goes to 100% and stays there for several seconds on a TS session logoff, you're probably affected.
- Bring up Task Manager and watch the CPU time allocated to the winlogon.exe process for each TS session. If the CPU time of the winlogon processes is measured in minutes not seconds, you're likely affected. NOTE: If your server has only been running for 10 minutes you won't likely see much CPU time allocated to each Winlogon process. Look at your servers that have active sessions all day long as that server likely had tens or hundreds of logoffs during those active sessions.
Essentially, after applying this hotfix you should see the spooler service be MUCH more tame upon a TS session logoff and you should see quite a reduction in the CPU usage of the Winlogon.exe processes for each user session. The issue has to do with the Spooler service communicating with each and every winlogon.exe process to tear down client printer objects.
From my experience with this hotfix, I've seen NO adverse affects on client printing and the environment is humming along better than ever. I consider this a MUST have hotfix for all Terminal Servers I deploy. I hope you consider it the same.