HomeFreeBSD

Reduce the number of unnecessary unlock-relocks on socket buffer mutexes
rS131151Unpublished

Unpublished Commit ยท Learn More

No further details are available.

Description

Reduce the number of unnecessary unlock-relocks on socket buffer mutexes
associated with performing a wakeup on the socket buffer:

  • When performing an sbappend*() followed by a so[rw]wakeup(), explicitly acquire the socket buffer lock and use the _locked() variants of both calls. Note that the _locked() sowakeup() versions unlock the mutex on return. This is done in uipc_send(), divert_packet(), mroute socket_send(), raw_append(), tcp_reass(), tcp_input(), and udp_append().
  • When the socket buffer lock is dropped before a sowakeup(), remove the explicit unlock and use the _locked() sowakeup() variant. This is done in soisdisconnecting(), soisdisconnected() when setting the can't send/ receive flags and dropping data, and in uipc_rcvd() which adjusting back-pressure on the sockets.

For UNIX domain sockets running mpsafe with a contention-intensive SMP
mysql benchmark, this results in a 1.6% query rate improvement due to
reduce mutex costs.

Details

Provenance
rwatsonAuthored on
Parents
rS131150: In case pmap_extract_and_hold() is ever performed on a different pmap than
Branches
Unknown
Tags
Unknown

Event Timeline