hi, Currently we can create multiple io_uring instances which all have SQPOLL enabled and make them run in the same cpu core by setting sq_thread_cpu argument, but I think this behaviour maybe not efficient. Say we create two io_uring instances, which both have sq_thread_cpu set to 1 and sq_thread_idle set to 1000 milliseconds, there maybe such scene below: For example, in 0-1s time interval, io_uring instance0 has neither sqes nor cqes, so it just busy waits for new sqes in 0-1s time interval, but io_uring instance1 have work to do, submitting sqes or polling issued requests, then io_uring instance0 will impact io_uring instance1. Of cource io_uring instance1 may impact iouring instance0 as well, which is not efficient. I think the complete disorder of multiple io_uring instances running in same cpu core is not good. How about we create one io_sq_thread for user specified cpu for multiple io_uring instances which try to share this cpu core, that means this io_sq_thread does not belong to specific io_uring instance, it belongs to specific cpu and will handle requests from mulpile io_uring instance, see simple running flow: 1, for cpu 1, now there are no io_uring instances bind to it, so do not create io_sq_thread 2, io_uring instance1 is created and bind to cpu 1, then create cpu1's io_sq_thread 3, io_sq_thread will handle io_uring instance1's requests 4, io_uring instance2 is created and bind to cpu 1, since there are already an io_sq_thread for cpu 1, will not create an io_sq_thread for cpu1. 5. now io_sq_thread in cpu1 will handle both io_uring instances' requests. What do you think about it? Thanks. Regards, Xiaoguang Wang