From owner-freebsd-stable@FreeBSD.ORG Tue Sep 8 20:55:04 2009 Return-Path: Delivered-To: freebsd-stable@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:4f8:fff6::34]) by hub.freebsd.org (Postfix) with ESMTP id A15AE106566B for ; Tue, 8 Sep 2009 20:55:04 +0000 (UTC) (envelope-from luigi@onelab2.iet.unipi.it) Received: from onelab2.iet.unipi.it (onelab2.iet.unipi.it [131.114.59.238]) by mx1.freebsd.org (Postfix) with ESMTP id 5EE4A8FC13 for ; Tue, 8 Sep 2009 20:55:04 +0000 (UTC) Received: by onelab2.iet.unipi.it (Postfix, from userid 275) id 3BB2D730DA; Tue, 8 Sep 2009 23:01:00 +0200 (CEST) Date: Tue, 8 Sep 2009 23:01:00 +0200 From: Luigi Rizzo To: John Baldwin Message-ID: <20090908210100.GA72735@onelab2.iet.unipi.it> References: <20090906155154.GA8283@onelab2.iet.unipi.it> <200909081308.23345.jhb@freebsd.org> Mime-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Disposition: inline In-Reply-To: <200909081308.23345.jhb@freebsd.org> User-Agent: Mutt/1.4.2.3i Cc: freebsd-stable@freebsd.org Subject: Re: incorrect usleep/select delays with HZ > 2500 X-BeenThere: freebsd-stable@freebsd.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: Production branch of FreeBSD source code List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Tue, 08 Sep 2009 20:55:04 -0000 On Tue, Sep 08, 2009 at 01:08:23PM -0400, John Baldwin wrote: > On Sunday 06 September 2009 11:51:54 am Luigi Rizzo wrote: > > [Note 3] the TSC frequency is computed reading the tsc around a > > call to DELAY(1000000) and assuming that the i8254 runs > > at the nominal rate, 1.193182 MHz. > > From tests I have made, the measurement in init_TSC() returns > > a large error when HZ is large, whereas repeating the measurement > > at a later time returns a much more reliable value. > > As an example, see the following: > > > > Sep 6 14:21:59 lr kernel: TSC clock: at init_TSC 2323045616 Hz > > Sep 6 14:21:59 lr kernel: > Features=0x178bfbff > > Sep 6 14:21:59 lr kernel: AMD > Features=0xea500800 > > Sep 6 14:21:59 lr kernel: TSC: P-state invariant > > Sep 6 14:21:59 lr kernel: TSC clock: at cpu_startup_end 2323056910 Hz > > Sep 6 14:21:59 lr kernel: TSC clock: at acpi_timer_probe 2311254060 Hz > > Sep 6 14:21:59 lr kernel: TSC clock: at acpi_timer_probe_2 2311191310 > Hz > > Sep 6 14:21:59 lr kernel: TSC clock: at pn_probe_start 2300822648 Hz > > Sep 6 14:21:59 lr kernel: TSC clock: at pn_attach_start 2300830946 Hz > > Sep 6 14:21:59 lr kernel: TSC clock: at pn_probe_start 2300840133 Hz > > Sep 6 14:21:59 lr kernel: TSC clock: at pn_attach_start 2300835253 Hz > > Sep 6 14:21:59 lr kernel: TSC clock: at lapic_setup_clock 2300868376 Hz > > > > The latter values are close to what is reported when HZ=1000. > > Try disabling legacy USB support in the BIOS to see if an SMI# is firing > during the DELAY() causing the TSC freq to be too high. I have seen the USB > legacy support cause this in other machines. Thanks, will try tomorrow. Would this explain the measurement becomes better as we get further into the initialization, and why high HZ values affect the measurement ? cheers luigi