Using io_uring with ABT-IO

Liburing support can be enabled at compile time by adding the +liburing variant to the mochi-abt-io spack package build or by adding --enable-liburing to the configure arguments if compiling by hand.

Once ABT-IO has been compiled with liburing support, it can be enabled at run time by setting “num_urings” json configuration parameter to a value of 1 or higher. ABT-IO will associate a dedicated internal execution stream with each uring to handle submission and completion of operations. If “num_urings” is > 1, then uring operations will be issued in round-robin fashion across the rings. Any ABT-IO operations that are not supported by uring are serviced as usual by the normal ABT-IO pool.

Optional uring flags can also be specified as follows:

{"liburing_flags":
 ["IOSQE_ASYNC","IORING_SETUP_SQPOLL","IORING_SETUP_COOP_TASKRUN",
 "IORING_SETUP_SINGLE_ISSUER", "IORING_SETUP_DEFER_TASKRUN"]}

Please refer to the liburing documentation for an explanation of these flags.