All current servers call accept from only a single thread, meaning benchmarks with a larger number of clients (#14) see a very high setup cost. While this does not affect the benchmark results, it does significantly increase benchmarking time. We should have the server accept connections using more threads (up to the number of available CPUs) to speed this up.
Unfortunately, benchmarks where the server is given only a single CPU will naturally still be slow, but it's better for this to be the case for a few tests than for all of them.
This seems to be a particularly bad problem for c-threaded which starts refusing client connections. I'm not sure why this doesn't also happen for the Rust server which (afaict) doesn'tdoanythingfunky with the socket beyond calling accept in a loop...
All current servers call
accept
from only a single thread, meaning benchmarks with a larger number of clients (#14) see a very high setup cost. While this does not affect the benchmark results, it does significantly increase benchmarking time. We should have the server accept connections using more threads (up to the number of available CPUs) to speed this up.Unfortunately, benchmarks where the server is given only a single CPU will naturally still be slow, but it's better for this to be the case for a few tests than for all of them.