If the single program supported multi-threading, then yes it could be
using both CPUs more or less equally. What multithreading does is take
one program and break it up into multiple simultaneous "threads",
which are parts of the program that may run independantly. For
instance, adobe photoshop may have the user interface run in one
thread, while complex calculations run in another thread. This would
allow the user interface to still be responsive while performing
complex calculations.
However, the majority of consumer level software is not multithreaded
or multi-processor aware, and thus you will get the best benefit from
running multiple simultaneous applications. A single application will
not often do an effecient job of distributing the processing load
equally between two processors in a multi-cpu computer. Notable
exceptions are high end rendering software, graphics manipulation
programs, some video editing software, most database software, and
many other "server class" software products, most of which will do a
fairly good job of making full use of multiple cpus.
Directly related to your excess cpu usage noted, the TOP faq [
http://www.groupsys.com/topinfo/faq.html ] question #14 mentions that
you may see cpu usage readings in excess of 95% if you compile the
program incorrectly.
more info including the latest download of top is available here: [
http://www.groupsys.com/topinfo/ ]
The man page for top [ http://www.fmrib.ox.ac.uk/cgi-bin/man-cgi?top+1
] implies that the program will tell you which cpu is being used by a
process, so this may help you determine exactly what is going on.
Winstone is a prominant benchmarking program for windows. The website
for etestinglabs.com [
http://www.etestinglabs.com/bi/cont1998/1998print/doubleup.asp ] talks
a bit about dual processor systems with the winstone benchmark:
"Until this year, Winstone's tests--even those in High-End
Winstone--showed very little improvement when you ran them on
dual-processor systems. The reason was the amount of overhead involved
in the work that applications do: Though multi-threaded operations in
an application can take advantage of a second processor, most of the
operations most people perform are not multi-threaded. Those
single-threaded operations are so prevalent that they mask the effect
of a dual processor. You can also see the advantage of a second
processor when you run two or more programs at the same time, but the
standard Winstone tests ran only one application at a time."
So basically, your average home pc user will not see a 2x speed
improvement with dual processors in the real world when running just
one application at a time.
I provide some benchmarking provided by tomshardware.com to compare
two dual processor motherboards running with one or both processors at
once [ http://www.tomshardware.com/mainboard/01q1/010201/dual-06.html
]. The first benchmarks being 3d rendering, they showed 100% speed
improvement when using both processors. Their office applications
benchmark showed closer to a 5% improvement in speed when using both
processors vs using just one. Compiling a linux kernal showed about
50% improvement in speed for using both processors.
The general concensus amoung the sites I've viewed is that running a
dual cpu setup can provide a more responsive computing environment due
to one program not being able to hog all the cpu power at once, but
that you only really get significantly faster speeds when running
multiple applications or specifically tailored applications. Also,
I've read some comparisons between dual processor motherboards and
similar motherboards that only support one cpu, that have found the
single cpu motherboards to be faster due to more aggresive memory
speed and better overall efficiency and use of the latest
technologies. Unfortunatly, I was unable to locate these articles.
However, to get back to the main question, there is a low likelyhood
that your program that is running at 100% usage is using both
processors at once. Only high end software is designed to do this
efficiently if at all. Typically, even multithreaded software has one
thread that does the brunt share of the work, meaning you will not get
a 100% speed increase when using a dual processor system. When running
games that are only single processor "aware", you may actually see
decreased performance with the dual cpu board, since the dual cpu
boards typically have slower memory technology.
So in conclusion, a 1 cpu setup would not run about half as fast as a
dual cpu setup, and especially not when running just a single
application (excepting for 3d rendering), but a dual cpu setup under a
certain environments, such as a server environment, is still a great
asset.
If you are not satisfied with this answer please request that I
clarify my answer before giving a rating, as I would be happy to
modify the answer to better meet your needs. |