From owner-cvs-src@FreeBSD.ORG Tue Sep 5 18:49:14 2006 Return-Path: X-Original-To: cvs-src@freebsd.org Delivered-To: cvs-src@freebsd.org Received: from mx1.FreeBSD.org (mx1.freebsd.org [216.136.204.125]) by hub.freebsd.org (Postfix) with ESMTP id 17DD016A4DD; Tue, 5 Sep 2006 18:49:14 +0000 (UTC) (envelope-from jhb@freebsd.org) Received: from server.baldwin.cx (66-23-211-162.clients.speedfactory.net [66.23.211.162]) by mx1.FreeBSD.org (Postfix) with ESMTP id EDD2743D67; Tue, 5 Sep 2006 18:49:03 +0000 (GMT) (envelope-from jhb@freebsd.org) Received: from localhost.corp.yahoo.com (john@localhost [127.0.0.1]) (authenticated bits=0) by server.baldwin.cx (8.13.6/8.13.6) with ESMTP id k85ImtIg069407; Tue, 5 Sep 2006 14:48:55 -0400 (EDT) (envelope-from jhb@freebsd.org) From: John Baldwin To: Maxim Sobolev Date: Tue, 5 Sep 2006 14:35:36 -0400 User-Agent: KMail/1.9.1 References: <200609051715.k85HFPtF078969@repoman.freebsd.org> <200609051327.50788.jhb@freebsd.org> <44FDBF5F.3010107@FreeBSD.org> In-Reply-To: <44FDBF5F.3010107@FreeBSD.org> MIME-Version: 1.0 Content-Type: text/plain; charset="iso-8859-15" Content-Transfer-Encoding: 7bit Content-Disposition: inline Message-Id: <200609051435.37443.jhb@freebsd.org> X-Greylist: Sender succeeded SMTP AUTH authentication, not delayed by milter-greylist-2.0.2 (server.baldwin.cx [127.0.0.1]); Tue, 05 Sep 2006 14:48:55 -0400 (EDT) X-Virus-Scanned: ClamAV 0.88.3/1806/Tue Sep 5 11:00:48 2006 on server.baldwin.cx X-Virus-Status: Clean X-Spam-Status: No, score=-4.4 required=4.2 tests=ALL_TRUSTED,AWL,BAYES_00 autolearn=ham version=3.1.3 X-Spam-Checker-Version: SpamAssassin 3.1.3 (2006-06-01) on server.baldwin.cx Cc: cvs-src@freebsd.org, src-committers@freebsd.org, cvs-all@freebsd.org Subject: Re: cvs commit: src/sys/i386/i386 local_apic.c src/sys/amd64/amd64 local_apic.c X-BeenThere: cvs-src@freebsd.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: CVS commit messages for the src tree List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Tue, 05 Sep 2006 18:49:14 -0000 On Tuesday 05 September 2006 14:18, Maxim Sobolev wrote: > John Baldwin wrote: > > On Tuesday 05 September 2006 13:15, Maxim Sobolev wrote: > >> sobomax 2006-09-05 17:15:25 UTC > >> > >> FreeBSD src repository > >> > >> Modified files: > >> sys/i386/i386 local_apic.c > >> sys/amd64/amd64 local_apic.c > >> Log: > >> The FreeBSD by default "disables" hyper-threading cores, by not scheduling > >> any threads to them. However, it still counts those cores as "active but > >> permanently idle" when calculating system-wide CPUs statistics. It is > >> incorrect, since it skews statistics quite a bit and creates real problems > >> for certain types of applications (monitoring applications for example), > >> by making them believe that the system does have enough idle CPU > > resources, > >> while in fact it does not. > >> > >> Correct the problem by not calling performance counting routines > > on "disabled" > >> cores. The cleaner solution would be to just disable APIC timer interrupts > > on > >> those cores completely, but ENOTIME here and it is not clear if the > >> additional complexity really worth minor performance gain. > > > > Is this going to break various places dividing stats by hw.ncpu (in userland) > > or mp_ncpus (in kernel)? > > Well, I don't think so, since all those statistics tells is how many > times system is found in particular state (idle, system, userland, > interrupt), it doesn't tell how exactly those states are distributed > across available CPUs, so that dividing it by number of CPUs doesn't > change the whole picture - you can only say that each CPU say is loaded > by XX% when the whole system is loaded by XX%. Therefore, I can't > imagine any situation when this change would create a problem. I actually have a patch to make cp_time[] per-cpu which at least clears up the confusion for that case. > > (That is, are there any such places. If so, you > > just broke them.) > > No, I believe that I did not, unless you can provide example of the > contrary. linprocfs, but it lies anyway. I've engaged in hacks like this in 4.x, but I think they are just that: hacks. I think a real fix is to support turning off CPUs in the MI code and allow userland to query via a non-hackish interface how many CPUs are actually enabled and get appropriate load stats, etc. based on that. -- John Baldwin