cvs commit: src/sys/kern uipc_sockbuf.c uipc_socket.c src/sys/sys socketvar.h

Robert Watson rwatson at FreeBSD.org
Tue Aug 1 10:30:27 UTC 2006


rwatson     2006-08-01 10:30:26 UTC

  FreeBSD src repository

  Modified files:
    sys/kern             uipc_sockbuf.c uipc_socket.c 
    sys/sys              socketvar.h 
  Log:
  Reimplement socket buffer tear-down in sofree(): as the socket is no
  longer referenced by other threads (hence our freeing it), we don't need
  to set the can't send and can't receive flags, wake up the consumers,
  perform two levels of locking, etc.  Implement a fast-path teardown,
  sbdestroy(), which flushes and releases each socket buffer.  A manual
  dom_dispose of the receive buffer is still required explicitly to GC
  any in-flight file descriptors, etc, before flushing the buffer.
  
  This results in a 9% UP performance improvement and 16% SMP performance
  improvement on a tight loop of socket();close(); in micro-benchmarking,
  but will likely also affect CPU-bound macro-benchmark performance.
  
  Revision  Changes    Path
  1.163     +53 -13    src/sys/kern/uipc_sockbuf.c
  1.276     +22 -14    src/sys/kern/uipc_socket.c
  1.154     +1 -0      src/sys/sys/socketvar.h


More information about the cvs-src mailing list