Re: cpu usage in 7.0

From: Jeff Roberson <jroberson_at_chesapeake.net>
Date: Sun, 24 Feb 2008 12:47:39 -1000 (HST)
On Sun, 24 Feb 2008, Ivan Voras wrote:

> Kris Kennaway wrote:
>> Hugo Silva wrote:
>>> Kris Kennaway wrote:
>>>> Barney Cordoba wrote:
>>>>> I have a dual core system running 7.0 and I can't get
>>>>> top to show more than 100% usage no matter how I
>>>>> hammer it. My MAC shows over 100% often, but its not
>>>>> clear if top is averaging the 2 cpus or just not going
>>>>> over 100, or just showing 1 of the cpus.
>>>> 
>>>> 100% in FreeBSD means "all of your CPUs are completely active".  It is 
>>>> hard to exceed this amount :-)
>>> 
>>> You should see my production mysql going over 458% on service startup, on 
>>> a quad core server :-)
>> 
>> That is a multithreaded process using multiple CPUs, not the total CPU 
>> statistics (first line of top(1)).
>
> So how does a multithreaded process get 458% CPU on a quad-core machine? :) 
> (Really, I want to know; I thought thread CPU accounting was fixed in 7.x. 
> Unless I'm mistaken, 4 CPU-intensive threads in a single process should 
> account as 4 CPU-intensive single-thread processes; i.e. each could only take 
> up to 100% of a core/CPU, accounting for NCPU*100% total).
>
>

It is possible for the sum of all threads in the system to exceed 100% 
cpu.  This is because the decay function is not precise.  15% over is a 
bit more than I would expect but I suppose it's possible.  We also inhert 
pcpu information from the parent on fork/thread creation so the child 
isn't created with a priority as if it had been idle.  So for a moment the 
utilization is duplicated.

Penalizing the child for an expensive parent is an important optimization 
that prevents batch jobs from overwhelming the system under load.

Thanks,
Jeff
Received on Sun Feb 24 2008 - 21:46:11 UTC

This archive was generated by hypermail 2.4.0 : Wed May 19 2021 - 11:39:28 UTC