CSRSS & CPU Usage
Customers of my Game Server Company may have noticed recently that we moved to a new server (if you didn’t notice, you probably didn’t get the several emails I sent out informing you of progress every step of the way!). Anyway, I noticed today that between them, CSRSS.exe and Hardware Interrupts where taking up 25% of the total processing power, which is exactly one core (it’s a quad core server and since CSRSS isn’t multi core aware it can only max out 1 core).
Normally, CSRSS uses less than 1% of total CPU, and Hardware Interrupts only uses a lot of CPU if there is a problem (such as your disk drive being put into PIO mode). I adjusted the affinity of CSRSS so that it only used one core, and all of the hardware interrupts also happened then on that core. CSRSS was defiantly at fault here.
A quick bit of Googling lead me to MS KB 934330. This describes an instance where CSRSS uses more than 50% of CPU resources when connected via remote desktop, which is the problem I was experiencing (i’m assuming they are using just the 1 core). While there is no official patch, they have a hotfix available, and recently Microsoft have started being a bit more generous with Hotfixes, you don’t have to contact support any more – just get it sent straight to your email.
I applied the hotfix, rebooted and the problem had gone away – no more CSRSS using lots of CPU. If you also have this problem i’d reccomend applying the hotfix rather than let CSRSS waste your CPU cycles.
Oh, if you’re wondering how I viewed Hardware Interrupt CPU usage, I use Process Explorer – an excellent replacement for task manager, showing CPU to 2 decimal places, and lots of other handy features. Plus it’s regularly updated and free.