Re: interesting(?) data on network interrupt servicing

From: John Baldwin <jhb_at_freebsd.org>
Date: Wed, 22 Mar 2006 15:45:12 -0500
On Wednesday 22 March 2006 15:29, Luigi Rizzo wrote:
> Paolo Pisati (SoC work on in-kernel natd) has done some
> work on measuring where time is spent in servicing network
> interrupts, and what's the difference between 4.x and 7.x,
> and probably has some interesting result.
> 
> He ran the experiments on his laptop (1.6-1.7GHz with APIC
> and bfe card), recording timestamps with the TSC in various
> places of the code path.
> What he saw is that the basic operation of the interruopt
> service routine, bfe_intr() is approx the same on 4.x and 7.x,
> taking between 7-10k TSC ticks on a lightly loaded system.
> On 7.x, however, there is an extra 9-10k TSC ticks (which may
> well be hidden in the assembly code on 4.x, but not sure about
> that) which apparently are spent half in this line in
> sys/i386/i386/intr_machdep.c
> 
>     if (thread)
> 	isrc->is_pic->pic_disable_source(isrc, PIC_EOI);

This is going out to the I/O APIC and writing a bit to mask the
interrupt until the handler has run.  Is he using a kernel that
has SMP enabled?  If so, turning SMP off might make things
slightly better.

Note that 4.x does do the same writes to the I/O APIC, but in
assembly.

-- 
John Baldwin <jhb_at_FreeBSD.org>  <><  http://www.FreeBSD.org/~jhb/
"Power Users Use the Power to Serve"  =  http://www.FreeBSD.org
Received on Wed Mar 22 2006 - 19:44:22 UTC

This archive was generated by hypermail 2.4.0 : Wed May 19 2021 - 11:38:53 UTC