summaryrefslogtreecommitdiffstats
path: root/usr.bin/ssh/ssh-agent.c
diff options
context:
space:
mode:
authordlg <dlg@openbsd.org>2020-06-22 03:07:57 +0000
committerdlg <dlg@openbsd.org>2020-06-22 03:07:57 +0000
commit54392b432564fd4419250c5bcde62d5189f1cb51 (patch)
tree434661263277bb87b40a0f656759034d76e4bff7 /usr.bin/ssh/ssh-agent.c
parentthere's not going to be any whole kernel wide network livelocks soon. (diff)
downloadwireguard-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