Is there a recommended way to use io queue pressure at the application layer?
Currently seastar does a lot of hard to work to avoid submitting IOs to the device (well, to the kernel) if it would not help with throughput, but the primary benefits seem to be (a) applying IO priorities more effectively and (b) allowing IO to be canceled for a longer period of time.
However, one would naturally also like to take advantage of the fact that some queues are still queued-not-submitted at the application layer, e.g., to extend or replace existing IOs as new requests come in that would modify them.
Is there a standard approach for that? Currently it seems like to do that we could build *another* IO queue at the application layer, to avoid submitting them to seastar until we are sure they will be promptly sent to the device, but this seems redundant and sub-optimal.