On 06/09 07:06, Rich Freeman wrote:
> On Tue, Jun 9, 2020 at 5:17 AM <[email protected]> wrote:
> >
> > What is the difference between 100% CPU load and 100% CPU load to
> > create such an difference in temperature?
> > How is X% load calculated?
> >
> 
> I think a lot more detail around what you're actually running would be
> needed to provide more insight here.  I can think of a few things that
> could cause this:
> 
> The kernel maintains a number of stats around CPU load including %
> utilized by userspace, the kernel, IRQs, IO waiting, and truly idle
> time.  Depending on where you were getting that "100%" figure I can't
> be sure what was included in that.  If it was just 100-idle then you
> could have had IO waiting included in the load - this is time when you
> have a running process that wants to do something but it is blocked on
> IO, such as reading from a disk.  If you have 12 threads all doing
> random IO from a spinning hard disk you can easily end up with the CPU
> spending a whole lot of time doing nothing, but where it is otherwise
> "busy."  If the stat was system+user then that reflects actual CPU
> processing activity.
> 
> Next, not all instructions are created equally, and a CPU core is a
> fairly complex device that has many subdivisions.  There are circuits
> that do nothing but integer or floating-point math, others that
> fetch/store data, some that do logical comparisons, and so on.  While
> the OS tries to keep all the CPU cores busy, the CPU core itself also
> tries to keep all of its components busy (something aided by
> optimizing compilers).  However, the CPU only has so many instructions
> in the pipeline at one time, and they often have interdependencies,
> and so the CPU can only use out-of-order execution to a limited degree
> to keep all its parts active.  If you get a lot of cache misses the
> CPU might spend a lot of time waiting for memory access.  If you get a
> lot of one type of instruction in a row some parts of the CPU might be
> sitting idle.  Depending on the logical flow you might get a larger or
> smaller number of speculative execution misses that result in waiting
> for the pipeline to be flushed.  This can result in the power
> consumption of the CPU varying even if it is "100% busy."  It could be
> 100% busy executing 1 instruction per clock, or it could be 100% busy
> executing 4 instructions per clock.  Either way the processor queue is
> 100% blocked, but the instructions are being retired at different
> rates.  Modern CPUs can reduce the power consumption by idle
> components so part of a CPU core can be using its maximum power draw
> while another part of the same core can be using very little power.
> The end result of this at scale is that the CPU can produce different
> amounts of heat at 100% use depending on what it is actually doing.
> 
> I'm sure people have written about this extensively because it is very
> important with benchmarking.  When individually given a two uniform
> set of tasks a CPU might execute a certain number of tasks per second,
> but.when you combine the two sets of tasks and run them in parallel
> the CPU might actually be able to perform more tasks per second
> combined, because it is better able to utilize all of its components.
> A lot of synthetic loads may not fully load the CPU unless it was
> designed to balance the types of instructions generated.  Natural
> loads often fail to load a CPU fully due to the need for IO waiting.
> 
> So, I guess we can get back to your original question.  Generally 100%
> load means that from the kernel scheduler's perspective the CPU has
> been assigned threads to execute 100% of the time.  A thread could be
> a big string of no-op instructions and from the kernel's perspective
> that CPU core is 100% busy since it isn't available to assign other
> threads to.
> 
> -- 
> Rich
> 

Hi Rich,

simply: WHOW! :)
Thanks a lot, Sir! ::))

That helps !

Cheers!
Meino




Reply via email to