CPU usage graph in Task Manager (XP) - What does % mean?

Status
Not open for further replies.

jonjan

Distinguished
Apr 27, 2006
97
0
18,630
There is a graph for the CPU, in Task Manager (XP)

2jwfgy.jpg


What exactly does this graph show...


-Does it show a queue (data waiting to be processed)
-Does it show the CPU run-time, or % of CPU's maximum ability to process

Does any % above zero mean that new processes will need more time to complete?

In other words, say the CPU graph shows 90%... and another bunch of data reaches the CPU to be processed. Would it be processed any slower, compared to if the CPU graph was showing 10%?


Context - I am running charting software (simple 2D charts and basic calculations - screenshot below). There are bottlenecks at times.. an extreme case is the software locking up for 1-2 seconds, before catching up with the real-time data.

The CPU is a 2-core 2.26Ghz, 32-bit.
At times, Core 1 will be as high as 90% in the Task Manager graph, and Core 2 can be as high as 70%.
Question is if a higher speed CPU will necessarily result in better performance?

1081_MBTDesktopPro_2.jpg


Other info:
--The GPU is not the bottleneck. MSI Afterburner shows that the software uses the GPU very little. (256MB dedicated radeon HD 3650, at about 0-10% usage)
--RAM amount is not a bottleneck, but speed could be. Not sure how to measure this, but will be upgrading the ram to the fastest speed and more than enough GB.
--HDD speed does not appear to be a bottleneck, but I am not exactly sure how to measure this. Using perfmon.exe, the highest Disk Queue Length was 4.xx, and the average number was .05. The bottleneck lock-up was more many more pieces of data than 4, so this doesn't appear to be the bottleneck. 7200rpm now, and would only get a SSD if it was sure to help.
 
Solution
The chart shows what percent of the time each thread was busy computing.
You might think that so long as you are <100%, you are ok, but it is not as simple as that.

Is your app multithreaded?
If not, what you might be seeing is the same thread being dispatched alternately on different threads.
In the pure case, a apparent load of 50% might be absolutely 100% for your particular task.

Even multithreaded apps will have some parts that require linear processing.

Or... how many other competing tasks are around?

What cpu are you using?
A duo at 2.26 might be a P8400 which has a passmark rating of 1492.
If it is a pentium M laptop cpu, then the rating might be as low as 564.

Modern cpu versions like ivy bridge are much more efficient per...
well, i am not familiar with what you do but ill try to pitch in ideas nonetheless.

yes i believe that a faster processor would help, the utilization is shown in percentage, so a higher (faster) processor would do things faster hence be at a lower load. as for the 2 second lock up, im not sure where to attribute that to, it can be software (by design), or hdd or something.

as for the ssd (i use one myself, but for games and os), if what you do reads/writes to the hdd often then getting an ssd would probably help. of course it would be ideal if you can borrow one and test it.

stock market?
 
The chart shows what percent of the time each thread was busy computing.
You might think that so long as you are <100%, you are ok, but it is not as simple as that.

Is your app multithreaded?
If not, what you might be seeing is the same thread being dispatched alternately on different threads.
In the pure case, a apparent load of 50% might be absolutely 100% for your particular task.

Even multithreaded apps will have some parts that require linear processing.

Or... how many other competing tasks are around?

What cpu are you using?
A duo at 2.26 might be a P8400 which has a passmark rating of 1492.
If it is a pentium M laptop cpu, then the rating might be as low as 564.

Modern cpu versions like ivy bridge are much more efficient per clock cycle.
Even the cheapest $50 G1610 celeron of today @2.6 has a passmark rating of 2652.
Or, one of the strongest duo's mighr be the $150 i3-3240 would be 4363.

Is it time to change out your cpu?

On the hard drive size, the ssd will make everything feel much faster.
A SSD is 50x faster than a hard drive in random I/O. That is what the os does mostly.
A SSD is 2-3x faster in sequential.
A SSD is one of the most satisfying performance upgrades you can buy today.
If a SSD can hold all of your data, you are golden.
If not, at least buy a 120gb ssd for the os and some apps, putting larger sequential files on the hard drive.
 
Solution
sorry for the double post, yes, i agree with the multi threading.

you can check from task manager, under perf tab, to see how many cores are busy. if both (or all, depending on how many you have), then that is a good sign.
if the application is relatively new, then it should be multi threaded
 

jonjan

Distinguished
Apr 27, 2006
97
0
18,630
Ok, so the lower the % in the graph, the faster new processes will be completed.

Assuming there was a 1-core, 1-thread 2.26GHz CPU,, with 1 application running...
and the Task manager graph showed usage the % between 20-90%

--How would each of these affect the speed of processing:

-upgrading to 3Ghz CPU
-upgrading to 3.4Ghz CPU
-upgrading to 4Ghz CPU
(assuming all other factors are the same (1-core,1-thread, same cache size, everything else the same)


 


Not so simple.
Unless you show high cpu utilization, the time to complete tasks is usually more dependent on other factors, notably the hard drive speeds.
Or perhaps the lack of ram. If you suffer a demand page fault while processing, then you will show low cpu utilization while waiting for it to be resolved from your drive.

And... the cycle times are not all the story. There is a big difference in cpu capability from one generation to the next, and between Intel and amd.
With the latest generation of cpu's, the intel chips are some 25% faster per clock than amd.
Amd makes up for the difference by pricing, and the availabulity of more cores.
More cores is helpful if your situation can effectively use them.

If your app performance is not meeting your needs, and you are dealing with components that are more than three years old, it is probably time to upgrade.
 

jonjan

Distinguished
Apr 27, 2006
97
0
18,630
Thanks guys

More than a few answers here, so I'll separate the sections...

-The charting software appears to be single-threaded. watching task Manager, there is only 1 process listed in the Processes tab, and it and System Idle process were the only 2 processes constantly using CPU %. Ocassionally another process would run and use 25% or less of CPU.
((Tech support said the software will use multiple cores... possibly doesn't apply to my exact usage))
-The software is written in 32-bit.
-When charting software is running, no other programs are running.
-Charting software uses about 100MB,, rest of PC uses another 1.3GB

Current CPU is a P8400 (Core2Duo 2.26GHz). Laptop runs XP Pro 32-bit.
2GB of ram @ 1066 installed.


I am building a new PC, so my main aim here is to determine what was causing the software to lock-up occasionally... in order to be sure to avoid it in the new build. Eventually the PC will be upgraded sufficiently, but it will be initially build using


The software is for stocks, yes. In real-time, for every trade that happens in the world, on any displayed chart, the software will update the chart in real-time.
There are about 8 charts, so that's 8 different prices being updated, as well as 64 other types of calculations being displayed.

-At slow times in the day, there can be as few as 1 trade in a stock every few seconds. At heavy times, there can be several at nearly the same moment... it's these times when the software has locked-up... it will freeze for 1-2 seconds, and then all the lagged data will be displayed all at once and the charts will again be in real-time.


The new build will have:
-Ivy Bridge, either a i3 3.4GHZ, or a i5 3.4 overclock-able (thinking 4.0GHz).
-1600 MHz memory
-win7 HP 64-bit
-7200rpm drive (perfmon showed only a spike of 10 Disk Queue Length for the software. Out of a 30 minute period in the heaviest part of the day, only 1 second of time had a queue.. that spike of 10 items queued. Eventually moving to 2 SSD's in redundant RAID.
 

jonjan

Distinguished
Apr 27, 2006
97
0
18,630
I'm just trying to get a general idea based on understanding and experience... much better than my own blind speculating :)

The perfmon.exe Physical Disk Current Queue Length was at zero, except for 1 second when it spiked to 10. During the same period, the used CPU core was consistently between 20-90%.
So except for that one second, the 7200rpm hard drive seems like it wasn't limiting the software at all?

Assuming this:

Core2Duo 2.26GHz CPU (along with 1066 speed ram),, with 1 application running...
and the Task manager graph showing usage the % between 20-90%

--How would each of these affect the speed of processing:

-upgrading to 3.4Ghz CPU (Ivy Bridge, i3 3240, or i5 3570k)
-upgrading to 4Ghz CPU (Ivy Bridge i5 3570k OC'ed)
(all along with 1600 speed ram)

assuming hard drive speed remains the same

Even a rough idea could help. The i3 costs a bit less than the i5. If the i3 would be a 'big' increase over the 2.26 Core2Duo, that might be best. The i5 costs more, but has upside to 4GHz also, as well as HD 4000.
 
Lets go back to basics here: Task Manager's %Usage is indicating how often the "System Idle Process" is NOT being run over a certain timescale (default: 2 seconds). So if a CPU core is reporting 90% usage, that indicates that it is idle 10% of the time. [Which makes sense, when you consider the time it takes to switch threads, load data from RAM, I/O blocks, and Software locks.]

Now remember, this is for ONE CPU core. Just because it isn't sitting at 100% doesn't mean its not a bottleneck. Remember that all threads are trying to run on that one core, and Windows will constantly swap what thread is running, based on its current priority. This process takes time, so you won't see 100% full loads that often.

Now, when you have a lot of threads that are ready to run, the one with the highest priority at that instant ALWAYS is the one executed. [Windows does a LOT under the hood in this regard, and is above the scope of this discussion].

A loaded CPU core indicates that the CPU is constantly doing work, meaning there are very few periods where every thread has had its necessary work done. Now, a LOT of these threads do background tasks, but they add up to stealing time from other threads that do more meaningful work (games, etc). Adding a second core, even if it doesn't do a lot of work in terms of percentage (2% CPU usage, for example) would still improve performance because it frees up more time for other threads to be processed on the first core.

Anyways:

The software is for stocks, yes. In real-time, for every trade that happens in the world, on any displayed chart, the software will update the chart in real-time.
There are about 8 charts, so that's 8 different prices being updated, as well as 64 other types of calculations being displayed.

Understand something really basic: Windows is not a Real Time OS. Just because you tell your Software to run doesn't mean it will. Windows itself determines what processes/threads will run at any given point in time. So you need to understand there will be some minimum resolution (say, 1 second) that you can be accurate to as a result of this. If you want true Real Time data output from an application, you would be better off using a Real Time Linux Kernel based OS.
 

jonjan

Distinguished
Apr 27, 2006
97
0
18,630
One thing done is selecting the charting software process in Task Manager, Processes tab... and selecting it's Priority as Realtime.
Doing this functions smoothly. No problems with Windows or anything else.

I'm assuming the same can be done through Windows 7 Home Premium 64bit.

Will this this force Windows to run it in truly real-time?

(The software requires a Windows OS.)
 
Status
Not open for further replies.