git: tcp: Use 4-tuple hash to optimize local port selection.

Sepherosa Ziehau sephe at crater.dragonflybsd.org
Thu Oct 29 20:40:24 PDT 2015


commit 02353b181a6deaef5e813abfa1c41a2de5fbf49f
Author: Sepherosa Ziehau <sephe at dragonflybsd.org>
Date:   Tue Oct 27 20:43:11 2015 +0800

    tcp: Use 4-tuple hash to optimize local port selection.
    
    So that the connection can:
    - Stay in the current netisr to avoid connection forwarding.
    - Use the portinfo of the target netisr to avoid portinfo
      contention, if connection forwarding could not be avoided,
      e.g. when the ports of current netisr are depleted.
    
    And don't try too hard to perform this local port selection
    optimization (it's relative time consuming).  Number of tries
    for this optimized local port selection is controlled by sysctl
    node net.inet.ip.porthash_trycount (15 by default).  Setting
    this sysctl node to 0 will disable this local port selection
    optimization.
    
    Total IPI rate and MP collision rate is significantly reduced,
    when tools/kq_connect_client runs @395Kconns/s:
    - Total IPI rate is reduced by 64K/s (421K/s -> 357K/s).
    - Total MP collision rate is reduced by 81K/s (310K/s -> 229K/s).

Summary of changes:
 sys/netinet/in_pcb.c | 57 ++++++++++++++++++++++++++++++++++++++++++++--------
 1 file changed, 49 insertions(+), 8 deletions(-)

http://gitweb.dragonflybsd.org/dragonfly.git/commitdiff/02353b181a6deaef5e813abfa1c41a2de5fbf49f


-- 
DragonFly BSD source repository



More information about the Commits mailing list