What does the percent CPU mean?

It only polls totals about once per second. You're looking at how much of the last second it used.

If you see a cpu sitting at 50% for a little while, what's likely going on is that it's using 100% of one cpu in a dual cpu system.


Technically you are correct. At any given time, the CPU is either being used, or not used. But displaying that in a graph wouldn't be very helpful, so the graph is averaging CPU utilization over some period of time, probably each second.


The OS schedules the process for a certain time period. So if the process is scheduled for (say) 1ms out of 10ms, then it will be using 10% CPU.

It's a little counterintuitive, since (in a single-threaded, single-CPU system), the process is either running, or not running. i.e. it's using 100% or 0%. The percentage that you see is measured over a time window and is a measure of the OS allocating time slots to your process to run.

Note that your process will not contribute to this if you're accessing I/O. So if you're doing a huge calculation, you'll register 100% (assuming nothing else runs). If you then wait for a network packet/disk access etc. your CPU figure will go down, despite the fact that your process is still running.


At a very low level, you're basically right. At any given instant, the processor is either executing an instruction for a given process or it isn't.

But your OS is sitting in between your processes and the processor, making them share time. The percentage you see is the percentage of recent processing time the OS has granted that process.


It based on the average time. Despite all threads can have the same parcel of CPU time (based on priority), the threads can just say "thanks but I'm idle", and pass it's turn to the next thread. Thats why programs are not always using the same % time, and most programs are consuming 0% CPU, and programs which really need CPU can take near 100% of time for itself.

Why is it capping at 50%? You probably have two CPU cores, and its using only one.

Or, as suggested, it is using hyperthreading, but I don't know how this one behaves exactly.