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, Jeffhome | help
Want to link to this message? Use this
URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?20080224124342.E920>
