OpenBSD Journal

d2k17 hackathon report: Martin Pieuchot on moving the network stack out of the big lock

Contributed by pitrh on from the forward me unlocked dept.

Our next report from the d2k17 hackathon comes from Martin Pieuchot, who writes:

Hackathons are generally good to start or finish something, at Starnberg I managed to do both.
I came to unlock the forwarding path and thanks to the multiple reviews from bluhm@, sashan@ and claudio@ it happened! It started as a boring hackathon because I had to review and fix all the abuses of splnet() in pseudo drivers but then it went very smoothly. I still haven't seen a bug report about the unlock and Hrvoje Popovski even reported a 20% forwarding performance increase.

Then I started discussing and planning the next big step with claudio@ and bluhm@. How to unlock the socket layer? Well it's happening! During the hackathon Claudio sent some diffs to start unlocking pfkey and routing sockets and since then I started working on TCP receive side.

In the meantime I had to commit my futex(2) based mutex and condition variable implementations for our libpthread. This improves the performance of threaded applications a lot, which means most of ports.

I also did some cleanups to help towards having MI mutex and kernel lock implementations. This should allow all our archs to benefit from the lock instrumentations visa@ and jmatthew@ are working on.

Finally I committed some ddb(4) cleanups, mostly CTF related.

Thanks to mpf@ and genua for organizing this hackathon!

Thanks for the report, Martin!

It is worth noting that most, if not all, of the code mentioned here is already doing good work in recent snapshots.

(Comments are closed)


Credits

Copyright © - Daniel Hartmeier. All rights reserved. Articles and comments are copyright their respective authors, submission implies license to publish on this web site. Contents of the archive prior to as well as images and HTML templates were copied from the fabulous original deadly.org with Jose's and Jim's kind permission. This journal runs as CGI with httpd(8) on OpenBSD, the source code is BSD licensed. undeadly \Un*dead"ly\, a. Not subject to death; immortal. [Obs.]