It's literally "just" them making their kernel (finally) multi-core instead of locking everything every time a process does networking.
Pretty much every other OS out there has done that for years, if not decades.
(FreeBSD for almost 20 years, although arguably at first that release was quite unstable.)
OpenBSD is very seldom the first to actually do something; but they focus on making their code able to be understood by a single person.
Doing things is hard, doing them in a way that is clear, obvious and "simple" is even harder. So when OpenBSD finally manages to do something that others may have had for a while... it's a cause of celebration. Because if the implementation was a clean one it would have gone in much sooner.
OpenBSD will definitely be straight forward and easy to follow all from a single "manual". I'm sure there are other OSs that compare favorable to OpenBSD but those other OSs would also be high quality.
The big difference on those is a very limited scope.
There are also atomics which don't lock, and so in some cases are faster that a mutex - but they can also be a lot slower if in some data contention patterns. While these are often faster, there are a lot of useful data structures that cannot be written with atomics.
The correct answer is design everything to avoid the needs for writing shared data as much as possible. Then use atomics and/or mutexs in those final places where data sharing is needed. You always need to benchmark to see what works best.
You need consitency when you update the socket tables. (Relatively rare, but can be a bottleneck for use cases with frequent open/close and maybe accept)
You need exclusivity when send or recieve on tcp sockets. (Very narrow)
You also need exclusivity when putting packets one of on the NIC's sendqueues. That one's not really rare, better NICs have more queues for less contention though.
For really high volume packet processing, it's helpful to align socket processing so everything is pinned to the same core: nic interrupts, kernel rx, application read and processing, application send, kernel tx, etc. But last I checked OpenBSD doesn't do cpu pinning, so there's that.
Like when they launched W^X (which isn't even an accurate term, because that implies that read-only non-execute pages don't exist), they basically claimed to have invented it. And they said that it was "impossible" to do on 32bit x86. Which was a surprise for those of us who had been running that on 32bit x86 for years, using grsec patches.
They defended themselves for this mis-statement by saying that they don't look at what other OSs, like Linux, do. Fair enough, but don't say you're the first to do it, then.
OpenBSD was late to the game of multiprocessing, deliberately ignoring multi-CPU machines. They only had to change their minds when suddenly consumer CPUs started being multi-core/multi-threaded. And since they have fewer developers (and not a focus on performance), they've understandably been lagging behind in this space.
Which seems like an entirely reasonable choice if they felt there were bigger priorities. OpenBSD received SMP support in November 2004, right at the same time as the first mainstream dual-core CPU arrived on the market. I get what you mean by "late to the game", but I also feel that it's not really a fitting statement.
> I also feel that it's not really a fitting statement.
In what way? Linux got it almost a decade before that. Windows NT got it more than a decade before OpenBSD.
SunOS approaching 15 years before OpenBSD.
ChatGPT claims Mac OS X got it in 1999 with Mac OS X Server, but I could not immediately confirm that one.
Again, this is not criticism. But I don't see how it would be inaccurate to say they were late, when I think they were literally last.
They were last, but not late. SMP in the x86 world was miniscule in terms of multi-CPU setups. It didn't "happen" until the multi-core era, and OpenBSD was well in time for that.
Anyway, this is not a productive semantics debate. Have a nice weekend.
Hey, I’d personally love if something openbsd did got it some wider industrial use.