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