diff options
author | 2020-06-22 03:07:57 +0000 | |
---|---|---|
committer | 2020-06-22 03:07:57 +0000 | |
commit | 54392b432564fd4419250c5bcde62d5189f1cb51 (patch) | |
tree | 434661263277bb87b40a0f656759034d76e4bff7 /usr.bin/ssh/ssh-agent.c | |
parent | there's not going to be any whole kernel wide network livelocks soon. (diff) | |
download | wireguard-openbsd-54392b432564fd4419250c5bcde62d5189f1cb51.tar.xz wireguard-openbsd-54392b432564fd4419250c5bcde62d5189f1cb51.zip |
deprecate network livelock detection using the softclock.
livelock detection used to rely on code running at softnet blocking
the softclock handling at a lower interrupt priority level. if the
hard clock interrupt count diverged from one kept by a timeout, we
assumed the network stack was doing too much work and we should
apply backpressure to the receptions of packets.
the network stack doesnt really block timeouts from firing anymore
though. this is especially true on MP systems, because timeouts
fire on cpu0 and the nettq thread could be somewhere else entirely.
this means network activity doesn't make the softclock lose ticks,
which means we aren't scaling rx ring activity like we think we
are.
the alternative way to detect livelock is when a driver queues
packets for the stack to process, if there's too many packets built
up then the input routine return value tells the driver to slow
down. this enables finer grained livelock detection too. the rx
ring accounting is done per rx ring, and each rx ring is tied to a
specific nettq. if one of them is going too fast it shouldn't affect
the others. the tick based detection was done system wide and
punished all the drivers.
ive converted all the drivers to the new mechanism. let's see how
we go with it.
jmatthew@ confirms rings still shrink, so some backpressure is being
applied.
Diffstat (limited to 'usr.bin/ssh/ssh-agent.c')
0 files changed, 0 insertions, 0 deletions