Comment by gorset

Comment by gorset a day ago

3 replies

Isolating a core and then pinning a single thread is the way to go to get both low latency and high throughput, sacrificing efficiency.

This works fine on Linux, and common approach for trading systems where it’s fine to oversubscribe a bunch of cores for this type of stuff. The cores are mostly busy spinning and doing nothing, so it’s very inefficient in terms of actual work, but great for latency and throughput when you need it.

butterisgood a day ago

I just wish people who give this advice for 1 thread per core would "expand their reasoning" or "show the work".

It's not blanket good advice for all things.

  • thinkharderdev a day ago

    It is definitely not good advice for all things. For workloads that are either end of the CPU/IO spectrum (e.g. almost all waiting on IO or almost all doing CPU work) it can be a huge win as you can get very good L1 cache utilization, are not context-switching and don't need to handle thread synchronization in your code because not state is shared between threads.

    For workloads that are a mix of IO and non-trivial CPU work, it can still work but is much, much harder to get right.

  • lossolo a day ago

    Check out Scylla and its underlying framework Seastar. They expand their reasoning and show the work.