HomeFreeBSD

When MAC is enabled and a policy module is loaded, don't unconditionally

Description

When MAC is enabled and a policy module is loaded, don't unconditionally
lock mac_ifnet_mtx, which protects labels on struct ifnet, unless at least
one policy is actively using labels on ifnets. This avoids a global mutex
acquire in certain fast paths -- most noticeably ifnet transmit. This was
previously invisible by default, as no MAC policies were loaded by default,
but recently became visible due to mac_ntpd being enabled by default.

gallatin@ reports a reduction in PPS overhead from 300% to 2.2% with this
change. We will want to explore further MAC Framework optimisation to
reduce overhead further, but this brings things more back into the world
of the sane.

MFC after: 3 days

Details

Committed
rwatsonMay 3 2019, 8:38 PM
Parents
rS347057: Allow iflib drivers to pass a pointer to their own ifmedia structure.
Branches
Unknown
Tags
Unknown