]> CyberLeo.Net >> Repos - FreeBSD/FreeBSD.git/commit
- Switch the "net.inet.tcp.reass.cursegments" and
authorLawrence Stewart <lstewart@FreeBSD.org>
Sat, 16 Oct 2010 05:37:45 +0000 (05:37 +0000)
committerLawrence Stewart <lstewart@FreeBSD.org>
Sat, 16 Oct 2010 05:37:45 +0000 (05:37 +0000)
commitc8dc0ab886bacf31793e4be06658a8a4db6fc1c5
treee82ac2efbacb740b089565eeee12f70a5801333c
parent1c6cae97111c9516b2bb1f362fff80fe9b84bee3
- Switch the "net.inet.tcp.reass.cursegments" and
  "net.inet.tcp.reass.maxsegments" sysctl variables to be based on UMA zone
  stats. The value returned by the cursegments sysctl is approximate owing to
  the way in which uma_zone_get_cur is implemented.

- Discontinue use of V_tcp_reass_qsize as a global reassembly segment count
  variable in the reassembly implementation. The variable was used without
  proper synchronisation and was duplicating accounting done by UMA already. The
  lack of synchronisation was particularly problematic on SMP systems
  terminating many TCP sessions, resulting in poor TCP performance for
  connections with non-zero packet loss.

Sponsored by: FreeBSD Foundation
Reviewed by: andre, gnn, rpaulo (as part of a larger patch)
MFC after: 2 weeks
sys/netinet/tcp_reass.c