summaryrefslogtreecommitdiff
path: root/sys/nfs
diff options
context:
space:
mode:
authorDavid Gwynne <dlg@cvs.openbsd.org>2022-11-07 12:56:39 +0000
committerDavid Gwynne <dlg@cvs.openbsd.org>2022-11-07 12:56:39 +0000
commit111e7c2e54c0abd150b4ade81332bcb2f4d8c91d (patch)
tree88b32561bdf4b17bc9021fa575ceb38f2b8bb47e /sys/nfs
parent0567e675848a4e06fc767dd50b1657d2c5f4732a (diff)
move pf_purge out from under the kernel lock and avoid the hogging cpu
this also avoids holding NET_LOCK too long. the main change is done by running the purge tasks in systqmp instead of systq. the pf state list was recently reworked so iteration over the state can be done without blocking insertions. however, scanning a lot of states can still take a lot of time, so this also makes the state list scanner yield if it has spent too much time running. the other purge tasks for source nodes, rules, and fragments have been moved to their own timeout/task pair to simplify the time accounting. in my environment, before this change pf purges often took 10 to 50ms. the softclock thread runs next to it often took a similar amount of time, presumably because they ended up spinning waiting for each other. after this change the pf_purges are more like 6 to 12ms, and dont block softclock. most of the variability in the runs now seems to come from contention on the net lock. tested by me sthen@ chris@ ok sashan@ kn@ claudio@
Diffstat (limited to 'sys/nfs')
0 files changed, 0 insertions, 0 deletions