git: ifq/staging: Perform IFQ packet staging for if_start scheduling

Sepherosa Ziehau sephe at crater.dragonflybsd.org
Wed Dec 26 23:58:42 PST 2012


commit 3cab6b0d05a1505b50befc1ffad2c25620b6775c
Author: Sepherosa Ziehau <sephe at dragonflybsd.org>
Date:   Mon Dec 24 17:35:29 2012 +0800

    ifq/staging: Perform IFQ packet staging for if_start scheduling
    
    IFQ packets staging is now performed for ifnet's if_start scheduling,
    i.e. if_start_schedule(), in addition to direct ifnet's if_start calling.
    
    IFQ packets staging stopping condition
    - if_start interlock (if_snd.altq_started) is not released.
    is now changed to
    - if_start_schedule() is not pending on the current CPU and if_start
      interlock (if_snd.altq_started) is not released.
    
    By setting net.link.stage_cntmax to 8 and hw.igbX.tx_wreg_nsegs to 16,
    following performance improvement is gained:
    +80Kpps for normal IP forwarding
    +30Kpps for fast IP forwarding

Summary of changes:
 sys/net/altq/if_altq.h |    1 +
 sys/net/if.c           |  114 ++++++++++++++++++++++++++++++------------------
 2 files changed, 73 insertions(+), 42 deletions(-)

http://gitweb.dragonflybsd.org/dragonfly.git/commitdiff/3cab6b0d05a1505b50befc1ffad2c25620b6775c


-- 
DragonFly BSD source repository


More information about the Commits mailing list