From owner-freebsd-arch@FreeBSD.ORG Sat Apr 19 22:47:22 2008 Return-Path: Delivered-To: arch@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:4f8:fff6::34]) by hub.freebsd.org (Postfix) with ESMTP id BE01F1065674 for ; Sat, 19 Apr 2008 22:47:22 +0000 (UTC) (envelope-from jroberson@jroberson.net) Received: from wf-out-1314.google.com (wf-out-1314.google.com [209.85.200.171]) by mx1.freebsd.org (Postfix) with ESMTP id 9E7E08FC22 for ; Sat, 19 Apr 2008 22:47:22 +0000 (UTC) (envelope-from jroberson@jroberson.net) Received: by wf-out-1314.google.com with SMTP id 25so970951wfa.7 for ; Sat, 19 Apr 2008 15:47:20 -0700 (PDT) Received: by 10.142.101.17 with SMTP id y17mr1159325wfb.20.1208645240299; Sat, 19 Apr 2008 15:47:20 -0700 (PDT) Received: from ?10.0.1.199? ( [24.94.72.120]) by mx.google.com with ESMTPS id 22sm3078969wfd.4.2008.04.19.15.47.18 (version=SSLv3 cipher=OTHER); Sat, 19 Apr 2008 15:47:19 -0700 (PDT) Date: Sat, 19 Apr 2008 12:47:47 -1000 (HST) From: Jeff Roberson X-X-Sender: jroberson@desktop To: Alfred Perlstein In-Reply-To: <20080419192152.GX95731@elvis.mu.org> Message-ID: <20080419124622.Q942@desktop> References: <20080419004911.R942@desktop> <20080419192152.GX95731@elvis.mu.org> MIME-Version: 1.0 Content-Type: TEXT/PLAIN; charset=US-ASCII; format=flowed Cc: arch@freebsd.org Subject: Re: monitor/mwait support for idle 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: Sat, 19 Apr 2008 22:47:22 -0000 On Sat, 19 Apr 2008, Alfred Perlstein wrote: > Jeff, this is very interesting! > > I have a question about your earlier email. You mentioned that the > IPIs and communication to enter the idle state (hlt, mwait) is expensive. > > Perhaps something to track the number of times entering and exiting > the state would be a good idea. options COUNT_IPIS will tell you the number of physical IPIs delivered. options SCHED_STATS has statistics on the number of times we were preempted by a remote cpu. > > Additionally a tuneable for the number of spins before entering the > state might be a good idea. Perhaps spinning for "1" or "2" (where > 1/2 is one unit of hz) before entering idle might be a good compromise > to avoid hlt enter/exit thrashing. > > Let me know your thoughts on this. It may already be implemented > so just saying "we do that" would be fine too. :) Presently it's kern.sched.idlespinthresh and idlespins. I'm not sure I intend to leave those sysctls indefinitely. Jeff > > -Alfred > > * Jeff Roberson [080419 03:56] wrote: >> http://people.freebsd.org/~jeff/mwait.diff >> >> This patch implements support for the x86/amd64 monitor and mwait >> instructions in the idle loop. This also implements idle loop selection >> via a sysctl string. The following loops are supported, in >> decreasing order of performance and power consumption: >> >> spin - Simply returns >> mwait - Always use mwait to sleep. CPU enters C0 or C1 depending on >> how busy it is. >> mwait_hlt - Use mwait when busy but fall back to hlt/acpi when not. >> hlt - pure hlt loop >> acpi - uses acpi_cpu_idle if available and hlt if not. This is the >> default. >> >> This also introduces a new MD function 'cpu_wake_idle' which allows MD to >> use a faster mechanism than IPI to wake idle. In the spin case this is a >> nop. For hlt and acpi we resort to an IPI. If the processor is sleeping >> in mwait we can simply write to a per-cpu buffer to wake it up. This >> saves considerable cpu cycles on the initiator and target. >> >> The prototype for cpu_idle() changed to accept an integer indication of >> how busy we are from the scheduler. If we have been busy MD code may >> choose to enter a higher power state on idle. ULE now spins for a short >> while if we have been very busy regardless of MD settings. >> >> There seems to be a problem entering C0 on the Xeons I have access to. It >> returns from mwait too quickly. Hopefully intel will respond to my email >> about that. >> >> Feedback welcome. >> >> Thanks, >> Jeff >> _______________________________________________ >> freebsd-arch@freebsd.org mailing list >> http://lists.freebsd.org/mailman/listinfo/freebsd-arch >> To unsubscribe, send any mail to "freebsd-arch-unsubscribe@freebsd.org" > > -- > - Alfred Perlstein >