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.

One Response to “Per-CPU performance statistics are useless”

  1. axel Says:

    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.

Leave a Reply

XHTML: You can use these tags: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <strike> <strong>

For inserting HTML or XML please remember to use &lt; instead of <