From owner-freebsd-current@FreeBSD.ORG Thu Mar 23 02:23:03 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 2DB3916A423 for ; Thu, 23 Mar 2006 02:23:03 +0000 (UTC) (envelope-from scottl@samsco.org) Received: from pooker.samsco.org (pooker.samsco.org [168.103.85.57]) by mx1.FreeBSD.org (Postfix) with ESMTP id 411E843D45 for ; Thu, 23 Mar 2006 02:23:02 +0000 (GMT) (envelope-from scottl@samsco.org) Received: from [192.168.254.14] (imini.samsco.home [192.168.254.14]) (authenticated bits=0) by pooker.samsco.org (8.13.4/8.13.4) with ESMTP id k2N2N056043784; Wed, 22 Mar 2006 19:23:00 -0700 (MST) (envelope-from scottl@samsco.org) Message-ID: <44220684.80300@samsco.org> Date: Wed, 22 Mar 2006 19:23:00 -0700 From: Scott Long User-Agent: Mozilla/5.0 (Macintosh; U; PPC Mac OS X Mach-O; en-US; rv:1.7.7) Gecko/20050416 X-Accept-Language: en-us, en MIME-Version: 1.0 To: Luigi Rizzo References: <20060322131448.A42341@xorpc.icir.org> <11680.1143062324@critter.freebsd.dk> <20060322132739.C42341@xorpc.icir.org> In-Reply-To: <20060322132739.C42341@xorpc.icir.org> Content-Type: text/plain; charset=us-ascii; format=flowed Content-Transfer-Encoding: 7bit X-Spam-Status: No, score=-1.4 required=3.8 tests=ALL_TRUSTED autolearn=failed version=3.1.0 X-Spam-Checker-Version: SpamAssassin 3.1.0 (2005-09-13) on pooker.samsco.org Cc: Poul-Henning Kamp , current@freebsd.org Subject: Re: interesting(?) data on network interrupt servicing 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: Thu, 23 Mar 2006 02:23:03 -0000 Luigi Rizzo wrote: > On Wed, Mar 22, 2006 at 10:18:44PM +0100, Poul-Henning Kamp wrote: > >>In message <20060322131448.A42341@xorpc.icir.org>, Luigi Rizzo writes: >> >> >>>>> if (thread) >>>>> isrc->is_pic->pic_disable_source(isrc, PIC_EOI); >>>>> >>>>>I have no idea, though, why the other pic_disable_source() >>>>>is so expensive. The 4-5k TSC ticks are approx 3us >>>>> >>>>>Any clues ? >>>> >>>>ISA bus access. >>> >>>yeah but this is a modern laptop with an apic, >>>not an 8259... i don't think it has any ISA bus unless there is >>>some strange emulation going on ? >> >>There is, how else would it boot MS-DOS ? > > > so anything we can do in the kernel config to remove that ? > (i don't have here the config Paolo is using...) > I've done extensive TSC measurements in here too about 18 months ago (see the commit logs for an optimization that I put in). Part of the expense is the indirect function call, and part of it is the memory read. I'm not sure if I completely agree with John that the read is over PCI, I think that for most cases it'll be on the front side bus. But in any case, it's an uncached read, so it's expensive. I like John's patch for getting rid of it. Beyond that, the other expenses come from using the icu_lock spinlock, and John and I think that there might be ways to reduce that. INTR_FAST handlers bypass a lot of this too. The only thing left after all of that is the bintime calls and the indirect function calls to the PIC/APIC code. Those are there as part of the PIC abstraction, and there is really no way around them. I'd really like to see FreeBSD be able to get from int assertion to driver interrupt handler in 1000 ticks or less (at least for INTR_FAST), so any suggestions are welcome. Scott