You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
RwLock::read for UFT hits, kstats use AtomicU64 (#636)
This PR replaces the per-`Port` `KMutex` with a `KRwLock`. This allows
ioctls to read port state without preventing packets from being served.
This also prevents successful UFT hits from blocking one another on the
port for any length of time.
A requirement is that we move to atomic accesses on kstat values, which
allows us to update kstats from outside a write-lock on the port.
Contention according to lockstat is solved, and
apparently the time spent in `xde_rx`/`xde_mc_tx` is reduced -- we're no
longer:
* S2C -- the 3rd and 10th most spin-happy locks,
* C2S -- the 2rd and 3rd most spin-happy locks.
After some refactoring, this has moved from 2.8->2.9 Gbps (pre-LSO) on
`glasgow`. Nor are we egregiously blocking on the port lock.
Closes#435.
0 commit comments