Hi, Something that's come up several times over the years is how to deal with ring sizing. The SQ ring sizing is usually trivial - it just controls the batch submit size, and usually it's not that difficult to just submit if the app fails to get a free SQE. For the CQ ring, it's a different story. For networked workloads, it can be hard to appropriately size the CQ ring without knowing exactly how busy a given ring will be. This leads to applications grossly over-sizing the ring, just in case, which is wasteful. Here's a stab at supporting ring resizing. It supports resizing of both rings, SQ and CQ, as it's really no different than just doing the CQ ring itself. liburing has a 'resize-rings' branch with a bit of support code, and a test case: https://git.kernel.dk/cgit/liburing/log/?h=resize-rings and these patches can also be found here: https://git.kernel.dk/cgit/linux/log/?h=io_uring-ring-resize include/uapi/linux/io_uring.h | 3 + io_uring/io_uring.c | 84 ++++++++++-------- io_uring/io_uring.h | 6 ++ io_uring/register.c | 161 ++++++++++++++++++++++++++++++++++ 4 files changed, 216 insertions(+), 38 deletions(-) -- Jens Axboe