Skip site navigation (1)Skip section navigation (2)
Date:      Sun, 24 Feb 2008 12:47:39 -1000 (HST)
From:      Jeff Roberson <jroberson@chesapeake.net>
To:        Ivan Voras <ivoras@freebsd.org>
Cc:        freebsd-current@freebsd.org
Subject:   Re: cpu usage in 7.0
Message-ID:  <20080224124342.E920@desktop>
In-Reply-To: <fpslt8$fjj$1@ger.gmane.org>
References:  <845250.18624.qm@web63909.mail.re1.yahoo.com> <47BF5702.3020204@FreeBSD.org> <47BF8EB7.9090007@barafranca.com> <47BFB70F.5080402@FreeBSD.org> <fpslt8$fjj$1@ger.gmane.org>

index | next in thread | previous in thread | raw e-mail

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


home | help

Want to link to this message? Use this
URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?20080224124342.E920>