Re: network performance, a low-level measurement

From: Robert Watson <rwatson_at_FreeBSD.org>
Date: Mon, 31 Jan 2005 11:34:03 +0000 (GMT)
On Mon, 31 Jan 2005, Poul-Henning Kamp wrote:

> In case anybody can use this for anything:

Looks useful to me :-).

> Setup:
> 	o Soekris NET4501 (133Mhz AMD Elan CPU)
> 	o -Current
> 	o stripped down kernel.
> 	o no SMP, no WITNESS, no DIAGNOSTIC

What about INVARIANTS?  That causes an extra mutex grab and release on
each allocation and free, so INVARIANTS should be disabled in any
performance-sensitive or timing-sensitive measurements.

> 	o unshared interrupt line
> 	o if_sis driver modified to FAST intr which just schedules
> 	  the existing sis_intr on taskqueue_fast
> 	o single-user mode
> 	o A back-to-back cable to another machine.
> 	o A single default sized ping packet
> 
> 
> Time [uSec]     Where
> -----------------------------------------------------------------------
> 000.000         HW-intr start 
> 011.600         HW-intr stop

So this is the time window from the edge of the interrupt being raised, to
it being lowered as a result of ACK'ing the hardware, or what exactly?  Do
you have any timing related to when the low level interrupt code enters,
the fast handler starts running, when it stops running, and when the low
level code returns (followed shortly by preemption)?

> 067.200         Enter sis_intr_task()
> 074.000                 Enter sis_rxeof()
> 134.800                         Enter ifp->if_input()
> 552.800                                 Enter sis_startl()

Is net.isr.enable=1 or net.isr.enable=0?  Why are we entering sis_start()
here if net.isr.enable=0 and the system is otherwise idle?

> 595.600                                 Exit sis_startl()
> 753.200                         Return from ifp->if_input()
> 758.000                 Exit sis_rxeof()
> 761.200                 Enter sis_txeof()
> 796.400                 Exit sis_txeof()
> 800.200         Exit sis_intr_task()
> -----------------------------------------------------------------------
> 
> 
> 				 Driver		  Other
> 				 [uSec]          [uSec]
> -------------------------------------------------------
> HW-intr duration:		 11.600
> Taskqueue_fast Latency:				 55.600
> sis_rxeof() duration:		 65.500
> ifp->if_input() duration:			575.700
> sis_startl() duration:		 42.800
> sis_txeof() duration:		 35.200
> sis_intr_task duration:		 13.800
> -------------------------------------------------------
> Total                           168.900		631.300
> =======================================================
> 
> Summary: 21% of the time spent in the driver.
> 
> -- 
> Poul-Henning Kamp       | UNIX since Zilog Zeus 3.20
> phk_at_FreeBSD.ORG         | TCP/IP since RFC 956
> FreeBSD committer       | BSD since 4.3-tahoe
> Never attribute to malice what can adequately be explained by incompetence.
> _______________________________________________
> freebsd-current_at_freebsd.org mailing list
> http://lists.freebsd.org/mailman/listinfo/freebsd-current
> To unsubscribe, send any mail to "freebsd-current-unsubscribe_at_freebsd.org"
> 
Received on Mon Jan 31 2005 - 10:34:44 UTC

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