git: if: Use critical section on ifnet.if_start path

Sepherosa Ziehau sephe at crater.dragonflybsd.org
Tue Jan 7 03:59:49 PST 2014


commit ac7fc6f053a83466adad627e03f401b92a97a3c8
Author: Sepherosa Ziehau <sephe at dragonflybsd.org>
Date:   Sat Jan 4 14:57:49 2014 +0800

    if: Use critical section on ifnet.if_start path
    
    This is mainly used to avoid contention on serializer between netisr
    and ithread on the same CPU, when ithread preempts netisr which holds
    serializer that ithread wants to aquire.
    
    This kind of contention is found by analysing ktr(9) log of the
    serializer operations.
    
    Tested on 8 HT (i7-3770) box, using kq_accept_server/kq_connect_client:
    - 4/4 TX/RX rings device (BCM5719, using MSI-X), slight improvement.
    - 8/8 TX/RX rings device (Intel 82580, using MSI-X), slight improvement.
    - 1/2 TX/RX rings device (Intel 82599, using MSI), slight improvement.

Summary of changes:
 sys/net/if.c | 31 +++++++++++++++++++++++++------
 1 file changed, 25 insertions(+), 6 deletions(-)

http://gitweb.dragonflybsd.org/dragonfly.git/commitdiff/ac7fc6f053a83466adad627e03f401b92a97a3c8


-- 
DragonFly BSD source repository


More information about the Commits mailing list