Hi, Currently (5.12+) any ring that gets created will get an io-wq manager created. The manager is tasked with creating async workers, if they are needed. Earlier (5.11 and prior), io_uring would create the manager thread, and the manager thread would create a static worker per NUMA node and more if needed. Hence 5.12+ is more lean than earlier, but I would like us to get to the point where no threads are created if they aren't strictly needed. For workloads that never need async offload, it's pointless to create one (or more) threads that just sit idle. With that in mind, here's a patchset that attempts to do that. There should be no functional changes here - if we do need an async worker, the first one created will stick around for the lifetime of the ring. And more are created as needed, using the same logic as before. The only difference is that a ring will NOT get a thread by default, only when it actually needs one is it created. Comments welcome! This passes normal regression testing, but no further testing has been done yet. -- Jens Axboe