HomeFreeBSD

o Rearrange struct inpcb fields to optimize the TCP output code path

Description

o Rearrange struct inpcb fields to optimize the TCP output code path

considering cache line hits and misses.  Put the lock and hash list
glue into the first cache line, put inp_refcount inp_flags inp_socket
into the second cache line.

o On allocation zero out entire structure except the lock and list entries,

including inp_route inp_lle inp_gencnt.  When inp_route and inp_lle were
introduced, they were added below inp_zero_size, resulting on not being
cleared after free/alloc.  This definitely was a source of bugs with route
caching.  Could be that r315956 has just fixed one of them.
The inp_gencnt is reinitialized on every alloc, so it is safe to clear it.

This has been proved to improve TCP performance at Netflix.

Obtained from: rrs
Differential Revision: D10686

Details

Provenance
glebiusAuthored on
Differential Revision
D10686: Improve layout of struct inpcb
Parents
rS318792: UPDATING: clarify ino64 upgrade instructions even further
Branches
Unknown
Tags
Unknown