From owner-freebsd-arch@FreeBSD.ORG Mon May 23 16:28:30 2011 Return-Path: Delivered-To: freebsd-arch@FreeBSD.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:4f8:fff6::34]) by hub.freebsd.org (Postfix) with ESMTP id C0026106566B; Mon, 23 May 2011 16:28:30 +0000 (UTC) (envelope-from avg@FreeBSD.org) Received: from citadel.icyb.net.ua (citadel.icyb.net.ua [212.40.38.140]) by mx1.freebsd.org (Postfix) with ESMTP id 9F0D18FC12; Mon, 23 May 2011 16:28:29 +0000 (UTC) Received: from odyssey.starpoint.kiev.ua (alpha-e.starpoint.kiev.ua [212.40.38.101]) by citadel.icyb.net.ua (8.8.8p3/ICyb-2.3exp) with ESMTP id TAA14756; Mon, 23 May 2011 19:28:27 +0300 (EEST) (envelope-from avg@FreeBSD.org) Message-ID: <4DDA8B2A.6010500@FreeBSD.org> Date: Mon, 23 May 2011 19:28:26 +0300 From: Andriy Gapon User-Agent: Mozilla/5.0 (X11; U; FreeBSD amd64; en-US; rv:1.9.2.17) Gecko/20110504 Lightning/1.0b2 Thunderbird/3.1.10 MIME-Version: 1.0 To: Attilio Rao References: <4DD3F662.9040603@FreeBSD.org> <4DD54C18.8050305@FreeBSD.org> In-Reply-To: <4DD54C18.8050305@FreeBSD.org> X-Enigmail-Version: 1.1.2 Content-Type: text/plain; charset=us-ascii Content-Transfer-Encoding: 7bit Cc: Garrett Cooper , "freebsd-current@freebsd.org" , "freebsd-arch@freebsd.org" Subject: Re: [rfc] remove hlt_cpus et al sysctls and related code X-BeenThere: freebsd-arch@freebsd.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: Discussion related to FreeBSD architecture List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Mon, 23 May 2011 16:28:30 -0000 on 19/05/2011 19:58 Andriy Gapon said the following: > on 18/05/2011 20:04 Attilio Rao said the following: >> 2011/5/18 Garrett Cooper : >>> We use this internally at work still with a software config that uses 4BSD so >>> as long as there is an equivalent tunable, that's good enough for us moving >>> forward. > > Can you please clarify which exactly tunable(s) do you use/need? > Just turning hyperthreading on/off or more? (BTW, doing that via BIOS is > inconvenient / not feasible?) > > BTW, I think that if we switch hyperthreading off then we better off not sending > Start IPI to the logical CPUs at all. > >> Tunables are pretty much acceptable for this case. What is really broken is the >> on-the-fly ability to mark CPUs active/inactive and subsequent handovers. > > Yes, I completely agree. Static disabling of CPUs doesn't have any problems, and > IMO, currently the best way to do it is with hint.lapic.X.disabled. > >> I thought Andriy attached a patch to the tree, but it doesn't seem so... >> anyway, yes, I think that adding tunables for this is very reasonable and not >> as dangerous as the current mechanism. > > I agree. > I haven't sent a patch, because I don't have it yet :) > I decided to solicit opinions before getting to hacking code. > I propose the following path for moving forward. - use hint.lapic.X.disabled to disable individual CPUs by their APIC ID - use machdep.hyperthreading_allowed tunable to disable second logical CPU on each real core The above should already work as expected. One thing is that currently we have handling of machdep.hyperthreading_allowed tunable under SCHED_ULE. I plan to make it unconditional. Things to remove: - all the related sysctls for dynamic onlining/offlining - machdep.hlt_logical_cpus tunable (it duplicates hint.lapic.X.disabled) It's possible to keep machdep.hlt_logical_cpus and just add some code to convert hlt_logical_cpus mask to a set of individual hint.lapic.X.disabled, but I don't see very much value in that. But if there is a good reason to keep that tunable, I am prepared to jump through this hoop. If no one objects to this proposal, I will provide a patch soon. Thank you. -- Andriy Gapon