I thought that ScyllaDB’s underlying Seastar framework uses one thread per core, but I see more than two threads per core. Why is that?
Seastar creates an extra thread per core for blocking syscalls (like open()/ fsync() / close() ); this allows the Seastar reactor to continue executing while a blocking operation takes place. Those threads are usually idle, so they don’t contribute to significant context switching activity.
You can learn more about this in the documentation.