Here’s a little benchmark complements of Jann Horn. It’s unexpectedly slow on Linux.OpenBSD is so fast, I had to modify the program slightly to measure itself, as the time utility is missing sufficient precision to even record nonzero.All it does is create one extra thread, then both existing threads create 256 sockets. What’s so hard about that?#include <pthread.h> #include <unistd.h> #include <err.h> #include <stdio.h> #include <sys/time.h> #include <sys/socket.h> static void open_sockets(void) { for (int i=0; i<256; i++) { int sock = socket(AF_INET, SOCK_STREAM, 0); if (sock == -1) err(1, "socket"); } } static void *thread_fn(void *dummy) { open_sockets(); return NULL; } int main(int argc) { struct timeval one, two; gettimeofday(&one, NULL); if (argc > 1) dup2(0, 666); pthread_t thread; if (pthread_create(&thread, NULL, thread_fn, NULL)) errx(1, "pthread_create"); open_sockets(); if (pthread_join(thread, NULL)) errx(1, "pthread_join"); gettimeofday(&two, NULL); timersub(&two, &one, &one); printf("elapsed: %lld.%06lds\n", one.tv_sec, one.tv_usec); return 0; }On Linux, I get results approximately as so:tedu@penguin:~$ ./a.out elapsed: 0.017770s tedu@penguin:~$ ./a.out elapsed: 0.026309s tedu@penguin:~$ ./a.out elapsed: 0.018414sOn OpenBSD, here we go, choo choo:ox$ ./a.out a.out: a.out: socketsocket: : Too many open files Too many open files ox$ ulimit -n 1024 ox$ ./a.out elapsed: 0.006096s ox$ ./a.out elapsed: 0.002508s ox$ ./a.out elapsed: 0.002326sThese aren’t identical machines, but roughly comparable.There’s a hint in the code (nothing to do with networking code, if that was your first guess), with more explanation in the linked thread, which is worth reading and some thinking. I’d love to see the system and benchmark where Linux outperforms here.Really, I just found it a little funny. Usually it’s the weirdo benchmark that shows OpenBSD being 10x slower, so this one is definitely going in the collection. Posted 15 Aug 2025 16:33 by tedu Updated: 15 Aug 2025 1...
First seen: 2025-08-15 20:23
Last seen: 2025-08-16 05:25