From owner-freebsd-current@FreeBSD.ORG Sat Sep 2 06:21:43 2006 Return-Path: X-Original-To: current@freebsd.org Delivered-To: freebsd-current@FreeBSD.ORG Received: from mx1.FreeBSD.org (mx1.freebsd.org [216.136.204.125]) by hub.freebsd.org (Postfix) with ESMTP id 5A40C16A4DD; Sat, 2 Sep 2006 06:21:43 +0000 (UTC) (envelope-from ssouhlal@FreeBSD.org) Received: from elvis.mu.org (elvis.mu.org [192.203.228.196]) by mx1.FreeBSD.org (Postfix) with ESMTP id 2320243D45; Sat, 2 Sep 2006 06:21:43 +0000 (GMT) (envelope-from ssouhlal@FreeBSD.org) Received: from [192.168.250.2] (217-162-175-152.dclient.hispeed.ch [217.162.175.152]) by elvis.mu.org (Postfix) with ESMTP id 3D16C1A4D8C; Fri, 1 Sep 2006 23:21:42 -0700 (PDT) Message-ID: <44F922BD.5060108@FreeBSD.org> Date: Sat, 02 Sep 2006 08:20:45 +0200 From: Suleiman Souhlal User-Agent: Mozilla Thunderbird 1.0.7 (X11/20051204) X-Accept-Language: en-us, en MIME-Version: 1.0 To: Maxim Sobolev References: <44F8EC7F.5090605@sippysoft.com> In-Reply-To: <44F8EC7F.5090605@sippysoft.com> Content-Type: text/plain; charset=KOI8-U; format=flowed Content-Transfer-Encoding: 7bit Cc: hackers@freebsd.org, "current@freebsd.org" Subject: Re: Proper (no) accounting for the disabled HTT cores X-BeenThere: freebsd-current@freebsd.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: Discussions about the use of FreeBSD-current List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Sat, 02 Sep 2006 06:21:43 -0000 Maxim Sobolev wrote: > Hi, > > Currently, FreeBSD by default disables hyper-threading "cores", by not > scheduling any threads to it. 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 resources, while in fact it does not. > > I think the proper way to handle disabled cores is to not account for > them in any way. Please find the patch attached, which fixes the > problem. Any comments or suggestions are welcome. > > -Maxim > > Index: local_apic.c > =================================================================== > RCS file: /home/ncvs/src/sys/i386/i386/local_apic.c,v > retrieving revision 1.28 > diff -d -u -r1.28 local_apic.c > --- local_apic.c 12 Jul 2006 21:22:43 -0000 1.28 > +++ local_apic.c 2 Sep 2006 00:42:32 -0000 > @@ -615,6 +615,16 @@ > /* Send EOI first thing. */ > lapic_eoi(); > > + /* > + * Don't do any accounting for the disabled HTT cores, since it > + * will provide misleading numbers for the userland. > + * > + * No locking is necessary here, since even if we loose the race > + * when hlt_cpus_mask changes it is not a big deal, really. > + */ > + if ((hlt_cpus_mask & (1 << PCPU_GET(cpuid))) != 0) > + return; > + > /* Look up our local APIC structure for the tick counters. */ > la = &lapics[PCPU_GET(apic_id)]; > (*la->la_timer_count)++; You probably also want this for amd64. Also, wouldn't it be better to completely disable the LAPIC timer on the hyperthreaded cpus? -- Suleiman