svn commit: r194672 - in head/sys: kern netinet sys

Robert Watson rwatson at FreeBSD.org
Tue Jun 23 15:05:40 UTC 2009


On Tue, 23 Jun 2009, Andrew Gallatin wrote:

> This is consistent across runs.  Lockstat output for 10 seconds in the 
> middle of a run is very interesting and shows a huge reduction in lock 
> contention.

I continue to wonder if we should be deferring TCP reassembly to the user 
thread when there's an effective pipeline going on -- currently we still 
contend on the inpcb lock heavily, generally, and pipelining the work via a 
separate queue (which is what Linux does, I believe) would mean the ithread 
could spend more time doing other things instead of spinning.

Robert N M Watson
Computer Laboratory
University of Cambridge

>
> Before:
>
> Adaptive mutex spin: 369333 events in 10.017 seconds (36869 events/sec)
>
> Count indv cuml rcnt     nsec Lock                   Caller 
> -------------------------------------------------------------------------------
> 303685  82%  82% 0.00     1080 0xffffff000f2f98d0     recvit+0x21 
> 63847  17% 100% 0.00       25 0xffffff000f2f98d0     ip_input+0xad 
> 1788   0% 100% 0.00      172 0xffffff0001c57c08 
> intr_event_execute_handlers+0x100
>    8   0% 100% 0.00      389 vm_page_queue_mtx      trap+0x4ce
>    1   0% 100% 0.00       30 0xffffff8000251598     ithread_loop+0x8e
>    1   0% 100% 0.00      720 0xffffff8000251598 uhub_read_port_status+0x2d
>    1   0% 100% 0.00     1639 0xffffff000f477190     vm_fault+0x112
>    1   0% 100% 0.00        1 0xffffff001fecce10     mxge_intr+0x425
>    1   0% 100% 0.00     1332 0xffffff0001845600 clnt_reconnect_call+0x105
> -------------------------------------------------------------------------------
>
> Adaptive mutex block: 89 events in 10.017 seconds (9 events/sec)
>
> Count indv cuml rcnt     nsec Lock                   Caller 
> -------------------------------------------------------------------------------
>   83  93%  93% 0.00    20908 0xffffff000f2f98d0     tcp_input+0xd96
>    3   3%  97% 0.00    45234 0xffffff8000259f08     fork_exit+0x118
>    3   3% 100% 0.00    44862 0xffffff8000251598     fork_exit+0x118 
> -------------------------------------------------------------------------------
>
>
> After:
>
> Adaptive mutex spin: 105102 events in 10.020 seconds (10490 events/sec)
>
> Count indv cuml rcnt     nsec Lock                   Caller 
> -------------------------------------------------------------------------------
> 75886  72%  72% 0.00     2860 0xffffff0001fdde20     ip_input+0xad 
> 28418  27%  99% 0.00     1355 0xffffff0001fdde20     recvit+0x21
>  779   1% 100% 0.00      171 0xffffff0001642808 
> intr_event_execute_handlers+0x100
>    7   0% 100% 0.00      670 vm_page_queue_mtx      trap+0x4ce
>    5   0% 100% 0.00       46 0xffffff001fecce10     mxge_intr+0x425
>    1   0% 100% 0.00      105 vm_page_queue_mtx      trap_pfault+0x142
>    1   0% 100% 0.00      568 0xffffff8000251598     usb_process+0xd8
>    1   0% 100% 0.00      880 0xffffff8000251598     ithread_loop+0x8e
>    1   0% 100% 0.00      233 0xffffff001a224578     vm_fault+0x112
>    1   0% 100% 0.00       60 0xffffff001a1759b8     syscall+0x28f
>    1   0% 100% 0.00      809 0xffffff0001846000 clnt_reconnect_call+0x105
>    1   0% 100% 0.00     1139 0xffffff0001fdde20     kern_recvit+0x1d4 
> -------------------------------------------------------------------------------
>
> Adaptive mutex block: 88 events in 10.020 seconds (9 events/sec)
>
> Count indv cuml rcnt     nsec Lock                   Caller 
> -------------------------------------------------------------------------------
>   80  91%  91% 0.00    25891 0xffffff0001fdde20     tcp_input+0xd96
>    3   3%  94% 0.00    45979 0xffffff8000259f08     fork_exit+0x118
>    3   3%  98% 0.00    45886 0xffffff8000251598     fork_exit+0x118
>    1   1%  99% 0.00    38254 0xffffff8000259f08 
> intr_event_execute_handlers+0x100
>    1   1% 100% 0.00    79858 0xffffff001a1760f8     kern_wait+0x7ee 
> -------------------------------------------------------------------------------
>
>
> Drew
>


More information about the svn-src-head mailing list