Per-CPU performance statistics are useless
Windows, Linux and OS X offer the ability to view the utilization of each CPU/core in the system. This is completely useless. On all these operating systems, tasks get switched from one core to another on a regular basis. (I don’t know why this happens, but I suppose there is no reason for it not to happen.)
Here is my CPU-bound single-threaded program running on a dual-core computer.

I suppose all one can really say is that if one has N cores and the average CPU% usage (over all cores) is approximately 100/N then probably one is running a program which can’t take advantage of multiple cores.
I would rather replace the current “CPU usage history, per core” multiple graphs with:
- One graph, showing a history of the average over all CPUs (visually the same as if one had a 1-core CPU).
- I would then add horizontal marker lines: If one had 4 cores, I would add 4 equally spaced marker lines. This would show that if the performance reached a marker line (e.g. 25% for the first line) then probably running the equivalent of 1 single-threaded program.
I mean it’s not a brilliant solution but I reckon it would be more meaningful than the way the information is currently displayed.
hi adrian,
under windows you can dedicate a process to a certain cpu core (see http://msdn.microsoft.com/en-us/library/system.diagnostics.processthread.idealprocessor(vs.80).aspx) (resp. http://msdn.microsoft.com/en-us/library/system.diagnostics.processthread.processoraffinity(VS.80).aspx)
, but I don’t know how achive this with java. under linux (debian) you can use taskset (wich is part of # apt-get install schedutils): example: taskset -c 1 -p 12345 dedicates core1 to process 12345. usefull for real-time critical processes.