<p>I have windows 2003 terminal servers, multi-core.  I'm looking for a way to monitor individual CPU core usage on these servers.  It is possible for an end-user to have a run-away process (e.g.  Internet Explorer or Outlook).  The core for that process may spike to near 100% leaving the other cores 'normal'.  Thus, the overall CPU usage on the server is just the total of all the cores or if 7 of the cores on a 8 core server are idle and the 8th is running at 100% then 1/8 = 12.5% usage.</p>

<p>What utility can I use to monitor multiple servers ?  If the CPU usage for a core is "high" what would I use to determine the offending process and then how could I automatically kill that process if it was on the 'approved kill process' list?</p>

<p>A product from <a href="http://www.packettrap.com/" rel="nofollow noreferrer">http://www.packettrap.com/</a> called PT360 would be perfect except they use SMNP to get data and SMNP appears to only give total CPU usage, it's not broken out by an individual core.   Take a look at their Dashboard option with the CPU gauge 'gadget'.  That's exactly what I need if only it worked at the core level.</p>

<p>Any ideas?</p>

[{'answer_id': 48173, 'author': 'simon', 'author_id': 4875, 'author_profile': 'https://Stackoverflow.com/users/4875', 'pm_score': 0, 'selected': False, 'text': "<p>perfmon from Microsoft can monitor each individual CPU. perfmon also works remote and you can monitor farious aspects of Windows.</p>\n\n<p>I'm not sure if it helps to find run-away processes because the Windows scheduler dos not execute a process always on the same CPU -> on your 8 CPU machine you will see 12.5 % usage on all CPU's if one process runs away.</p>\n"}, {'answer_id': 48177, 'author': 'Rob Walker', 'author_id': 3631, 'author_profile': 'https://Stackoverflow.com/users/3631', 'pm_score': 1, 'selected': False, 'text': "<p>Individual CPU usage is available through the standard windows performance counters.  You can monitor this in perfmon.</p>\n\n<p>However, it won't give you the result you are looking for.  Unless a thread/process has been explicitly bound to a single CPU then a run-away process will not spike one core to 100% while all the others idle.  The run-away process will bounce around between all the processors.  I don't know why windows schedules threads this way, presumably because there is no gain from forcing affinity and some loss due to having to handle interrupts on particular cores.</p>\n\n<p>You can see this easily enough just in task manager.  Watch the individual CPU graphs when you have a single compute bound process running.</p>\n"}, {'answer_id': 181638, 'author': 'Tomalak', 'author_id': 18771, 'author_profile': 'https://Stackoverflow.com/users/18771', 'pm_score': 1, 'selected': False, 'text': '<p>You can give <a href="http://www.quest.com/spotlight-on-windows/" rel="nofollow noreferrer">Spotlight on Windows</a> a try. You can graphically drill into all sorts of performance and load indicators. Its freeware.</p>\n'}]
['https://Stackoverflow.com/questions/48132', 'https://Stackoverflow.com', 'https://Stackoverflow.com/users/1513/']